Notes
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
S’applique à : AKS sur Windows Server
Le pilote CSI de magasin de secrets Kubernetes intègre des magasins de secrets à Kubernetes via un volume CSI (Container Stockage Interface). Si vous intégrez le pilote CSI de Stockage des secrets avec AKS sur Windows Server, vous pouvez monter des secrets, des clés et des certificats sous forme de volume. Les données sont ensuite montées dans le système de fichiers du conteneur.
Avec le pilote CSI du magasin de secrets, vous pouvez également intégrer un coffre de clés à l’un des fournisseurs pris en charge, tels qu’Azure Key Vault.
Avant de commencer
Avant de commencer, vérifiez que les conditions préalables suivantes sont remplies :
- Un compte et un abonnement Azure.
- Déploiement existant d’AKS sur Windows Server avec un cluster de charge de travail existant. Si vous n’avez pas de déploiement, suivez ce guide de démarrage rapide pour déployer un hôte AKS et un cluster de charge de travail.
- Si vous exécutez des clusters Linux, ils doivent être sur la version Linux 1.16.0 ou ultérieure.
- Si vous exécutez des clusters Windows, ils doivent se trouver sur windows 1.18.0 ou version ultérieure.
- Vérifiez que vous avez effectué les installations suivantes :
Accéder à vos clusters à l’aide de kubectl
Exécutez la commande suivante pour accéder à votre cluster à l’aide kubectl
de . Dans la commande, remplacez la valeur de votre nom de -name
cluster existant. Le nom du cluster utilise le fichier du kubeconfig
cluster spécifié comme fichier par défaut kubeconfig
pour kubectl
:
Get-AksHciCredential -name mycluster
Installer le pilote CSI du Magasin des secrets
Pour installer le pilote CSI du Magasin des secrets, exécutez la commande Helm suivante :
helm repo add csi-secrets-store-provider-azure https://azure.github.io/secrets-store-csi-driver-provider-azure/charts
La commande suivante installe à la fois le pilote CSI du magasin de secrets et le fournisseur Azure Key Vault :
helm install csi csi-secrets-store-provider-azure/csi-secrets-store-provider-azure --namespace kube-system
Remarque
Vous devez installer le pilote CSI du Magasin des secrets et le fournisseur Azure Key Vault dans l’espace kube-system
de noms. Ce guide utilise l’espace kube-system
de noms pour toutes les instances.
Vérifiez que le pilote CSI du magasin de secrets et le fournisseur Azure Key Vault sont correctement installés
Vérifiez vos pods en cours d’exécution pour vous assurer que le pilote CSI du Magasin des secrets et le fournisseur Azure Key Vault sont installés en exécutant les commandes suivantes :
Pour vérifier que le pilote CSI du magasin des secrets est installé, exécutez cette commande :
kubectl get pods -l app=secrets-store-csi-driver -n kube-system
Exemple de sortie :
NAME READY STATUS RESTARTS AGE secrets-store-csi-driver-spbfq 3/3 Running 0 3h52m
Pour vérifier que le fournisseur Azure Key Vault est installé, exécutez cette commande :
kubectl get pods -l app=csi-secrets-store-provider-azure -n kube-system
Exemple de sortie :
NAME READY STATUS RESTARTS AGE csi-csi-secrets-store-provider-azure-tpb4j 1/1 Running 0 3h52m
Ajouter des secrets dans un coffre de clés Azure
Vous avez besoin d’une ressource Azure Key Vault qui contient vos données secrètes. Vous pouvez utiliser une ressource Azure Key Vault existante ou en créer une nouvelle.
Si vous devez créer une ressource Azure Key Vault, exécutez la commande suivante. Vérifiez que vous êtes connecté en exécutant az login
vos informations d’identification Azure. Remplacez ensuite les valeurs suivantes par votre environnement :
az keyvault create -n <keyvault-name> -g <resourcegroup-name> -l eastus
Azure Key Vault peut stocker des clés, des secrets et des certificats. Dans l’exemple suivant, un secret de texte brut appelé ExampleSecret
est configuré :
az keyvault secret set --vault-name <keyvault-name> -n ExampleSecret --value MyAKSHCIExampleSecret
Créer une identité dans Azure
Utilisez un principal de service pour accéder à l’instance Azure Key Vault que vous avez créée à l’étape précédente. Vous devez enregistrer la sortie lors de l’exécution des commandes suivantes. Vous utilisez à la fois la clé secrète client et l’ID client dans les étapes suivantes.
Fournissez la clé secrète client en exécutant la commande suivante :
az ad sp create-for-rbac --role Contributor --scopes /subscriptions/<subscription-id> --name http://secrets-store-test --query 'password' -otsv
Fournissez l’ID client en exécutant la commande suivante :
az ad sp show --id http://secrets-store-test --query 'appId' -otsv
Fournir l’identité pour accéder au coffre de clés Azure
Utilisez les valeurs de l’étape précédente pour définir les autorisations comme indiqué dans la commande suivante :
az keyvault set-policy -n <keyvault-name> --secret-permissions get --spn <client-id>
Créer le secret Kubernetes avec des informations d’identification
Pour créer le secret Kubernetes avec les informations d’identification du principal de service, exécutez la commande suivante. Remplacez les valeurs suivantes par l’ID client approprié et la clé secrète client de l’étape précédente :
kubectl create secret generic secrets-store-creds --from-literal clientid=<client-id> --from-literal clientsecret=<client-secret>
Par défaut, le fournisseur de magasin de secrets a filtré la surveillance activée sur les secrets. Vous pouvez autoriser la commande à rechercher le secret dans la configuration par défaut en ajoutant l’étiquette secrets-store.csi.k8s.io/used=true
au secret :
kubectl label secret secrets-store-creds secrets-store.csi.k8s.io/used=true
Créer et appliquer votre propre objet SecretProviderClass
Pour utiliser et configurer le pilote CSI du Magasin des secrets pour votre cluster Kubernetes, créez une SecretProviderClass
ressource personnalisée. Vérifiez que le objects
tableau correspond aux objets que vous avez stockés dans l’instance Azure Key Vault :
apiVersion: secrets-store.csi.x-k8s.io/v1alpha1
kind: SecretProviderClass
metadata:
name: <keyvault-name> # The name of the Azure key vault
namespace: kube-system
spec:
provider: azure
parameters:
keyvaultName: "<keyvault-name>" # The name of the Azure key vault
useVMManagedIdentity: "false"
userAssignedIdentityID: "false"
cloudName: "" # [OPTIONAL for Azure] if not provided, the Azure environment defaults to AzurePublicCloud
objects: |
array:
- |
objectName: <secret-name> # In this example, 'ExampleSecret'
objectType: secret # Object types: secret, key or cert
objectVersion: "" # [OPTIONAL] object versions, default to latest if empty
tenantId: "<tenant-id>" # The tenant ID containing the Azure Key Vault instance
Appliquer la SecretProviderClass à votre cluster
Pour déployer le SecretProviderClass
que vous avez créé à l’étape précédente, utilisez la commande suivante :
kubectl apply -f ./new-secretproviderclass.yaml
Mise à jour et application du fichier YAML de déploiement de votre cluster
Pour vous assurer que votre cluster utilise la nouvelle ressource personnalisée, mettez à jour le fichier YAML de déploiement. Par exemple :
kind: Pod
apiVersion: v1
metadata:
name: busybox-secrets-store-inline
spec:
containers:
- name: busybox
image: k8s.gcr.io/e2e-test-images/busybox:1.29
command:
- "/bin/sleep"
- "10000"
volumeMounts:
- name: secrets-store-inline
mountPath: "/mnt/secrets-store"
readOnly: true
volumes:
- name: secrets-store-inline
csi:
driver: secrets-store.csi.k8s.io
readOnly: true
volumeAttributes:
secretProviderClass: "<keyvault-name>"
nodePublishSecretRef: # Only required when using service principal mode
name: secrets-store-creds # Only required when using service principal mode
Appliquez ensuite le fichier YAML de déploiement mis à jour au cluster :
kubectl apply -f ./my-deployment.yaml
Valider le déploiement du magasin de secrets
Pour afficher les secrets conservés dans secrets-store
, exécutez la commande suivante :
kubectl exec busybox-secrets-store-inline --namespace kube-system -- ls /mnt/secrets-store/
La sortie doit afficher le nom du secret. Dans cet exemple, il affiche la sortie suivante :
ExampleSecret
Pour afficher le secret de test conservé dans secrets-store
, exécutez la commande suivante :
kubectl exec busybox-secrets-store-inline --namespace kube-system -- cat /mnt/secrets-store/ExampleSecret
La sortie doit afficher la valeur du secret. Dans cet exemple, il affiche la sortie suivante :
MyAKSHCIExampleSecret