Настройка интеграции с секретами из Secret Management
С помощью инструкции вы настроите в кластере Managed Kubernetes интеграцию с секретами, которые хранятся в сервисе Secret Management.
Перед началом работы
Создайте секрет в Secret Management в формате JSON.
Пример секрета в JSON-форматеСоздайте кластер с публичным IP и группу узлов.
Назначьте на сервисный аккаунт, выбранный при создании кластера, роль scsm.user.
Шаг 1. Создайте ресурс для связи с Secret Management
Вы можете создать ресурс с типом ClusterSecretStore или SecretStore:
ClusterSecretStore позволяет оперировать секретами в любом пространстве имен кластера.
SecretStore — только в пространстве имен, в котором SecretStore создан. В этом случае для каждого пространства имен можно создать отдельный SecretStore.
Создайте файл cloudrusm-store.yaml и сохраните следующую спецификацию:
apiVersion: external-secrets.io/v1beta1kind: ClusterSecretStoremetadata:name: cloudrusm-storespec:provider:cloudrusm:auth:secretRef:accessKeyIDSecretRef:name: cloud-auth-secretnamespace: kube-systemkey: CLIENT_IDaccessKeySecretSecretRef:name: cloud-auth-secretnamespace: kube-systemkey: SECRET_IDproductInstanceID: <идентификатор_продукта>Где productInstanceID — идентификатор продукта из Secret Management.
В примере выше используется спецификация для создания ClusterSecretStore. Если вы хотите использовать SecretStore, предварительно создайте Secret для сервисного аккаунта, который выбрали при создании кластера. Укажите в Secret и SecretStore одинаковое пространство имен.
Примеры спецификаций:
SecretSecretStoreВ терминале или PowerShell выполните команду:
kubectl create -f cloudrusm-store.yamlРезультат:
clustersecretstore/cloudrusm-store createdПроверьте статус:
kubectl -n kube-system get clustersecretstoreРезультат:
NAME AGE STATUS CAPABILITIES READYcloudrusm-store 7s Valid ReadOnly True
Шаг 2. Создайте ExternalSecret для извлечения секрета из Secret Management
Создайте файл cloudrusm-external-secret.yaml и сохраните следующую спецификацию:
apiVersion: external-secrets.io/v1beta1kind: ExternalSecretmetadata:name: cloudrusm-external-secretnamespace: <пространство_имен>spec:refreshInterval: 10ssecretStoreRef:name: cloudrusm-storekind: <тип_ресурса>target:name: my-secretcreationPolicy: OwnerdataFrom:- extract:key: <key-UUID>Где:
metadata.namespace — пространство имен, в которое необходимо разместить секрет из Secret Management.
spec.target.name — произвольное название нового секрета. External Secret Operator создаст ExternalSecret и поместит в него параметры секрета из Secret Management.
spec.secretStoreRef.kind — ClusterSecretStore или SecretStore в зависимости от созданного на первом шаге ресурса.
spec.dataFrom.extract.key — UUID секрета из Secret Management.
В терминале или PowerShell выполните команду:
kubectl create -f cloudrusm-external-secret.yamlРезультат:
externalsecret/cloudrusm-external-secret createdПроверьте статус:
kubectl get externalsecrets.external-secrets.ioРезультат:
NAME STORE REFRESH INTERVAL STATUS READYcloudrusm-external-secret cloudrusm-store 10s SecretSynced TrueПроверьте, что секрет присутствует в кластере:
kubectl get secrets my-secretsРезультат:
NAME TYPE DATA AGEmy-secrets Opaque 2 3m9s
Шаг 3. Удалите ресурсы
Если вы закончили работать с примером: