У меня есть следующий тестовый модуль:
apiVersion: v1
kind: Pod
metadata:
name: volume-debugger
spec:
volumes:
- name: secretVolume
secret:
secretName: ssh-keys-iaas
items:
- key: id_rsa
path: id_rsa
containers:
- name: nginx
image: nginx
volumeMounts:
- name: secretVolume
mountPath: "/tmp/rofl/"
readOnly: true
И у меня есть следующий секрет:
kubectl create secret generic ssh-keys-iaas --from-file=id_rsa=/some/file
Когда я прикрепляюсь к капсуле:
kubectl exec --stdin --tty volume-debugger -- /bin/bash
Я вижу, что /tmp/rofl/id_rsa
содержит правильное значение. Однако, когда я обновляю секрет:
kubectl delete secret ssh-keys-iaas
kubectl create secret generic ssh-keys-iaas --from-file=id_rsa=/some/otherfile
Моя прикрепленная оболочка не показывает никаких обновленных значений, как и мой код внутри контейнера. Похоже, что kubernetes не обновляет мой модуль автоматически.
Согласно документации, «Контейнер, использующий Secret в качестве монтирования тома subPath, не получает автоматические обновления секрета». Однако я не использую subPath
, а значит, я должен получать обновления, не так ли?
Нужно ли мне patch
секрет вместо удаления+создания? Или что происходит не так? Как сделать так, чтобы мой модуль получал обновленное значение всякий раз, когда кто-то обновляет секрет в кластере?
Как сказано в документе, секрет следует обновлять, а не воссоздавать.
Когда том содержит данные из секрета и этот секрет обновляется, Kubernetes отслеживает это и обновляет данные в томе, используя последовательный в конечном счете подход.
Примечание. Контейнер, использующий секрет в качестве Монтирование тома subPath не получает автоматические обновления секрета.
Это можно сделать через kubectl edit secret ssh-keys-iaas
или
kubectl patch secret ssh-keys-iaas --type='json' -p='[{"op" : "replace" ,"path" : "/data/KEY" ,"value" : "VALUE"}]'
Попробую так: stackoverflow.com/questions/45879498/…
Кажется, работает! После применения обновления, как указано в сообщении выше, это занимает около 30-60 секунд, но затем значение внутри контейнера обновляется! Спасибо!
Я понимаю. Существует ли способ обновить это из файла, сохранив переводы строк? Потому что мне нужно хранить последовательный ключ SSH.