Я пытаюсь использовать Helm charts для установки приложений в кластерах Kubernetes. Может кто-нибудь подсказать, что может быть лучшим решением для управления секретами? Было бы неплохо использовать helm secrets или Hashicorp Vault?

Vault технически великолепен, но может стать административной обузой. Вы можете получить надежную защиту от «секретов», какими бы они ни были; вы можете никогда не делиться волшебными секретами, такими как пароль вашей центральной базы данных, путем создания одноразовых паролей; если вам нужно что-то подписанное или зашифрованное, вы можете попросить Vault сделать это за вас и никогда не знать криптографический секрет самостоятельно. Большим недостатком является то, что это отдельная служба, которой нужно управлять, получение секретов из нее не совсем гладкое, и вам иногда требуется, чтобы администратор распечатал ее, если вам нужно перезапустить сервер.
Секреты Kubernetes - это на самом деле просто карты ConfigMap с другим именем. С настройками по умолчанию оператору очень легко получить значение секрета (kubectl get secret ... -o yaml, затем base64 декодирует строки), так что на самом деле они не являются этим секретом. Если у вас есть интересная настройка пространства имен, вы, как правило, не можете получить доступ к секрету в другом пространстве имен, что может означать, что вам придется много копировать секреты. Использование только собственных инструментов, таких как kubectl, для управления секретами также немного неуклюже.
Отправка учетных данных через Helm, вероятно, является наиболее плавным путем - очень легко преобразовать из значения Helm в объект Secret, чтобы отправить его в контейнер, и очень легко вставить значения откуда-то вроде системы CI - но также и наименее безопасный . Помимо возможности выгружать значения через kubectl, вы также можете использовать helm get values в выпуске Helm, чтобы узнать значения.
Итак, вопрос в том, насколько важно хранить ваши секреты в секрете и сколько усилий вы хотите приложить. Если вы хотите бесшовную интеграцию и можете ограничить доступ к вашему кластеру только авторизованным операторам и эффективно использовать RBAC, значение Helm может быть хорошим. достаточно. Если вы можете инвестировать в самое лучшее с технической точки зрения и в то же время самое сложное решение и хотите использовать некоторые из его расширенных возможностей, Vault работает хорошо. Сохранение простого секрета Kubernetes - это своего рода золотая середина, это немного безопаснее, чем использование Helm, но не так управляемо.
Нет, определенно верно. Это работает лучше, если у вас есть какая-то единственная внешняя система, которая запускает Helm и является «источником истины», поэтому, если вам действительно нужно сделать что-то вроде смены пароля, вы можете изменить его там и повторно развернуть все.
Если вы управляете секретами (т. Е. Создаете и удаляете) с помощью диаграмм управления, вам также необходимо подумать об их сроке службы и о том, как потенциально разделить их между несколькими диаграммами управления, которым нужен один и тот же секрет. Или, может быть, я неправильно понимаю концепцию управления ими с помощью диаграмм руля?