VK Cloud logo

External Secrets Operator пайдалану

External Secrets Operator аддонын қолданып, VK Cloud құпия менеджері сақталған Kubernetes секреттерімен синхронизацияны баптаңыз.

Дайындық қадамдары

  1. Жоқ болса жаңа нұсқасы бар кластер жасаңыз.
  2. Орнатыңыз және баптаңыз kubectl, егер бұрын жасалмаған болса.
  3. Қосылыңыз kubectl арқылы кластерге.
  4. External Secrets Operator аддонын орнатыңыз, егер бұрын жасалмаған болса.
  5. API арқылы қолжетімділікті қосыңыз, егер бұрын жасалмаған болса.

1. Секрет менеджерінде секрет жасаңыз

Жасаңыз external-secret идентификаторы бар секретті VK Cloud секреттер менеджерінде және оған кез келген кілттерді қосыңыз.

2. Kubernetes секретін жасаңыз

  1. external-secrets-operator namespace жасаңыз, егер бұрын жасалмаған болса:

    kubectl create namespace external-secrets-operator
  2. VK Cloud секреттер менеджеріне қол жеткізу паролін сақтайтын password.yaml манифестін жасаңыз:

    apiVersion: v1kind: Secretmetadata:  name: password  namespace: external-secrets-operatortype: Opaquedata:  password: <ПАРОЛЬ_ОТ_ЛК>

    Мұнда <ПАРОЛЬ_ОТ_ЛК> — VK Cloud жеке кабинетіңіздің паролі base64 кодтауымен.

  3. Жасалған манифестті кластерде қолданыңыз:

    kubectl apply -f password.yaml

3. SecretStore жасаңыз

  1. Өтіңіз VK Cloud жеке кабинетіне.

  2. Беттің басындағы пайдаланушы атына басып, Жоба параметрлері таңдаңыз.

  3. API арқылы қолжетімділік бетіне өтіп, келесі мәндерді көшіріп алыңыз:

    • Project ID;
    • User Domain Name;
    • Username.
  4. secretstore.yaml манифестін жасаңыз — SecretStore типті объект, бұл VK Cloud секреттер менеджеріне қалай қосылу керектігін сипаттайды:

    apiVersion: external-secrets.io/v1kind: SecretStoremetadata:  name: secret-store  namespace: external-secrets-operatorspec:  provider:    vk:      projectID: <PROJECT_ID>      url: <AUTH_URL>      auth:        domain: <USER_DOMAIN_NAME>        username: <USERNAME>        password:          key: password          name: password

    Мұнда:

    • <PROJECT_ID>, <USER_DOMAIN_NAME> және <USERNAME> — жоба параметрлерінен көшіріп алған мәндеріңіз.
    • <AUTH_URL> — аймаққа байланысты мекенжай:
      • https://msk.cloud.vk.com Мәскеу аймағы үшін;
      • https://kz.cloud.vk.com Қазақстан аймағы үшін.
  5. Жасалған манифестті кластерде қолданыңыз:

    kubectl apply -f secretstore.yaml

4. ExternalSecret жасаңыз

  1. externalsecret.yaml манифестін жасаңыз — ExternalSecret типті объект, бұл секретті қай SecretStore-дан жүктеу керектігін және оны қалай жаңарту керектігін сипаттайды:

    apiVersion: external-secrets.io/v1kind: ExternalSecretmetadata:  name: external-secret  namespace: external-secrets-operatorspec:  refreshInterval: 5m  secretStoreRef:    name: secret-store    kind: SecretStore  target:    name: external-secret    creationPolicy: Owner  data:    - 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
  2. Жасалған манифестті кластерде қолданыңыз:

    kubectl apply -f externalsecret.yaml

Kubernetes-те external-secret аты бар жаңа Secret типті объект жасалады. Аддон әр бес минут сайын VK Cloud секреттер менеджеріндегі секреттегі көрсетілген өрістің мәнін тексереді. Егер мән өзгерсе, аддон оны автоматты түрде Kubernetes секретінде жаңартады.

5. Барлық секрет кілттерін синхронизациялау үшін ExternalSecret жасаңыз

  1. externalsecretall.yaml манифестін жасаңыз. Оның көмегімен VK Cloud секреттер менеджерінде жасаған секретіңізден барлық жұп мәндерді синхронизациялай аласыз.

    apiVersion: external-secrets.io/v1kind: ExternalSecretmetadata:  name: external-secret-all  namespace: external-secrets-operatorspec:  refreshInterval: 5m  secretStoreRef:    name: secret-store    kind: SecretStore  target:    name: external-secret-all    creationPolicy: Owner  dataFrom:    - extract:        key: <ID_СЕКРЕТА>
  2. Жасалған манифестті кластерде қолданыңыз:

    kubectl apply -f externalsecretall.yaml

Kubernetes-те external-secret-all аты бар жаңа Secret типті объект жасалады. Аддон әр бес минут сайын VK Cloud секреттер менеджеріндегі секреттің барлық кілттерінің мәнін тексереді. Егер олардың мәндері өзгерсе, аддон оларды автоматты түрде Kubernetes секретінде жаңартады.

6. Аддон жұмысын тексеріңіз

  1. 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       ...
  2. Секреттердің мазмұнын қараңыз:

    kubectl -n external-secrets-operator get secret external-secret -o yamlkubectl -n external-secrets-operator get secret external-secret-all -o yaml

Қолданылмайтын ресурстарды жойыңыз

Жұмыс істеп тұрған кластер тарификацияланады және есептеу ресурстарын тұтынады. Егер External Secrets Operator аддонының жұмысын тексеру үшін жасалған Kubernetes ресурстары сізге қажет болмаса, оларды жойыңыз:

  1. external-secrets-operator namespace және оған байланысты ресурстарды жойыңыз:

    kubectl delete namespace external-secrets-operator
  2. Тоқтатыңыз жасалған кластерді, оны кейінірек пайдалану үшін, немесе жойыңыз оны біржола.