Dela via


Konfiguration och felsökningsalternativ för Azure Key Vault-providern för Secrets Store CSI Driver för Azure Kubernetes Service (AKS)

Följ stegen i Använda Azure Key Vault-providern för Secrets Store CSI-drivrutinen i ett AKS-kluster och Ange en identitet för att få åtkomst till Azure Key Vault-providern för Secrets Store CSI-drivrutinen i AKS. När du har slutfört de här stegen kan du använda extra konfigurationer eller utföra felsökning.

Konfigurationsalternativ

Aktivera och inaktivera automatisk rotation

När du aktiverar automatisk rotation för Azure Key Vault Secrets Provider uppdateras poddmonteringen och Kubernetes-hemligheten secretObjects som definieras i fältet SecretProviderClass. Det gör det genom att söka efter ändringar regelbundet, baserat på det rotationsmätningsintervall som du definierade. Standardintervallet för rotationsmätning är två minuter.

När en hemlighet uppdateras i ett externt hemlighetslager efter den första podddistributionen uppdateras Kubernetes Secret och poddmonteringen regelbundet beroende på hur programmet använder hemliga data.

  • Montera Kubernetes Secret som en volym: Använd funktionerna för automatisk rotation och synkronisering av K8s-hemligheter i Secrets Store CSI-drivrutinen. Programmet måste hålla utkik efter ändringar från den monterade Kubernetes Secret-volymen. När CSI-drivrutinen uppdaterar Kubernetes-hemligheten uppdateras även motsvarande volyminnehåll automatiskt.

  • Programmet läser data från containerfilsystemet: Använd rotationsfunktionen i Secrets Store CSI-drivrutinen. Programmet måste hålla utkik efter filändringen från volymen som monterats av CSI-drivrutinen.

  • Använd Kubernetes Secret för en miljövariabel: Starta om podden för att hämta den senaste hemligheten som en miljövariabel. Använd ett verktyg som Reloader för att hålla utkik efter ändringar i den synkroniserade Kubernetes-hemligheten och utföra löpande uppgraderingar på poddar.

Aktivera automatisk rotation i ett nytt AKS-kluster

  • Aktivera automatisk rotation av hemligheter i ett nytt kluster med hjälp av az aks create kommandot och aktivera enable-secret-rotation tillägget.

    az aks create \
        --name myAKSCluster2 \
        --resource-group myResourceGroup \
        --enable-addons azure-keyvault-secrets-provider \
        --enable-secret-rotation \
        --generate-ssh-keys
    

Aktivera automatisk rotation i ett befintligt AKS-kluster

  • Uppdatera ett befintligt kluster för att aktivera automatisk rotation av hemligheter med hjälp av az aks addon update kommandot och parametern enable-secret-rotation .

    az aks addon update --resource-group myResourceGroup --name myAKSCluster2 --addon azure-keyvault-secrets-provider --enable-secret-rotation
    

Ange ett anpassat rotationsintervall

  • Ange ett anpassat rotationsintervall med kommandot az aks addon update med parametern rotation-poll-interval .

    az aks addon update --resource-group myResourceGroup --name myAKSCluster2 --addon azure-keyvault-secrets-provider --enable-secret-rotation --rotation-poll-interval 5m
    

Inaktivera automatisk rotation

Om du vill inaktivera automatisk rotation måste du först inaktivera tillägget. Sedan kan du återaktivera tillägget utan parametern enable-secret-rotation .

  1. Inaktivera tillägget för hemlighetsprovidern az aks addon disable med kommandot .

    az aks addon disable --resource-group myResourceGroup --name myAKSCluster2 --addon azure-keyvault-secrets-provider
    
  2. Återaktivera tillägget för hemlighetsprovidern utan parametern enable-secret-rotation med kommandot az aks addon enable .

    az aks addon enable --resource-group myResourceGroup --name myAKSCluster2 --addon azure-keyvault-secrets-provider
    

Om du redan använder en SecretProviderClasskan du uppdatera tillägget utan att först inaktivera det med hjälp az aks addon enable av utan att ange parametern enable-secret-rotation .

Synkronisera monterat innehåll med en Kubernetes-hemlighet

Kommentar

YAML-exemplen i det här avsnittet är ofullständiga. Du måste ändra dem för att stödja den valda metoden för åtkomst till din nyckelvalvsidentitet. Mer information finns i Ange en identitet för åtkomst till Azure Key Vault-providern för Secrets Store CSI-drivrutinen.

Du kanske vill skapa en Kubernetes-hemlighet för att spegla innehållet i dina monterade hemligheter. Dina hemligheter synkroniseras när du har startat en podd för att montera dem. När du tar bort poddar som använder hemligheterna tas även din Kubernetes-hemlighet bort.

  • Synkronisera monterat innehåll med en Kubernetes-hemlighet med hjälp av secretObjects fältet när du skapar ett SecretProviderClass för att definiera det önskade tillståndet för Kubernetes-hemligheten, som du ser i följande exempel YAML.

    apiVersion: secrets-store.csi.x-k8s.io/v1
    kind: SecretProviderClass
    metadata:
      name: azure-sync
    spec:
      provider: azure
      secretObjects:                              # [OPTIONAL] SecretObjects defines the desired state of synced Kubernetes secret objects
      - data:
        - key: username                           # data field to populate
          objectName: foo1                        # name of the mounted content to sync; this could be the object name or the object alias
        secretName: foosecret                     # name of the Kubernetes secret object
        type: Opaque                              # type of Kubernetes secret object (for example, Opaque, kubernetes.io/tls)
    

    Kommentar

    Kontrollera att objectName fältet i secretObjects matchar filnamnet för det monterade innehållet. Om du använder objectAlias i stället ska det matcha objektaliaset.

