Как обновить секреты работника, не убивая развертывание?
Я хочу узнать, как обновлять секреты в рабочих модулях, не убивая и не воссоздавая развертывание.
В настоящее время стручки хранят секреты, которые можно найти в:
env:
- name: SECRET_ACCESS_KEY
valueFrom:
secretKeyRef:
key: secret_access_key
name: secrets
но это происходит только при запуске.
Поэтому, если есть необходимость изменить секрет, я должен:
- Изменить секрет в
secrets.yaml
kubectl apply -f secrets.yaml
kubectl delete -f worker-deployment.yaml
kubectl apply -f worker-deployment.yaml
Мне действительно не нравятся шаги 3 и 4, поскольку они заканчивают работу в процессе.
Каков лучший рабочий процесс для обновления секретов env var?
3 ответа
Не существует способа выполнить "горячую перезагрузку" для переменных среды модуля.
Хотя вам не нужно удалять и заново создавать развертывание, чтобы применить новое секретное значение. Вам нужно только воссоздать базовые стручки. Некоторые варианты:
kubectl delete pods
воссоздать их- Редактирование некоторого тривиального значения развертывания для запуска скользящего обновления (например, изменение
terminationGracePeriodSeconds
от30
в31
).
Как уже упоминалось, то, что вы хотите сделать, невозможно. Однако есть альтернатива, предложенная 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
Внутри стручка.
Изменения в карте конфигурации отражаются изменениями в файлах тома, и эти изменения, в свою очередь, могут отслеживаться вашим приложением с использованием соответствующих функций на вашем языке.
Вы можете обновить секреты с помощью такого инструмента, как WebUI (Dashboard) K8S или fabric8, если у вас есть соответствующие разрешения.
Проверьте Kubernetes изменить секрет, используя cli для других вариантов.