Использование External Secrets Operator
Используйте аддон External Secrets Operator, чтобы настроить синхронизацию с секретами Kubernetes, которые хранятся в менеджере секретов VK Cloud.
- Создайте кластер актуальной версии, если это еще не сделано.
- Установите и настройте
kubectl, если это еще не сделано. - Подключитесь к кластеру при помощи
kubectl. - Установите аддон External Secrets Operator, если это еще не сделано.
- Включите доступ по API, если это еще не сделано.
Создайте секрет с идентификатором external-secret в менеджере секретов VK Cloud и добавьте в него произвольные ключи.
-
Создайте пространство имен
external-secrets-operator, если это еще не сделано:kubectl create namespace external-secrets-operator -
Создайте манифест
password.yaml, который будет хранить пароль для доступа к менеджеру секретов VK Cloud:apiVersion: v1kind: Secretmetadata:name: passwordnamespace: external-secrets-operatortype: Opaquedata:password: <ПАРОЛЬ_ОТ_ЛК>Здесь
<ПАРОЛЬ_ОТ_ЛК>— пароль от вашего личного кабинета VK Cloud в кодировке base64. -
Примените созданный манифест в кластере:
kubectl apply -f password.yaml
-
Перейдите в личный кабинет VK Cloud.
-
Нажмите на имя пользователя в шапке страницы и выберите Настройки проекта.
-
Перейдите на вкладку Доступ по API и скопируйте следующие значения:
- Project ID;
- User Domain Name;
- Username.
-
Создайте манифест
secretstore.yaml— объект типаSecretStore, который описывает, как подключиться к менеджеру секретов VK Cloud:apiVersion: external-secrets.io/v1kind: SecretStoremetadata:name: secret-storenamespace: external-secrets-operatorspec:provider:vk:projectID: <PROJECT_ID>url: <AUTH_URL>auth:domain: <USER_DOMAIN_NAME>username: <USERNAME>password:key: passwordname: passwordЗдесь:
<PROJECT_ID>,<USER_DOMAIN_NAME>и<USERNAME>— значения, которые вы скопировали из настроек проекта.<AUTH_URL>— адрес в зависимости от региона:https://msk.cloud.vk.comдля региона Москва;https://kz.cloud.vk.comдля региона Казахстан.
-
Примените созданный манифест в кластере:
kubectl apply -f secretstore.yaml
-
Создайте манифест
externalsecret.yaml— объект типаExternalSecret, который описывает, из какогоSecretStoreзагружать секрет и как его обновлять:apiVersion: external-secrets.io/v1kind: ExternalSecretmetadata:name: external-secretnamespace: external-secrets-operatorspec:refreshInterval: 5msecretStoreRef:name: secret-storekind: SecretStoretarget:name: external-secretcreationPolicy: Ownerdata:- secretKey: <ИМЯ_КЛЮЧА_В_СЕКРЕТЕ>remoteRef:key: <ID_СЕКРЕТА>property: <КЛЮЧ_СЕКРЕТА>Здесь:
<ИМЯ_КЛЮЧА_В_СЕКРЕТЕ>— имя ключа в создаваемом секрете Kubernetes. Пример:password.<ID_СЕКРЕТА>— идентификатор секрета, который вы создали ранее в менеджере секретов VK Cloud.<КЛЮЧ_СЕКРЕТА>— ключ в секрете в менеджере секретов VK Cloud, значение которого необходимо синхронизировать с секретом Kubernetes.
Например, в менеджере секретов VK Cloud с идентификатором
external-secretхранятся такие пары значений:key1: value1,key2: value2,key3: value3. Если вы хотите, чтобы в секрете Kubernetes обновлялось значениеvalue2, в полеpropertyукажитеkey2:key: external-secretproperty: key2 -
Примените созданный манифест в кластере:
kubectl apply -f externalsecret.yaml
В Kubernetes будет создан новый объект типа Secret с именем external-secret. Аддон будет каждые пять минут проверять значение указанного поля в секрете в менеджере секретов VK Cloud. Если значение изменится, аддон автоматически обновит его в секрете Kubernetes.
-
Создайте манифест
externalsecretall.yaml. С его помощью вы сможете синхронизовать все пары значений из секрета, который вы создали в менеджере секретов VK Cloud.apiVersion: external-secrets.io/v1kind: ExternalSecretmetadata:name: external-secret-allnamespace: external-secrets-operatorspec:refreshInterval: 5msecretStoreRef:name: secret-storekind: SecretStoretarget:name: external-secret-allcreationPolicy: OwnerdataFrom:- extract:key: <ID_СЕКРЕТА> -
Примените созданный манифест в кластере:
kubectl apply -f externalsecretall.yaml
В Kubernetes будет создан новый объект типа Secret с именем external-secret-all. Аддон будет каждые пять минут проверять значение всех ключей секрета в менеджере секретов VK Cloud. Если их значения изменятся, аддон автоматически обновит их в секрете Kubernetes.
-
Убедитесь, что External Secrets Operator синхронизировал секреты, выполнив команду:
kubectl -n external-secrets-operator get secretВ выводе команды должны быть ранее созданные секреты с именами
external-secretиexternal-secret-all:NAME TYPE DATA AGEexternal-secret Opaque 1 ...external-secret-all Opaque 2 ...external-secrets-webhook Opaque 4 ...password Opaque 1 ... -
Просмотрите содержимое секретов:
kubectl -n external-secrets-operator get secret external-secret -o yamlkubectl -n external-secrets-operator get secret external-secret-all -o yaml
Работающий кластер тарифицируется и потребляет вычислительные ресурсы. Если ресурсы Kubernetes, созданные для проверки работы аддона External Secrets Operator, вам больше не нужны, удалите их:
-
Удалите пространство имен
external-secrets-operatorи связанные с ним ресурсы:kubectl delete namespace external-secrets-operator -
Остановите созданный кластер, чтобы воспользоваться им позже, или удалите его навсегда.