Множество секретов на кубернетес
Лучшая практика для управления 3 или 4 секретами для одного развертывания Kubernetes.
У нас есть развертывание, в котором некоторые секреты повторяются во всех пространствах имен, а другие - в зависимости от среды.
Мы пытаемся выбрать между одним секретным файлом и изменить только те, которые должны быть, ИЛИ запустить 2+ секрета, где один - foo-dev-secrets, а другой - foo-universal-секреты.
Мы не можем найти примеров того, что делать в этих случаях, в частности, как управлять этими секретами, мы знаем, что вы можете иметь только "один секрет на том", но, честно говоря, мы не уверены, что это значит.
Не стесняйтесь отвечать, как будто мы тупые дети. ^_^
1 ответ
запуск 2+ секретов, где один является foo-dev-секретами, а другой - foo-universal-секретами
На ваше усмотрение, хорошо продуманная политика RBAC будет гарантировать, что только учетные записи с правильными разрешениями смогут читать секреты, если они будут разложены, что (конечно) будет намного сложнее, если все они будут объединены в одну ведро "все секреты"
мы знаем, что вы можете иметь только "один секрет на том", но, честно говоря, мы не уверены, что это значит.
Тогда вы в хорошей компании, потому что я тоже не знаю, что это значит:-D Если вы имеете в виду, что есть глобальные секреты, но секреты разработчиков называются такими же, но более конкретными, я думаю docker -v
будет терпеть это:
containers:
- name: foo
volumeMounts:
- name: global-secrets
mountPoint: /run/secrets/global
readOnly: true
- name: foo-secret-override
mountPoint: /run/secrets/global/no-really
readOnly: true
... с недостатком в том, что ваш volumes:
а также volumeMounts:
станет довольно болтливым
Тем не менее, я бы поспорил, что более общее и менее разумное решение состоит в том, чтобы смонтировать их как пиров, а затем сделать приложение эквивалентным find /run/secrets/ -not -type d
чтобы хлебать их всех
volumeMounts:
- name: global-secrets
mountPoint: /run/secrets/0-global
readOnly: true
- name: foo-secrets
mountPoint: /run/secrets/1-foo
readOnly: true
Или, если возможно, приложение считывает путь из переменной среды или ConfigMap
Это означает, что их можно проецировать как одноранговые (по-прежнему), но указать приложению, какое из двух значений следует использовать.
Конечно, дьявол кроется в деталях, так что не стесняйтесь, если вы можете поделиться более подробной информацией о препятствиях, с которыми вы сталкиваетесь