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 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