Skip to content

Полезные команды

Управление релизами

# Список всех установленных релизов
helm list -A

# Список релизов в конкретном namespace
helm list -n $RELEASE_NAMESPACE

# Получить детальную информацию о релизе
helm get all $RELEASE_NAME -n $RELEASE_NAMESPACE

# Получить значения параметров текущего релиза
helm get values $RELEASE_NAME -n $RELEASE_NAMESPACE

# Получить все значения (включая значения по умолчанию)
helm get values $RELEASE_NAME -n $RELEASE_NAMESPACE --all

# Получить манифесты релиза
helm get manifest $RELEASE_NAME -n $RELEASE_NAMESPACE

Работа с Kubernetes ресурсами

# Список всех подов
kubectl get pods -n $RELEASE_NAMESPACE

# Детальная информация о поде
kubectl describe pod <pod-name> -n $RELEASE_NAMESPACE

# Логи пода
kubectl logs <pod-name> -n $RELEASE_NAMESPACE

# Логи пода в реальном времени
kubectl logs -f <pod-name> -n $RELEASE_NAMESPACE

# Логи предыдущего контейнера (если под перезапускался)
kubectl logs <pod-name> -n $RELEASE_NAMESPACE --previous

# Выполнить команду внутри пода
kubectl exec -it <pod-name> -n $RELEASE_NAMESPACE -- /bin/bash

# Список сервисов
kubectl get services -n $RELEASE_NAMESPACE

# Список PVC
kubectl get pvc -n $RELEASE_NAMESPACE

# Информация об использовании ресурсов подами
kubectl top pods -n $RELEASE_NAMESPACE

# События в namespace
kubectl get events -n $RELEASE_NAMESPACE --sort-by='.lastTimestamp'

Резервное копирование и восстановление

⚠️ Критически важно: Перед обновлением чарта или выполнением отката необходимо настроить резервное копирование базы данных PostgreSQL. Команда helm rollback откатывает только кодовую базу, но не базу данных. Без резервного копирования PostgreSQL откат может привести к несовместимости версий или потере данных (см. раздел Откат версии чарта).

Резервное копирование конфигурации Helm

Перед обновлением чарта рекомендуется экспортировать текущие values. Это позволит:

  • Использовать их при обновлении для корректного применения новых значений по умолчанию
  • Иметь резервную копию конфигурации на случай необходимости отката
# Экспорт текущих значений релиза для бэкапа (рекомендуемый формат YAML)
helm get values $RELEASE_NAME -n $RELEASE_NAMESPACE -o yaml > backup-values.yaml

# Альтернативный способ (без форматирования)
helm get values $RELEASE_NAME -n $RELEASE_NAMESPACE 2>&1 | cat > backup-values.txt

# Экспорт всех манифестов
helm get manifest $RELEASE_NAME -n $RELEASE_NAMESPACE 2>&1 | cat > backup-manifest.yaml

Резервное копирование базы данных PostgreSQL

Для встроенной БД (vPostgres):

Резервное копирование должно быть настроено на вашей стороне. Вы можете использовать снапшоты PVC (если поддерживается вашим StorageClass) или создавать дампы базы данных:

# Создание снапшота PVC (зависит от StorageClass и провайдера)
# Пример для snapshot:
kubectl create -f - <<EOF
apiVersion: snapshot.storage.k8s.io/v1
kind: VolumeSnapshot
metadata:
  name: ${RELEASE_NAME}-postgres-backup-$(date +%Y%m%d-%H%M%S)
  namespace: $RELEASE_NAMESPACE
spec:
  volumeSnapshotClassName: <your-snapshot-class>
  source:
    persistentVolumeClaimName: ${RELEASE_NAME}-v-postgres-pvc
EOF

Для внешней БД:

Резервное копирование должно быть настроено на вашей стороне в соответствии с вашей инфраструктурой и политиками. Убедитесь, что бекапы создаются регулярно и соответствуют версиям приложения, чтобы иметь возможность восстановить базу данных в случае отката.

Рекомендации:

  • Создавайте резервные копии перед каждым обновлением
  • Храните резервные копии с привязкой к версии приложения
  • Регулярно тестируйте восстановление из резервных копий
  • Настройте автоматическое резервное копирование для production окружений

Отладка и диагностика

# Проверка статуса всех компонентов
kubectl get all -n $RELEASE_NAMESPACE

# Проверка конфигурации перед установкой/обновлением
# Для этого нужно скачать чарт локально
helm pull oci://registry.hexway.io/charts/vampy --version $RELEASE_VERSION --untar
helm template $RELEASE_NAME ./vampy -f my-values.yaml > test-output.yaml

# Валидация манифестов (требует локального чарта)
helm lint ./vampy

# Проверка прав доступа
kubectl auth can-i create pods -n $RELEASE_NAMESPACE

# Описание всех ресурсов для диагностики
kubectl describe all -n $RELEASE_NAMESPACE

# Проверка сетевой связности (из пода)
kubectl exec -it <pod-name> -n $RELEASE_NAMESPACE -- curl http://${RELEASE_NAME}-v-engine:5020/health

Масштабирование

# Масштабирование Deployment
kubectl scale deployment ${RELEASE_NAME}-v-background -n $RELEASE_NAMESPACE --replicas=5