Kubernetes: использование оператора CustomResourceDefinition + для создания секретов доступа к БД - PullRequest
0 голосов
/ 16 апреля 2019

Я планирую создать специальное развертывание «развертывателя» на k8s (по одному «развертывателю» на кластер). Его роль заключается в том, чтобы вытащить спецификации из центрального места, создать манифесты K8 и применять их Конечным результатом должно быть несколько развертываний, каждое в своем собственном пространстве имен со службой и входом, а также секрет, содержащий учетные данные БД.

Я не хочу напрямую передавать и управлять деталями БД. Вместо этого я думал о создании CustomResourceDefinition 'dbservice', который будет содержать имя службы БД среди остальных. Затем настройте оператор k8s, который будет:

  1. Возьмите (монитор) такой ресурс 'dbservice'.
  2. Уточните у службы хостинга БД, существует ли такая услуга уже. Если нет, он создаст его с некоторыми спецификациями из пользовательского ресурса.
  3. Получите имя хоста, пароль, пользователя, имя базы данных и порт и сохраните их в секрете, который будет использоваться при развертывании (envvar).

Таким образом:

  1. Каждое развертывание будет ждать своего секрета БД и не запустится до тех пор, пока секрет не будет создан, что означает, что БД готова.
  2. Мне бы не пришлось управлять службами БД вручную.
  3. Мне бы не пришлось передавать пароли по проводам.

Что должно произойти, чтобы это сработало (согласно моему плану):

  1. Оператору понадобятся разрешения для связи с провайдером хостинга БД (возможно, он получит доступ к другому хранимому секрету k8s с помощью ключа API).
  2. Оператору понадобятся разрешения для создания секретов во всех пространствах имен.

Поскольку я довольно новичок в k8s и devops в целом, я хотел убедиться, что этот подход вменяемый, а не анти-паттерн.

Ответы [ 2 ]

3 голосов
/ 16 апреля 2019

Это абсолютно разумно, и в некотором роде оно уже реализовано https://github.com/mumoshu/aws-secret-operator, но в качестве бэкэнда используется секретный менеджер AWS вместо БД

UPD: еще одно похожее решение появилось только сегодня: https://godaddy.github.io/2019/04/16/kubernetes-external-secrets/

1 голос
/ 16 апреля 2019

Hashicorp Vault может сделать нечто подобное для некоторых поставщиков БД - ознакомьтесь с документацией здесь . Также существует концепция сервисного брокера, который может создавать облачные ресурсы для вас - см., Например, Azure Service Broker . В целом, это звучит довольно круто, поэтому, если оба решения не работают для вас - продолжайте и создайте это!

...