Azure Key Vault-provider voor secrets store CSI-stuurprogramma voor AKS-configuratie (Azure Kubernetes Service) en opties voor probleemoplossing
Volg de stappen in De Azure Key Vault-provider gebruiken voor het CSI-stuurprogramma Secrets Store in een AKS-cluster en geef een identiteit op voor toegang tot de Azure Key Vault-provider voor het CSI-stuurprogramma Secrets Store in AKS. Zodra u deze stappen hebt voltooid, kunt u extra configuraties toepassen of probleemoplossing uitvoeren.
Configuratieopties
Automatische rotatie in- en uitschakelen
Notitie
Wanneer de Azure Key Vault-provider voor het CSI-stuurprogramma Secrets Store is ingeschakeld, worden de podkoppeling en het Kubernetes-geheim bijgewerkt dat is gedefinieerd in het secretObjects
veld van SecretProviderClass
. Dit doet u door periodiek te peilen naar wijzigingen, op basis van het interval voor de rotatiepeiling dat u hebt gedefinieerd. Het standaardinterval voor rotatiepeiling is twee minuten.
Notitie
Wanneer een geheim wordt bijgewerkt in een extern geheimenarchief na de eerste podimplementatie, worden de Kubernetes Secret en de podkoppeling periodiek bijgewerkt, afhankelijk van hoe de toepassing de geheime gegevens verbruikt.
Koppel het Kubernetes-geheim als een volume: gebruik de functies voor automatisch rouleren en synchroniseren van K8s-geheimen van het CSI-stuurprogramma Secrets Store. De toepassing moet controleren op wijzigingen van het gekoppelde Kubernetes Secret-volume. Wanneer het CSI-stuurprogramma het Kubernetes-geheim bijwerkt, wordt de bijbehorende volume-inhoud ook automatisch bijgewerkt.
De toepassing leest de gegevens uit het bestandssysteem van de container: gebruik de rotatiefunctie van het stuurprogramma Secrets Store CSI. De toepassing moet controleren of het bestand is gewijzigd van het volume dat is gekoppeld door het CSI-stuurprogramma.
Gebruik het Kubernetes-geheim voor een omgevingsvariabele: start de pod opnieuw om het meest recente geheim op te halen als een omgevingsvariabele. Gebruik een hulpprogramma zoals Opnieuw laden om te kijken naar wijzigingen in het gesynchroniseerde Kubernetes Secret en rolling upgrades uit te voeren op pods.
Automatische rotatie inschakelen op een nieuw AKS-cluster
Schakel automatische rotatie van geheimen in op een nieuw cluster met behulp van de
az aks create
opdracht en schakel deenable-secret-rotation
invoegtoepassing in.az aks create \ --name myAKSCluster2 \ --resource-group myResourceGroup \ --enable-addons azure-keyvault-secrets-provider \ --enable-secret-rotation \ --generate-ssh-keys
Automatische rotatie inschakelen op een bestaand AKS-cluster
Werk een bestaand cluster bij om automatisch rouleren van geheimen in te schakelen met behulp van de
az aks addon update
opdracht en deenable-secret-rotation
parameter.az aks addon update --resource-group myResourceGroup --name myAKSCluster2 --addon azure-keyvault-secrets-provider --enable-secret-rotation
Een aangepast rotatie-interval opgeven
Geef een aangepast rotatie-interval op met behulp van de
az aks addon update
opdracht met derotation-poll-interval
parameter.az aks addon update --resource-group myResourceGroup --name myAKSCluster2 --addon azure-keyvault-secrets-provider --enable-secret-rotation --rotation-poll-interval 5m
Automatische rotatie uitschakelen
Als u automatische rotatie wilt uitschakelen, moet u eerst de invoegtoepassing uitschakelen. Vervolgens kunt u de invoegtoepassing opnieuw inschakelen zonder de enable-secret-rotation
parameter.
Schakel de invoegtoepassing geheimenprovider uit met behulp van de
az aks addon disable
opdracht.az aks addon disable --resource-group myResourceGroup --name myAKSCluster2 --addon azure-keyvault-secrets-provider
Schakel de invoegtoepassing geheimenprovider opnieuw in zonder de
enable-secret-rotation
parameter met behulp van deaz aks addon enable
opdracht.az aks addon enable --resource-group myResourceGroup --name myAKSCluster2 --addon azure-keyvault-secrets-provider
Als u al een SecretProviderClass
invoegtoepassing gebruikt, kunt u de invoegtoepassing bijwerken zonder deze eerst uit te schakelen door deze te gebruiken az aks addon enable
zonder de enable-secret-rotation
parameter op te geven.
Gekoppelde inhoud synchroniseren met een Kubernetes-geheim
Notitie
De YAML-voorbeelden in deze sectie zijn onvolledig. U moet deze wijzigen om de gekozen methode voor toegang tot uw sleutelkluisidentiteit te ondersteunen. Zie Een identiteit opgeven voor toegang tot de Azure Key Vault-provider voor het CSI-stuurprogramma Secrets Store voor meer informatie.
Mogelijk wilt u een Kubernetes-geheim maken om de inhoud van uw gekoppelde geheimen te spiegelen. Uw geheimen worden gesynchroniseerd nadat u een pod hebt gestart om deze te koppelen. Wanneer u de pods verwijdert die de geheimen gebruiken, wordt uw Kubernetes-geheim ook verwijderd.
Synchroniseer gekoppelde inhoud met een Kubernetes-geheim met behulp van het veld bij het
secretObjects
maken van eenSecretProviderClass
om de gewenste status van het Kubernetes-geheim te definiëren, zoals wordt weergegeven in het volgende voorbeeld 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)
Notitie
Zorg ervoor dat het
objectName
secretObjects
veld overeenkomt met de bestandsnaam van de gekoppelde inhoud. Als u in plaats daarvan gebruiktobjectAlias
, moet deze overeenkomen met de objectalias.
Een omgevingsvariabele instellen om te verwijzen naar Kubernetes-geheimen
Notitie
In het voorbeeld van YAML wordt de toegang tot een geheim gedemonstreert via env-variabelen en volume/volumeMount. Dit is voor illustratieve doeleinden. Een typische toepassing gebruikt één methode of de andere. Houd er echter rekening mee dat het eerst moet worden gekoppeld door ten minste één pod om een geheim beschikbaar te maken via env-variabelen.
Verwijs naar uw zojuist gemaakte Kubernetes-geheim door een omgevingsvariabele in te stellen in uw pod, zoals wordt weergegeven in het volgende voorbeeld 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"
Metrische gegevens van Access
De Azure Key Vault-provider
Metrische gegevens worden geleverd via Prometheus vanaf poort 8898, maar deze poort wordt niet standaard buiten de pod weergegeven.
Toegang tot de metrische gegevens via localhost met behulp van
kubectl port-forward
.kubectl port-forward -n kube-system ds/aks-secrets-store-provider-azure 8898:8898 & curl localhost:8898/metrics
Metrische gegevens van de Azure Key Vault-provider voor het CSI-stuurprogramma Secrets Store
Metrisch | Beschrijving | Tags |
---|---|---|
keyvault_request | De verdeling van hoe lang het duurde om uit de sleutelkluis te komen. | os_type=<runtime os> object_name=<keyvault object name> , provider=azure , object_type=<keyvault object type> error=<error if failed> |
grpc_request | De verdeling van hoe lang het duurde voor de gRPC-aanvragen. | os_type=<runtime os> grpc_method=<rpc full method> , provider=azure , grpc_code=<grpc status code> grpc_message=<grpc status message> |
Het stuurprogramma Secrets Store CSI
Metrische gegevens worden geleverd vanaf poort 8095, maar deze poort wordt niet standaard buiten de pod weergegeven.
Toegang tot de metrische gegevens via localhost met behulp van
kubectl port-forward
.kubectl port-forward -n kube-system ds/aks-secrets-store-csi-driver 8095:8095 & curl localhost:8095/metrics
Metrische gegevens die worden geleverd door het stuurprogramma Secrets Store CSI
Metrisch | Beschrijving | Tags |
---|---|---|
total_node_publish | Het totale aantal geslaagde aanvragen voor het koppelen van volumes. | os_type=<runtime os> , provider=<provider name> |
total_node_unpublish | Het totale aantal geslaagde volume-ontkoppelingsaanvragen. | os_type=<runtime os> |
total_node_publish_error | Het totale aantal fouten met aanvragen voor volumekoppeling. | os_type=<runtime os> , , provider=<provider name> error_type=<error code> |
total_node_unpublish_error | Het totale aantal fouten met volume-ontkoppelde aanvragen. | os_type=<runtime os> |
total_sync_k8s_secret | Het totale aantal Kubernetes-geheimen dat is gesynchroniseerd. | os_type=<runtime os , provider=<provider name> |
sync_k8s_secret_duration_sec | De verdeling van hoe lang het duurde om het Kubernetes-geheim te synchroniseren. | os_type=<runtime os> |
total_rotation_reconcile | Het totale aantal rotaties wordt afstemmen. | os_type=<runtime os> , rotated=<true or false> |
total_rotation_reconcile_error | Het totale aantal rotaties is afgestemd op fouten. | os_type=<runtime os> , , rotated=<true or false> error_type=<error code> |
total_rotation_reconcile_error | De distributie van hoe lang het duurde om geheimen-store-inhoud voor pods te roteren. | os_type=<runtime os> |
Migreren van opensource naar door AKS beheerd CSI-stuurprogramma voor geheimenarchief
Verwijder het opensource-stuurprogramma Secrets Store CSI met behulp van de volgende
helm delete
opdracht.helm delete <release name>
Notitie
Als u het stuurprogramma en de provider hebt geïnstalleerd met behulp van YAML's voor implementatie, kunt u de onderdelen verwijderen met behulp van de volgende
kubectl delete
opdracht.# 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
Werk uw bestaande AKS-cluster bij met de functie met behulp van de
az aks enable-addons
opdracht.az aks enable-addons --addons azure-keyvault-secrets-provider --name myAKSCluster --resource-group myResourceGroup
Probleemoplossing
Zie Problemen met de Azure Key Vault-provider voor het CSI-stuurprogramma geheimenarchief oplossen voor probleemoplossing.
Volgende stappen
Zie de volgende resources voor meer informatie over de Azure Key Vault-provider voor Secrets Store CSI Driver:
Azure Kubernetes Service