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 aktiveraenable-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 parameternenable-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 parameternrotation-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
.
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
Återaktivera tillägget för hemlighetsprovidern utan parametern
enable-secret-rotation
med kommandotaz aks addon enable
.az aks addon enable --resource-group myResourceGroup --name myAKSCluster2 --addon azure-keyvault-secrets-provider
Om du redan använder en SecretProviderClass
kan 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 ettSecretProviderClass
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 isecretObjects
matchar filnamnet för det monterade innehållet. Om du använderobjectAlias
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
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
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:
Azure Kubernetes Service
Feedback
https://aka.ms/ContentUserFeedback.
Kommer snart: Under hela 2024 kommer vi att fasa ut GitHub-problem som feedbackmekanism för innehåll och ersätta det med ett nytt feedbacksystem. Mer information finns i:Skicka och visa feedback för