Как обновить секреты работника, не убивая развертывание? - PullRequest
1 голос
/ 12 апреля 2019

Я хочу узнать, как обновлять секреты в рабочих модулях, не уничтожая и не воссоздавая развертывание.

В настоящее время модули извлекают секреты в виде переменных env с:

        env:
        - name: SECRET_ACCESS_KEY
          valueFrom:
            secretKeyRef:
              key: secret_access_key
              name: secrets

, но это толькопроисходит при запуске.

Так что, если есть необходимость изменить секрет, я должен:

  1. Изменить секрет в secrets.yaml
  2. kubectl apply -f secrets.yaml
  3. kubectl delete -f worker-deployment.yaml
  4. kubectl apply -f worker-deployment.yaml

Мне действительно не нравятся шаги 3 и 4, поскольку они завершают выполняемые задания.

Каков лучший рабочий процесс для обновления секретов env var?

Ответы [ 3 ]

2 голосов
/ 12 апреля 2019

Нет способа выполнить «горячую перезагрузку» для переменных среды модуля.

Хотя вам не нужно удалять и заново создавать развертывание, чтобы применить новое секретное значение. Вам нужно только воссоздать базовые стручки. Некоторые варианты:

0 голосов
/ 13 апреля 2019

Как уже упоминалось, то, что вы хотите сделать, невозможно.Однако есть альтернатива, предложенная Kubernetes: монтирование ConfigMaps как тома.Например,

apiVersion: v1
kind: Pod
metadata:
  name: configmap-pod
spec:
  containers:
    - name: test
      image: busybox
      volumeMounts:
        - name: config-vol
          mountPath: /etc/config
  volumes:
    - name: config-vol
      configMap:
        name: log-config
        items:
          - key: log_level
            path: log_level

В этом случае log-config ConfigMap будет смонтирован как Volume, и вы сможете получить доступ к содержимому из его записи log_level в виде файла «/etc/config/log_level”Внутри модуля.

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

0 голосов
/ 12 апреля 2019

Вы можете обновлять секреты с помощью такого инструмента, как WebUI (Dashboard) K8S или fabric8, если у вас есть соответствующие разрешения.

Извлечение Kubernetes изменить секрет, используя Cli для других вариантов.

...