Я планирую создать специальное развертывание «развертывателя» на k8s (по одному «развертывателю» на кластер).
Его роль заключается в том, чтобы вытащить спецификации из центрального места, создать манифесты K8 и применять их
Конечным результатом должно быть несколько развертываний, каждое в своем собственном пространстве имен со службой и входом, а также секрет, содержащий учетные данные БД.
Я не хочу напрямую передавать и управлять деталями БД. Вместо этого я думал о создании CustomResourceDefinition 'dbservice', который будет содержать имя службы БД среди остальных. Затем настройте оператор k8s, который будет:
- Возьмите (монитор) такой ресурс 'dbservice'.
- Уточните у службы хостинга БД, существует ли такая услуга уже. Если нет, он создаст его с некоторыми спецификациями из пользовательского ресурса.
- Получите имя хоста, пароль, пользователя, имя базы данных и порт и сохраните их в секрете, который будет использоваться при развертывании (envvar).
Таким образом:
- Каждое развертывание будет ждать своего секрета БД и не запустится до тех пор, пока секрет не будет создан, что означает, что БД готова.
- Мне бы не пришлось управлять службами БД вручную.
- Мне бы не пришлось передавать пароли по проводам.
Что должно произойти, чтобы это сработало (согласно моему плану):
- Оператору понадобятся разрешения для связи с провайдером хостинга БД (возможно, он получит доступ к другому хранимому секрету k8s с помощью ключа API).
- Оператору понадобятся разрешения для создания секретов во всех пространствах имен.
Поскольку я довольно новичок в k8s и devops в целом, я хотел убедиться, что этот подход вменяемый, а не анти-паттерн.