Tutoriel : Se connecter à stockage Azure dans AKS à l’aide de Service Connector avec l’identité de charge de travail

Dans ce tutoriel, vous allez apprendre à utiliser Service Connector pour connecter un compte stockage Azure à un pod d’un cluster Azure Kubernetes Service (AKS) à l’aide de l’identité de charge de travail. Effectuez les tâches suivantes :

  • Créez un cluster AKS et un compte stockage Azure.
  • Créez une connexion entre le cluster AKS et le compte stockage Azure à l’aide de Service Connector.
  • Clonez un exemple d’application qui se connecte au compte stockage Azure à partir du cluster AKS.
  • Déployez l’application sur un pod dans le cluster AKS et testez la connexion.
  • Libérer des ressources.

Prérequis

Créer des ressources Azure

  1. Connectez-vous à Azure en exécutant az login et en suivant les invites.

  2. Créez un groupe de ressources Azure à utiliser pour ce didacticiel, en remplaçant l’espace réservé <region> par une valeur valide. Le location doit être une région Azure où votre abonnement dispose d’un quota de calcul suffisant pour les ressources Azure et aucune restriction sur les services.

    az group create \
        --name MyResourceGroup \
        --location <region>
    
  3. Créez un cluster AKS pour contenir la connexion de service, la définition de pod et l’exemple d’application en exécutant la commande suivante. Pour plus d’informations, consultez Quickstart : Déployer un cluster Azure Kubernetes Service (AKS) à l’aide de Azure CLI.

    az aks create \
        --resource-group MyResourceGroup \
        --name MyAKSCluster \
        --enable-managed-identity \
        --node-count 1
    
  4. Connectez-vous au cluster en exécutant la commande suivante.

    az aks get-credentials \
        --resource-group MyResourceGroup \
        --name MyAKSCluster
    
  5. Créez un compte stockage Azure pour être le service cible auquel le cluster AKS se connecte et l’exemple d’application interagit avec. Pour plus d’informations, consultez Créer un compte de stockage Azure. Exécutez la commande suivante, en remplaçant <storageaccountname> par un nom de 3 à 24 caractères minuscules ou numériques et unique sur Azure.

    az storage account create \
        --resource-group MyResourceGroup \
        --name <storageaccountname> \
        --sku Standard_LRS
    
  6. Créez un registre de conteneurs Azure pour héberger l'image de conteneur de l'application utilisée par la définition de pod AKS. Pour plus d’informations, consultez Quickstart : Créer un registre de conteneurs Azure à l’aide du portail Azure. Exécutez la commande suivante, en remplaçant <registryname> par un nom de 5 à 50 caractères minuscules ou numériques et unique entre Azure.

    az acr create \
        --resource-group MyResourceGroup \
        --name <registryname> \
        --sku Standard
    
  7. Activez l'extraction anonyme afin que le cluster AKS puisse consommer les images de registre. Remplacez l’espace <registryname> réservé par le nom de votre registre.

    az acr update \
        --resource-group MyResourceGroup \
        --name <registryname> \
        --anonymous-pull-enabled
    
  8. Exécutez la commande suivante pour créer une identité managée attribuée par l'utilisateur, utilisée par la création de la connexion de service pour activer l'identité de charge de travail pour les charges de travail AKS. Pour plus d’informations, consultez Identités managées affectées par l’utilisateur à l’aide du portail Azure.

    az identity create \
        --resource-group MyResourceGroup \
        --name MyIdentity
    

Créez une connexion de service à l’aide du Connecteur de services

Créez une connexion de service entre le cluster AKS et le compte stockage Azure à l’aide de Azure CLI ou du portail Azure.

Exécutez la commande Azure CLI suivante pour créer une connexion de service au compte de stockage Azure. Remplacez <storageaccountname> par le nom de votre compte de stockage et <user-identity-resource-id> par votre ID de ressource d’identité managée affectée par l’utilisateur.

Vous pouvez obtenir votre ID de ressource d’identité managée affectée par l’utilisateur à partir de la sortie de la commande az identity create précédente, ou utiliser le format /subscriptions/<subscription-id>/resourceGroups/MyResourceGroup/providers/Microsoft.ManagedIdentity/userAssignedIdentities/MyIdentity.

az aks connection create storage-blob \
  --resource-group MyResourceGroup \
  --name MyAKSCluster \
  --target-resource-group MyResourceGroup \
  --account <storageaccountname> \
  --workload-identity <user-identity-resource-id>

Une fois la connexion créée, la page Azure portal Service Connector affiche des informations sur la nouvelle connexion. Vous pouvez utiliser ces informations lorsque vous modifiez le fichier pod.yaml plus loin dans ce tutoriel.

Screenshot du portail Azure, affichage des ressources Kubernetes créées par Service Connector.

Créer l’exemple d’application

  1. Clonez l’exemple de référentiel, puis passez au répertoire qui contient l’exemple d’application. Exécutez les commandes restantes à partir de ce dossier.

    git clone https://github.com/Azure-Samples/serviceconnector-aks-samples.git
    cd serviceconnector-aks-samples/azure-storage-workload-identity
    
  2. Générez et envoyez (push) les images à votre registre de conteneurs à l’aide de la az acr build commande. Remplacez l’espace <registryname> réservé par le nom de votre registre.

    az acr build --registry <registryname> --image sc-demo-storage-identity:latest ./
    
  3. Affichez l’image dans votre registre de conteneurs à l’aide de la az acr repository list commande. Remplacez l’espace <registryname> réservé par le nom de votre registre.

    az acr repository list --name <registryname> --output table
    

Exécuter l’application et tester la connexion

  1. Remplacez les espaces réservés suivants dans le fichier pod.yaml dans votre dossier d’application locale :

    • <YourContainerImage>: remplacez par le nom de l’image dans votre registre de conteneurs, par exemple <registryname>.azurecr.io/sc-demo-storage-identity:latest.
    • <ServiceAccountCreatedByServiceConnector>: remplacez par le compte de service Service Connector créé après la création de la connexion. Vous pouvez vérifier le nom du compte de service sur votre page Connecteur de service de cluster AKS dans le portail Azure.
    • <SecretCreatedByServiceConnector>: Remplacez par le "Secret Service Connector" créé après avoir créé la connexion. Vous pouvez vérifier le nom du compte de service sur votre page Connecteur de service de cluster AKS dans le portail Azure.
  2. Déployez le pod sur votre cluster à l’aide de kubectl apply. La commande crée un pod nommé sc-demo-storage-identity dans l’espace de noms par défaut de votre cluster AKS.

    kubectl apply -f pod.yaml
    
  3. Vérifiez que le déploiement réussit en affichant le pod à l'aide de kubectl.

    kubectl get pod/sc-demo-storage-identity
    
  4. Vérifiez que la connexion est établie en affichant les journaux à l’aide de kubectl.

    kubectl logs pod/sc-demo-storage-identity
    

Nettoyer les ressources

Si vous n’avez plus besoin des ressources Azure que vous avez créées pour ce didacticiel, vous pouvez les supprimer en supprimant le groupe de ressources MyResourceGroup.

az group delete \
  --resource-group MyResourceGroup