nav-img
Evolution

Настройка интеграции с секретами из Secret Management

С помощью инструкции вы настроите в кластере Managed Kubernetes интеграцию с секретами, которые хранятся в сервисе Secret Management.

Перед началом работы

  1. Создайте секрет в Secret Management в формате JSON.

  2. Создайте кластер с публичным IP и группу узлов.

  3. Назначьте на сервисный аккаунт, выбранный при создании кластера, роль scsm.user.

  4. Установите плагин External Secrets Operator.

  5. Подключитесь к кластеру Managed Kubernetes.

Шаг 1. Создайте ресурс для связи с Secret Management

Вы можете создать ресурс с типом ClusterSecretStore или SecretStore:

  • ClusterSecretStore позволяет оперировать секретами в любом пространстве имен кластера.

  • SecretStore — только в пространстве имен, в котором SecretStore создан. В этом случае для каждого пространства имен можно создать отдельный SecretStore.

  1. Создайте файл cloudrusm-store.yaml и сохраните следующую спецификацию:

    apiVersion: external-secrets.io/v1beta1
    kind: ClusterSecretStore
    metadata:
    name: cloudrusm-store
    spec:
    provider:
    cloudrusm:
    auth:
    secretRef:
    accessKeyIDSecretRef:
    name: cloud-auth-secret
    namespace: kube-system
    key: CLIENT_ID
    accessKeySecretSecretRef:
    name: cloud-auth-secret
    namespace: kube-system
    key: SECRET_ID
    productInstanceID: <идентификатор_продукта>

    Где productInstanceIDидентификатор продукта из Secret Management.

    В примере выше используется спецификация для создания ClusterSecretStore. Если вы хотите использовать SecretStore, предварительно создайте Secret для сервисного аккаунта, который выбрали при создании кластера. Укажите в Secret и SecretStore одинаковое пространство имен.

    Примеры спецификаций:

  2. В терминале или PowerShell выполните команду:

    kubectl create -f cloudrusm-store.yaml

    Результат:

    clustersecretstore/cloudrusm-store created
  3. Проверьте статус:

    kubectl -n kube-system get clustersecretstore

    Результат:

    NAME AGE STATUS CAPABILITIES READY
    cloudrusm-store 7s Valid ReadOnly True

Шаг 2. Создайте ExternalSecret для извлечения секрета из Secret Management

  1. Создайте файл cloudrusm-external-secret.yaml и сохраните следующую спецификацию:

    apiVersion: external-secrets.io/v1beta1
    kind: ExternalSecret
    metadata:
    name: cloudrusm-external-secret
    namespace: <пространство_имен>
    spec:
    refreshInterval: 10s
    secretStoreRef:
    name: cloudrusm-store
    kind: <тип_ресурса>
    target:
    name: my-secret
    creationPolicy: Owner
    dataFrom:
    - 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.keyUUID секрета из Secret Management.

  2. В терминале или PowerShell выполните команду:

    kubectl create -f cloudrusm-external-secret.yaml

    Результат:

    externalsecret/cloudrusm-external-secret created
  3. Проверьте статус:

    kubectl get externalsecrets.external-secrets.io

    Результат:

    NAME STORE REFRESH INTERVAL STATUS READY
    cloudrusm-external-secret cloudrusm-store 10s SecretSynced True
  4. Проверьте, что секрет присутствует в кластере:

    kubectl get secrets my-secrets

    Результат:

    NAME TYPE DATA AGE
    my-secrets Opaque 2 3m9s

Шаг 3. Удалите ресурсы

Если вы закончили работать с примером:

  1. Удалите кластер.

  2. Удалите секрет.