🚀 Быстрый старт

Краткое руководство по развертыванию системы виртуализации Virt.Byte73.

Подготовка

Логин и пароль для доступа к Help репозитарию:

Логин - expert
Пароль - ExpertP@ssw0rd
# Получить логин и пароль от Helm репозитория
# Добавить Helm репозиторий, подставив полученные логин и пароль
helm repo add virtbyte-helm https://nexus.inside.virtbyte.ru/repository/virtbyte-helm-repo/ \
  --username helm-user --password helm-password

# Создать namespace
kubectl create namespace portal-dev

# Получить логин и пароль от Nexus репозитория
# Создать секрет для пула образов из nexus, подставив полученные логин и пароль
kubectl create secret docker-registry nexus-virtbyte \
  --docker-server=nexus.inside.virtbyte.ru \
  --docker-username=your-username \
  --docker-password=your-password \
  -n portal-dev

# Установить dev окружение
helm install selfservice-portal-dev virtbyte-helm/selfservice-portal-dev \
  --version 0.1.0 --namespace portal-dev

# Проверить статус
kubectl get pods -n portal-dev

📋 Предварительные требования

  • ✅ Helm 3.x установлен
  • ✅ kubectl настроен для доступа к кластеру
  • ✅ VPN подключение для доступа к Nexus

🎯 Быстрые команды

Установка

# Dev окружение (с локальным Keycloak)
helm install selfservice-portal-dev virtbyte-helm/selfservice-portal-dev \
  --version 0.1.0 \
  --namespace portal-dev

# Main окружение (с внешним Keycloak)
helm install selfservice-portal virtbyte-helm/selfservice-portal \
  --version 0.1.0 \
  --namespace portal-main

Проверка

# Статус релиза
helm status selfservice-portal-dev -n portal-dev

# Поды
kubectl get pods -n portal-dev -o wide

# Сервисы и IP адреса
kubectl get svc -n portal-dev | grep LoadBalancer

# Логи
kubectl logs -f deployment/virt-front-admin -n portal-dev

Обновление

# Обновить до новой версии
helm upgrade selfservice-portal-dev virtbyte-helm/selfservice-portal-dev \
  --version 0.2.0 \
  --namespace portal-dev

# Откатить к предыдущей версии
helm rollback selfservice-portal-dev 1 -n portal-dev

Удаление

# Удалить релиз
helm uninstall selfservice-portal-dev -n portal-dev

# Очистить namespace (если нужно)
kubectl delete namespace portal-dev

🔧 Кастомизация

Простые изменения

# Изменить LoadBalancer IP
helm upgrade selfservice-portal-dev virtbyte-helm/selfservice-portal-dev \
  --set frontend.service.loadBalancerIP="10.4.1.120" \
  --namespace portal-dev

# Изменить количество реплик
helm upgrade selfservice-portal-dev virtbyte-helm/selfservice-portal-dev \
  --set frontend.replicaCount=2 \
  --set restAPI.replicaCount=2 \
  --namespace portal-dev

# Отключить компонент
helm upgrade selfservice-portal-dev virtbyte-helm/selfservice-portal-dev \
  --set rabbitmq.enabled=false \
  --namespace portal-dev

Файл с кастомными значениями

# Создать custom-values.yaml
cat > custom-values.yaml << EOF
frontend:
  replicaCount: 2
  service:
    loadBalancerIP: "10.4.1.120"
  env:
    REACT_APP_DEBUG: "true"

restAPI:
  replicaCount: 2
  env:
    LOGGING_LEVEL_ROOT: "DEBUG"
EOF

# Установить с кастомными значениями
helm install selfservice-portal-dev virtbyte-helm/selfservice-portal-dev \
  --values custom-values.yaml \
  --namespace portal-dev

🌐 Доступ к сервисам

Dev окружение

Сервис URL IP Порт
Frontend http://—-:3000 10.4.1.115 3000
REST API http://—-:8088 10.4.1.115 8088
Keycloak https://—- - 443

Main окружение

