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

Kommentar

När Azure Key Vault-providern för Secrets Store CSI-drivrutinen är aktiverad 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.

Kommentar

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: