Fournisseur Azure Key Vault pour le pilote CSI Secrets Store pour les options de configuration et de dépannage Azure Kubernetes Service (AKS)
Suivez les étapes décrites dans Utiliser le fournisseur Azure Key Vault pour le pilote CSI Secrets Store dans un cluster AKS et Fournir une identité pour accéder au fournisseur Azure Key Vault pour le pilote CSI Secrets Store dans AKS. Une fois ces étapes terminées, vous pouvez appliquer des configurations supplémentaires ou effectuer un dépannage.
Options de configuration
Activer et désactiver la rotation automatique
Remarque
Lorsque le fournisseur Azure Key Vault pour le pilote CSI Secrets Store est activé, il met à jour le montage du cosse et le secret Kubernetes défini secretObjects
dans le champ SecretProviderClass
. À cet effet, il interroge régulièrement les modifications, en fonction de l’intervalle d’interrogation de rotation que vous avez défini. L’intervalle d’interrogation de rotation par défaut est de deux minutes.
Remarque
Lorsqu’un secret se met à jour dans un magasin de secrets externes après le déploiement initial du pod, le secret Kubernetes et le montage de pod se mettent régulièrement à jour en fonction de la façon dont l’application consomme les données de secret.
Montez le secret Kubernetes en tant que volume : utilisez les fonctionnalités de rotation automatique et de synchronisation des secrets K8 du pilote Secrets Store CSI. L’application doit surveiller les modifications apportées au volume de secret Kubernetes monté. Lorsque le pilote CSI met à jour le secret Kubernetes, le contenu du volume correspondant est automatiquement mis à jour également.
L'application lit les données du système de fichiers du conteneur : utilisez la fonction de rotation du pilote Secrets Store CSI. L’application doit surveiller les modifications apportées aux fichiers du volume monté par le pilote CSI.
Utilisez le secret Kubernetes pour une variable d’environnement : redémarrez le pod pour obtenir le dernier secret en tant que variable d’environnement. Utilisez un outil tel que Reloader pour surveiller les modifications apportées au secret Kubernetes synchronisé et effectuer des mises à niveau propagées sur les pods.
Activer la rotation automatique sur un nouveau cluster AKS
Activez la rotation automatique des secrets sur un nouveau cluster à l'aide de la commande
az aks create
et activez le module complémentaireenable-secret-rotation
.az aks create \ --name myAKSCluster2 \ --resource-group myResourceGroup \ --enable-addons azure-keyvault-secrets-provider \ --enable-secret-rotation \ --generate-ssh-keys
Activer la rotation automatique sur un cluster AKS existant
Mettez à jour un cluster existant pour activer la rotation automatique des secrets à l'aide de la commande
az aks addon update
et du paramètreenable-secret-rotation
.az aks addon update --resource-group myResourceGroup --name myAKSCluster2 --addon azure-keyvault-secrets-provider --enable-secret-rotation
Spécifier un intervalle de rotation personnalisé
Spécifier un intervalle de rotation personnalisé à l’aide de la commande
az aks addon update
avec le paramètrerotation-poll-interval
.az aks addon update --resource-group myResourceGroup --name myAKSCluster2 --addon azure-keyvault-secrets-provider --enable-secret-rotation --rotation-poll-interval 5m
Désactiver la rotation automatique
Pour désactiver la rotation automatique, vous devez d'abord désactiver le module complémentaire. Ensuite, vous pourrez réactiver le module complémentaire sans le paramètre enable-secret-rotation
.
Désactiver le module complémentaire du fournisseur de secrets à l’aide de la commande
az aks addon disable
.az aks addon disable --resource-group myResourceGroup --name myAKSCluster2 --addon azure-keyvault-secrets-provider
Réactiver le module complémentaire du fournisseur de secrets sans le paramètre
enable-secret-rotation
à l’aide de la commandeaz aks addon enable
.az aks addon enable --resource-group myResourceGroup --name myAKSCluster2 --addon azure-keyvault-secrets-provider
Si vous utilisez déjà un SecretProviderClass
, vous pouvez mettre à jour le module complémentaire sans le désactiver d’abord en utilisant az aks addon enable
sans spécifier le paramètre enable-secret-rotation
.
Synchroniser le contenu monté avec un secret Kubernetes
Remarque
Les exemples YAML de cette section sont incomplets. Vous devez les modifier pour prendre en charge la méthode d’accès à votre identité de coffre de clés que vous avez choisie. Pour plus de détails, consultez Fournir une identité pour accéder au fournisseur Azure Key Vault pour le pilote CSI Secrets Store.
Il peut vous arriver de vouloir créer un secret Kubernetes pour mettre en miroir le contenu de secrets. Vos secrets se synchronisent après que vous avez démarré un pod pour les monter. Lorsque vous supprimez les pods qui consomment les secrets, votre secret Kubernetes est également supprimé.
Synchroniser le contenu monté avec un secret Kubernetes à l’aide du champ
secretObjects
lors de la création d’uneSecretProviderClass
pour définir l’état souhaité du secret Kubernetes, comme illustré dans l’exemple YAML suivant.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)
Remarque
Vérifiez que
objectName
dans le champsecretObjects
correspond au nom de fichier du contenu monté. SiobjectAlias
est utilisé à la place, il doit correspondre à l’alias de l’objet.
Définir des variables d’environnement pour référencer des secrets Kubernetes
Remarque
L’exemple YAML illustre l’accès à un secret par le biais de variables d’environnement et de volume/volumeMount. Cet exemple est fourni à titre indicatif. Une application classique utilisera l’une ou l’autre des méthodes. Toutefois, sachez que pour qu’un secret soit disponible via des variables env, il doit d’abord être monté par au moins un pod.
Référencer votre secret Kubernetes nouvellement créé en définissant une variable d’environnement dans votre pod, comme illustré dans l’exemple YAML suivant.
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"
Accéder aux mesures
Le fournisseur Azure Key Vault
Les métriques sont fournies via Prometheus à partir du port 8898, mais ce port n’est pas exposé par défaut en dehors du pod.
Accédez aux métriques sur localhost en utilisant
kubectl port-forward
.kubectl port-forward -n kube-system ds/aks-secrets-store-provider-azure 8898:8898 & curl localhost:8898/metrics
Indicateurs de performance fournies par le fournisseur Azure Key Vault pour le pilote CSI Secrets Store
Métrique | Description | Étiquettes |
---|---|---|
keyvault_request | Répartition du temps nécessaire à l’obtention depuis le coffre de clés. | os_type=<runtime os> , provider=azure , object_name=<keyvault object name> , object_type=<keyvault object type> , error=<error if failed> |
grpc_request | Répartition du temps nécessaire aux requêtes gRPC. | os_type=<runtime os> , provider=azure , grpc_method=<rpc full method> , grpc_code=<grpc status code> , grpc_message=<grpc status message> |
Pilote CSI Secrets Store
Les métriques sont fournies à partir du port 8095, mais ce port n’est pas exposé par défaut en dehors du pod.
Accédez aux métriques sur localhost en utilisant
kubectl port-forward
.kubectl port-forward -n kube-system ds/aks-secrets-store-csi-driver 8095:8095 & curl localhost:8095/metrics
Métriques fournies par le pilote CSI du magasin de secrets
Métrique | Description | Étiquettes |
---|---|---|
total_node_publish | Nombre total de demandes de montage de volume réussies. | os_type=<runtime os> , provider=<provider name> |
total_node_unpublish | Nombre total de demandes de démontage de volume réussies. | os_type=<runtime os> |
total_node_publish_error | Nombre total d’erreurs avec les demandes de montage de volume. | os_type=<runtime os> , provider=<provider name> , error_type=<error code> |
total_node_unpublish_error | Nombre total d’erreurs avec les demandes de démontage de volume. | os_type=<runtime os> |
total_sync_k8s_secret | Nombre total de secrets Kubernetes synchronisés. | os_type=<runtime os , provider=<provider name> |
sync_k8s_secret_duration_sec | Répartition du temps nécessaire pour synchroniser le secret Kubernetes. | os_type=<runtime os> |
total_rotation_reconcile | Nombre total de rapprochements par rotation. | os_type=<runtime os> , rotated=<true or false> |
total_rotation_reconcile_error | Le nombre total de rotations se rapproche des erreurs. | os_type=<runtime os> , rotated=<true or false> , error_type=<error code> |
total_rotation_reconcile_error | Répartition du temps nécessaire pour la rotation du contenu secret-store pour les pods. | os_type=<runtime os> |
Effectuer une migration de l’open source vers le pilote CSI du magasin de secrets géré par AKS
Désinstallez le pilote CSI du magasin de secrets open source au moyen de la commande
helm delete
suivante.helm delete <release name>
Remarque
Si vous avez installé le pilote et le fournisseur à l’aide des YAML de déploiement, vous pouvez supprimer les composants à l’aide de la commande
kubectl delete
suivante.# 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
Mettez à niveau votre cluster AKS existant avec la fonctionnalité à l’aide de la commande
az aks enable-addons
.az aks enable-addons --addons azure-keyvault-secrets-provider --name myAKSCluster --resource-group myResourceGroup
Dépannage
Pour connaître les étapes de dépannage, consultez Résoudre les problèmes du fournisseur Azure Key Vault pour le pilote CSI du magasin de secrets.
Étapes suivantes
Pour en savoir plus sur le fournisseur Azure Key Vault pour le pilote CSI Secrets Store, consultez les ressources suivantes :
Azure Kubernetes Service