Ищите секреты из диспетчера секретов gcloud напрямую как secretGenerator с помощью kustomize
Я настраиваю свой Kubernetes
кластер с использованием kubectl -k
(настроить). Как и любой другой подобный механизм, во время развертывания я полагаюсь на некоторые секреты. Я хочу пойти по путиsecretGenerator
особенность kustomize
чтобы получить мои секреты из файлов или переменных среды.
Однако управление указанными файлами или переменными среды безопасным и переносимым образом оказалось проблемой. Тем более, что у меня есть 3 отдельных пространства имен для тестирования, стадии и производства, каждое из которых требует разного набора секретов.
Поэтому я подумал, что у меня должен быть способ управлять секретами официальным способом моего облачного провайдера (облачная платформа Google - секретный менеджер).
Так как бы secretGenerator
как выглядит доступ к секретам, хранящимся в секретном менеджере?
Мое наивное предположение будет примерно таким:
secretGenerator:
- name: juicy-environment-config
google-secret-resource-id: projects/133713371337/secrets/juicy-test-secret/versions/1
type: some-google-specific-type
- Это вообще возможно?
- Как бы выглядел пример?
- Где это задокументировано?
- Если это невозможно, каковы мои альтернативы?
1 ответ
Я не знаю плагина для этого. Система плагинов в Kustomize несколько новая (добавлена около 6 месяцев назад), так что пока нет тонны в дикой природе, а Secrets Manager всего несколько недель назад. Вы можете найти документы по адресу https://github.com/kubernetes-sigs/kustomize/tree/master/docs/plugins, чтобы написать их. Это связано с несколькими плагинами Go для управления секретами, так что вы, вероятно, можете взять один из них и переработать его в GCP API.
Для этого есть плагин Go (я помогал его написать), но плагины не поддерживались до более поздних версий Kustomize, поэтому вам нужно установить Kustomize напрямую и запустить его как
kustomize build <path> | kubectl apply -f -
скорее, чем
kubectl -k
. В любом случае, это хорошая идея, IMO, поскольку в более новых версиях Kustomize есть много других полезных функций, чем та, которая встроена в kubectl.
Как видно из примеров, после того, как вы установили плагин (или вы можете запустить его в Docker, см. Readme), вы можете определить файлы, подобные следующим, и передать их в систему контроля версий:
my-secret.yaml
apiVersion: crd.forgecloud.com/v1
kind: EncryptedSecret
metadata:
name: my-secrets
namespace: default
source: GCP
gcpProjectID: my-gcp-project-id
keys:
- creds.json
- ca.crt
В вашем
kustomization.yaml
вы бы добавили
generators:
- my-secret.yaml
и когда ты бежишь
kustomize build
он автоматически получит ваши секретные значения из Google Secret Manager и выведет Kubernetes
secret
объекты.