Облачная платформаEvolution

Настроить перезапуск Deployment при изменении Secret с помощью Reloader


В инструкции описан пример настройки автоматического перезапуска Deployment при каждом изменении Secret. Аналогично можно настроить перезапуск и для других рабочих нагрузок, например StatefulSet или DaemonSet.

Перед началом работы

У вас должен быть создан кластер Managed Kubernetes и группа узлов.

  1. В кластер установите плагин Reloader.

  2. Проверьте, что Reloader установлен корректно:

    kubectl get pods -n reloader

    Под должен быть в статусе «Running».

Шаг 1. Создайте Secret

  1. Выполните команду:

    kubectl create secret generic cloudru-app-secret --from-literal=API_KEY="example-key"
  2. Проверьте созданный Secret:

    kubectl get secrets/cloudru-app-secret -o yaml

Шаг 2. Создайте Deployment и настройте его для отслеживания изменений Secret

Чтобы Deployment реагировал на изменения Secret, нужно добавить аннотацию reloader.stakater.com/auto: "true" в YAML-файл вашего Deployment.

  1. Создайте файл cloudru-deployment.yaml и сохраните следующий манифест:

    apiVersion: apps/v1
    kind: Deployment
    metadata:
    name: cloudru-app
    annotations:
    reloader.stakater.com/auto: "true"
    spec:
    template:
    metadata:
    labels:
    app: cloudru-app
    spec:
    containers:
    - name: app
    image: emk8s.cr.cloud.ru/nginx:latest
    envFrom:
    - secretRef:
    name: cloudru-app-secret

    Где cloudru-app-secret — название секрета, созданного на шаге 1.

  2. В терминале или PowerShell выполните команду:

    kubectl apply -f cloudru-deployment.yaml
  3. Убедитесь, что Deployment развернут и работает:

    kubectl get deploy cloudru-app
    kubectl get pods

Шаг 3. Проверьте механизм перезапуска

  1. Измените значение секрета:

    kubectl patch secret cloudru-app-secret -p '{"data":{"API_KEY":"new-api-key"}}'

    Через 1–2 минуты после изменения секрета вы увидите, что поды перезапустились автоматически.

  2. Проверьте статус подов:

    kubectl get pods

Вы должны увидеть, что контейнеры были перезапущены и теперь используют новое значение секрета.