Как автоматически обновлять секреты, смонтированные как тома?

У меня есть следующий тестовый модуль:

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 секрет вместо удаления+создания? Или что происходит не так? Как сделать так, чтобы мой модуль получал обновленное значение всякий раз, когда кто-то обновляет секрет в кластере?

Развертывание модели машинного обучения с помощью Flask - Angular в Kubernetes
Развертывание модели машинного обучения с помощью Flask - Angular в Kubernetes
Kubernetes - это портативная, расширяемая платформа с открытым исходным кодом для управления контейнерными рабочими нагрузками и сервисами, которая...
0
0
50
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Как сказано в документе, секрет следует обновлять, а не воссоздавать.

Когда том содержит данные из секрета и этот секрет обновляется, Kubernetes отслеживает это и обновляет данные в томе, используя последовательный в конечном счете подход.

Примечание. Контейнер, использующий секрет в качестве Монтирование тома subPath не получает автоматические обновления секрета.

Это можно сделать через kubectl edit secret ssh-keys-iaas или

kubectl patch secret ssh-keys-iaas --type='json' -p='[{"op" : "replace" ,"path" : "/data/KEY" ,"value" : "VALUE"}]'

Я понимаю. Существует ли способ обновить это из файла, сохранив переводы строк? Потому что мне нужно хранить последовательный ключ SSH.

user826955 16.07.2024 14:01

Попробую так: stackoverflow.com/questions/45879498/…

user826955 16.07.2024 14:07

Кажется, работает! После применения обновления, как указано в сообщении выше, это занимает около 30-60 секунд, но затем значение внутри контейнера обновляется! Спасибо!

user826955 16.07.2024 14:11

Другие вопросы по теме