Сервис URL IP Порт
Frontend http://—-:3000 10.120.0.26 3000
REST API http://—-:8088 10.120.0.26 8088
Keycloak https:/—– External 443

Port-forward для локального доступа

# Frontend
kubectl port-forward svc/virt-front-admin-lb 3000:3000 -n portal-dev

# REST API
kubectl port-forward svc/virt-rest-tcp 8088:8088 -n portal-dev

# PostgreSQL
kubectl port-forward svc/postgres-rest-svc 5432:5432 -n portal-dev

# RabbitMQ Management
kubectl port-forward svc/rabbitmq-svc 15672:15672 -n portal-dev

🐛 Troubleshooting

Частые проблемы

Поды не запускаются

# Проверить события
kubectl get events -n portal-dev --sort-by='.lastTimestamp'

# Проверить описание пода
kubectl describe pod <pod-name> -n portal-dev

# Проверить логи
kubectl logs <pod-name> -n portal-dev

ImagePullBackOff

# Проверить секрет для registry
kubectl get secret nexus -n portal-dev

# Создать секрет если отсутствует
kubectl create secret docker-registry nexus-virtbyte \
  --docker-server=nexus.inside.virtbyte.ru \
  --docker-username=your-username \
  --docker-password=your-password \
  -n portal-dev

LoadBalancer Pending

# Проверить аннотации kube-vip
kubectl describe svc virt-front-admin-lb -n portal-dev

# Проверить доступность IP
ping 10.4.1.115

CRD конфликты

# Добавить метки Helm к существующему CRD
kubectl label crd keycloaks.k8s.keycloak.org app.kubernetes.io/managed-by=Helm
kubectl annotate crd keycloaks.k8s.keycloak.org meta.helm.sh/release-name=selfservice-portal-dev
kubectl annotate crd keycloaks.k8s.keycloak.org meta.helm.sh/release-namespace=portal-dev

Полная переустановка

# Удалить все
helm uninstall selfservice-portal-dev -n harvester-system
kubectl delete namespace portal-dev

# Переустановить
helm install selfservice-portal-dev virtbyte-helm/selfservice-portal-dev \
  --version 0.1.0 \
  --namespace portal-dev

📊 Мониторинг

Быстрая проверка здоровья

# Все поды должны быть Running
kubectl get pods -n portal-dev

# Все сервисы должны иметь EXTERNAL-IP
kubectl get svc -n portal-dev

# Проверить ресурсы
kubectl top pods -n portal-dev

Логи в реальном времени

# Frontend
kubectl logs -f deployment/virt-front-admin -n portal-dev

# REST API
kubectl logs -f deployment/virt-rest -n portal-dev

# Keycloak
kubectl logs -f deployment/keycloak-operator -n portal-dev

# PostgreSQL
kubectl logs -f statefulset/postgres-rest -n portal-dev

🔄 Разработка

Локальная сборка чарта

# Сборка dev чарта
helm package helm/dev/selfservice-portal

# Установка из локального файла
helm install selfservice-portal-dev ./selfservice-portal-dev-0.1.0.tgz \
  --namespace portal-dev

Тестирование изменений

# Dry-run для проверки манифестов
helm template selfservice-portal-dev helm/dev/selfservice-portal \
  --values helm/dev/selfservice-portal/values.yaml \
  --debug

# Проверка различий
helm diff upgrade selfservice-portal-dev helm/dev/selfservice-portal \
  --values custom-values.yaml

Обновление образов

# Обновить образ frontend
helm upgrade selfservice-portal-dev virtbyte-helm/selfservice-portal-dev \
  --set frontend.image.tag="v1.2.0" \
  --namespace portal-dev

# Принудительное обновление подов
kubectl rollout restart deployment/virt-front-admin -n portal-dev

📞 Помощь

  • 📖 Полная документация: helm/README.md
  • 🔧 Примеры конфигурации: helm/examples/
  • 🐛 Проблемы: Создайте issue в GitLab
  • 💬 Вопросы: Slack канал #devops

📝 Полезные ссылки