Ange en miljövariabel som referens till Kubernetes-hemligheter

Kommentar

Yaml-exemplet visar åtkomst till en hemlighet via env-variabler och volym/volumeMount. Detta är i illustrativt syfte. Ett typiskt program skulle använda den ena eller den andra metoden. Tänk dock på att för att en hemlighet ska vara tillgänglig via env-variabler måste den först monteras av minst en podd.

  • Referera till din nyligen skapade Kubernetes-hemlighet genom att ange en miljövariabel i podden, som du ser i följande exempel YAML.

    kind: Pod
    apiVersion: v1
    metadata:
      name: busybox-secrets-store-inline
    spec:
      containers:
        - name: busybox
          image: registry.k8s.io/e2e-test-images/busybox:1.29-1
          command:
            - "/bin/sleep"
            - "10000"
          volumeMounts:
          - name: secrets-store01-inline
            mountPath: "/mnt/secrets-store"
            readOnly: true
          env:
          - name: SECRET_USERNAME
            valueFrom:
              secretKeyRef:
                name: foosecret
                key: username
      volumes:
        - name: secrets-store01-inline
          csi:
            driver: secrets-store.csi.k8s.io
            readOnly: true
            volumeAttributes:
              secretProviderClass: "azure-sync"
    

Åtkomstmått

Azure Key Vault-providern

Mått hanteras via Prometheus från port 8898, men den här porten exponeras inte utanför podden som standard.

  • Få åtkomst till måtten via localhost med hjälp av kubectl port-forward.

    kubectl port-forward -n kube-system ds/aks-secrets-store-provider-azure 8898:8898 & curl localhost:8898/metrics
    
Mått som tillhandahålls av Azure Key Vault-providern för Secrets Store CSI-drivrutin
Mätvärde Beskrivning Taggar
keyvault_request Fördelningen av hur lång tid det tog att komma från nyckelvalvet. os_type=<runtime os>, provider=azure, object_name=<keyvault object name>, , , object_type=<keyvault object type>error=<error if failed>
grpc_request Fördelningen av hur lång tid det tog för gRPC-begäranden. os_type=<runtime os>, provider=azure, grpc_method=<rpc full method>, , , grpc_code=<grpc status code>grpc_message=<grpc status message>

CSI-drivrutinen för hemlighetsarkivet

Mått hanteras från port 8095, men den här porten exponeras inte utanför podden som standard.

  • Få åtkomst till måtten via localhost med hjälp av kubectl port-forward.

    kubectl port-forward -n kube-system ds/aks-secrets-store-csi-driver 8095:8095 &
    curl localhost:8095/metrics
    
Mått som tillhandahålls av CSI-drivrutinen för Secrets Store
Mätvärde Beskrivning Taggar
total_node_publish Det totala antalet lyckade volymmonteringsbegäranden. os_type=<runtime os>, provider=<provider name>
total_node_unpublish Det totala antalet lyckade volymer som demonterar begäranden. os_type=<runtime os>
total_node_publish_error Det totala antalet fel med volymmonteringsbegäranden. os_type=<runtime os>, , provider=<provider name>error_type=<error code>
total_node_unpublish_error Det totala antalet fel med begäranden om att demontera volymer. os_type=<runtime os>
total_sync_k8s_secret Det totala antalet Kubernetes-hemligheter som synkroniserats. os_type=<runtime os, provider=<provider name>
sync_k8s_secret_duration_sec Fördelningen av hur lång tid det tog att synkronisera Kubernetes-hemligheten. os_type=<runtime os>
total_rotation_reconcile Det totala antalet rotationsstämmor. os_type=<runtime os>, rotated=<true or false>
total_rotation_reconcile_error Det totala antalet rotationsstämplar med fel. os_type=<runtime os>, , rotated=<true or false>error_type=<error code>
total_rotation_reconcile_error Fördelningen av hur lång tid det tog att rotera innehåll från hemligheter för poddar. os_type=<runtime os>

Migrera från öppen källkod till AKS-hanterad CSI-drivrutin för Secrets Store

  1. Avinstallera CSI-drivrutinen för hemligheter med öppen källkod med hjälp av följande helm delete kommando.

    helm delete <release name>
    

    Kommentar

    Om du har installerat drivrutinen och providern med hjälp av distributions-YAML:er kan du ta bort komponenterna med hjälp av följande kubectl delete kommando.

    # Delete AKV provider pods from Linux nodes
    kubectl delete -f https://raw.githubusercontent.com/Azure/secrets-store-csi-driver-provider-azure/master/deployment/provider-azure-installer.yaml
    
    # Delete AKV provider pods from Windows nodes
    kubectl delete -f https://raw.githubusercontent.com/Azure/secrets-store-csi-driver-provider-azure/master/deployment/provider-azure-installer-windows.yaml
    
  2. Uppgradera ditt befintliga AKS-kluster med funktionen med hjälp av az aks enable-addons kommandot .

    az aks enable-addons --addons azure-keyvault-secrets-provider --name myAKSCluster --resource-group myResourceGroup
    

Felsökning

Felsökningssteg finns i Felsöka Azure Key Vault-provider för CSI-drivrutin för secrets store.

Nästa steg

Mer information om Azure Key Vault-providern för Secrets Store CSI-drivrutinen finns i följande resurser: