Provider di Azure Key Vault per il driver CSI dell'archivio segreti per le opzioni di configurazione e risoluzione dei problemi del servizio Azure Kubernetes (AKS)
Segui la procedura descritta in Usare il provider di Azure Key Vault per il driver CSI dell'archivio segreti in un cluster del servizio Azure Kubernetes e Fornire un'identità per accedere al provider di Azure Key Vault per il driver CSI dell'archivio segreti nel servizio Azure Kubernetes. Dopo aver completato questi passaggi, puoi applicare configurazioni aggiuntive o eseguire la risoluzione dei problemi.
Opzioni di configurazione
Abilitare e disabilitare la rotazione automatica
Nota
Quando il provider di Azure Key Vault per il driver CSI dell'archivio segreti è abilitato, aggiorna il montaggio del pod e il segreto Kubernetes definito nel secretObjects
campo di SecretProviderClass
. Lo fa eseguendo periodicamente il polling delle modifiche, in base all'intervallo di polling di rotazione da te definito. L'intervallo di polling di rotazione predefinito è due minuti.
Nota
Quando un segreto viene aggiornato in un archivio segreti esterno dopo la distribuzione iniziale del pod, il segreto Kubernetes e il montaggio del pod vengono aggiornati periodicamente a seconda del modo in cui l'applicazione utilizza i dati segreti.
Montare il segreto Kubernetes come volume: usare le funzionalità di rotazione automatica e sincronizzazione dei segreti K8s del driver CSI dell'archivio segreti. L'applicazione deve controllare le modifiche apportate dal volume del segreto Kubernetes montato. Quando il driver CSI aggiorna il segreto Kubernetes, anche il contenuto del volume corrispondente viene aggiornato automaticamente.
L'applicazione legge i dati dal file system del contenitore: usare la funzionalità di rotazione del driver CSI dell'archivio segreti. L'applicazione deve controllare la modifica del file apportata dal volume montato dal driver CSI.
Usare il segreto Kubernetes per una variabile di ambiente: riavviare il pod per ottenere il segreto più recente come variabile di ambiente. Usa uno strumento come Reloader per controllare le modifiche nel segreto Kubernetes sincronizzato ed eseguire aggiornamenti in sequenza nei pod.
Abilitare la rotazione automatica in un nuovo cluster del servizio Azure Kubernetes
Abilita la rotazione automatica dei segreti in un nuovo cluster usando il comando
az aks create
e abilita il componente aggiuntivoenable-secret-rotation
.az aks create \ --name myAKSCluster2 \ --resource-group myResourceGroup \ --enable-addons azure-keyvault-secrets-provider \ --enable-secret-rotation \ --generate-ssh-keys
Abilitare la rotazione automatica in un cluster del servizio Azure Kubernetes esistente
Aggiorna un cluster esistente per abilitare la rotazione automatica dei segreti usando il comando
az aks addon update
e il parametroenable-secret-rotation
.az aks addon update --resource-group myResourceGroup --name myAKSCluster2 --addon azure-keyvault-secrets-provider --enable-secret-rotation
Specificare un intervallo di rotazione personalizzato
Specifica un intervallo di rotazione personalizzato usando il comando
az aks addon update
con il parametrorotation-poll-interval
.az aks addon update --resource-group myResourceGroup --name myAKSCluster2 --addon azure-keyvault-secrets-provider --enable-secret-rotation --rotation-poll-interval 5m
Abilitare la rotazione automatica
Per disabilitare la rotazione automatica, devi prima disabilitare il componente aggiuntivo. Poi puoi riabilitare il componente aggiuntivo senza il parametro enable-secret-rotation
.
Disabilita il componente aggiuntivo del provider di segreti usando il comando
az aks addon disable
.az aks addon disable --resource-group myResourceGroup --name myAKSCluster2 --addon azure-keyvault-secrets-provider
Riabilita il componente aggiuntivo del provider di segreti senza il parametro
enable-secret-rotation
usando il comandoaz aks addon enable
.az aks addon enable --resource-group myResourceGroup --name myAKSCluster2 --addon azure-keyvault-secrets-provider
Se si usa già un SecretProviderClass
, è possibile aggiornare il componente aggiuntivo senza disabilitarlo prima usando az aks addon enable
senza specificare il parametro enable-secret-rotation
.
Sincronizza il contenuto montato con un segreto Kubernetes
Nota
Gli esempi YAML in questa sezione sono incompleti. È necessario modificarli per supportare il metodo scelto di accesso all'identità dell'insieme di credenziali delle chiavi. Per i dettagli, vedi Fornire un'identità per accedere al provider di Azure Key Vault per il driver CSI dell'archivio segreti.
Potresti voler creare un segreto Kubernetes per eseguire il mirroring del contenuto dei segreti montati. I tuoi segreti vengono sincronizzati dopo l'avvio di un pod per montarli. Quando elimini i pod che usano i segreti, viene eliminato anche il tuo segreto Kubernetes.
Sincronizza il contenuto montato con un segreto Kubernetes usando il campo
secretObjects
quando crei unSecretProviderClass
per definire lo stato desiderato del segreto Kubernetes, come illustrato nel seguente esempio 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)
Nota
Assicurati che
objectName
nel camposecretObjects
corrisponda al nome file del contenuto montato. Se invece usiobjectAlias
, deve corrispondere all'alias dell'oggetto.
Impostare una variabile di ambiente per fare riferimento ai segreti Kubernetes
Nota
Nell'esempio YAML viene illustrato l'accesso a un segreto tramite variabili env e volume/volumeMount. Questo è a scopo illustrativo. Un'applicazione tipica usa un metodo o l'altro. Tuttavia, tieni presente che, affinché un segreto sia disponibile tramite variabili di env, deve prima essere montato da almeno un pod.
Fai riferimento al segreto Kubernetes appena creato impostando una variabile di ambiente nel tuo pod, come illustrato nell'esempio seguente 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"
Accedere alle metriche
Il provider di Azure Key Vault
Le metriche vengono gestite tramite Prometheus dalla porta 8898, ma questa porta non viene esposta all'esterno del pod per impostazione predefinita.
Accedere alle metriche tramite localhost usando
kubectl port-forward
.kubectl port-forward -n kube-system ds/aks-secrets-store-provider-azure 8898:8898 & curl localhost:8898/metrics
Metriche fornite dal provider di Azure Key Vault per il driver CSI dell'archivio segreti
Metrico | Descrizione | Tag |
---|---|---|
keyvault_request | Distribuzione del tempo necessario per estrarre dall'insieme di credenziali delle chiavi. | os_type=<runtime os> , provider=azure , object_name=<keyvault object name> , object_type=<keyvault object type> , error=<error if failed> |
grpc_request | Distribuzione del tempo necessario per le richieste gRPC. | os_type=<runtime os> , provider=azure , grpc_method=<rpc full method> , grpc_code=<grpc status code> , grpc_message=<grpc status message> |
Driver CSI dell'archivio segreti
Le metriche vengono gestite dalla porta 8095, ma questa porta non viene esposta all'esterno del pod per impostazione predefinita.
Accedere alle metriche tramite localhost usando
kubectl port-forward
.kubectl port-forward -n kube-system ds/aks-secrets-store-csi-driver 8095:8095 & curl localhost:8095/metrics
Metriche fornite dal driver CSI dell'archivio segreti
Metrico | Descrizione | Tag |
---|---|---|
total_node_publish | Numero totale di richieste di montaggio del volume andate a buon fine. | os_type=<runtime os> , provider=<provider name> |
total_node_unpublish | Numero totale di richieste di smontaggio del volume andate a buon fine. | os_type=<runtime os> |
total_node_publish_error | Numero totale di errori con richieste di montaggio del volume. | os_type=<runtime os> , provider=<provider name> , error_type=<error code> |
total_node_unpublish_error | Numero totale di errori con richieste di smontaggio del volume. | os_type=<runtime os> |
total_sync_k8s_secret | Numero totale di segreti Kubernetes sincronizzati. | os_type=<runtime os , provider=<provider name> |
sync_k8s_secret_duration_sec | Distribuzione del tempo necessario per sincronizzare il segreto Kubernetes. | os_type=<runtime os> |
total_rotation_reconcile | Numero totale di riconciliazioni di rotazione. | os_type=<runtime os> , rotated=<true or false> |
total_rotation_reconcile_error | Il numero totale di rotazioni si riconcilia con gli errori. | os_type=<runtime os> , rotated=<true or false> , error_type=<error code> |
total_rotation_reconcile_error | Distribuzione del tempo necessario per ruotare il contenuto dell'archivio segreti per i pod. | os_type=<runtime os> |
Eseguire la migrazione dal driver CSI dell'archivio segreti gestito dal servizio Azure Kubernetes
Disinstalla il driver CSI dell'archivio segreti open source usando il seguente comando
helm delete
.helm delete <release name>
Nota
Se hai installato il driver e il provider usando YAML di distribuzione, puoi eliminare i componenti usando il seguente comando
kubectl delete
.# 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
Aggiorna il tuo cluster del servizio Azure Kubernetes esistente con la funzionalità usando il comando
az aks enable-addons
.az aks enable-addons --addons azure-keyvault-secrets-provider --name myAKSCluster --resource-group myResourceGroup
Risoluzione dei problemi
Per la procedura di risoluzione dei problemi, vedi Risolvere i problemi relativi al provider di Azure Key Vault per il driver CSI dell'archivio segreti.
Passaggi successivi
Per saperne di più sul provider di Azure Key Vault per il driver CSI dell'archivio segreti, vedi le risorse seguenti:
Azure Kubernetes Service