Esercitazione: Connettersi ad Archiviazione di Azure in AKS usando Service Connector con l'identità di carico di lavoro

Questa esercitazione illustra come usare Service Connector per connettere un account Archiviazione di Azure a un pod in un cluster Servizio Azure Kubernetes (AKS) usando l'identità del carico di lavoro. Completare le attività seguenti:

  • Creare un cluster AKS e un account di archiviazione di Azure.
  • Creare una connessione tra il cluster AKS e l'account Archiviazione di Azure usando Service Connector.
  • Clonare un'applicazione di esempio che si connette all'account di archiviazione Azure dal cluster AKS.
  • Distribuire l'applicazione in un pod nel cluster del servizio Azure Kubernetes e testare la connessione.
  • Pulire le risorse.

Prerequisiti

Creare risorse Azure

  1. Accedere a Azure eseguendo az login e seguendo le istruzioni.

  2. Creare un gruppo di risorse Azure da usare per questa esercitazione, sostituendo il segnaposto <region> con un valore valido. L'location deve essere un'area Azure in cui la sottoscrizione dispone di una quota di calcolo sufficiente per le risorse Azure e nessuna restrizione per nessuno dei servizi.

    az group create \
        --name MyResourceGroup \
        --location <region>
    
  3. Eseguendo il comando seguente, creare un cluster AKS per contenere la connessione del servizio, la definizione del pod e l'applicazione di esempio. Per altre informazioni, vedere Quickstart: Distribuire un cluster Servizio Azure Kubernetes (AKS) usando interfaccia della riga di comando di Azure.

    az aks create \
        --resource-group MyResourceGroup \
        --name MyAKSCluster \
        --enable-managed-identity \
        --node-count 1
    
  4. Connettersi al cluster eseguendo il comando seguente.

    az aks get-credentials \
        --resource-group MyResourceGroup \
        --name MyAKSCluster
    
  5. Creare un account Archiviazione di Azure come servizio obiettivo al quale si connette il cluster AKS e con cui l'applicazione di esempio interagisce. Per altre informazioni, vedere Creare un account di archiviazione Azure. Eseguire il comando seguente, sostituendo <storageaccountname> con un nome di 3-24 caratteri minuscoli o numerici ed è univoco in Azure.

    az storage account create \
        --resource-group MyResourceGroup \
        --name <storageaccountname> \
        --sku Standard_LRS
    
  6. Creare un Azure Container Registry per ospitare l'immagine del contenitore dell'applicazione utilizzata dalla definizione del pod in Azure Kubernetes Service (AKS). Per altre informazioni, vedere Quickstart: Creare un registro contenitori Azure usando il portale di Azure. Eseguire il comando seguente, sostituendo <registryname> con un nome di 5-50 caratteri minuscoli o numerici e deve essere univoco in Azure.

    az acr create \
        --resource-group MyResourceGroup \
        --name <registryname> \
        --sku Standard
    
  7. Abilitare il pull anonimo in modo che il cluster AKS possa usare le immagini del registro. Sostituire il <registryname> segnaposto con il nome del registro.

    az acr update \
        --resource-group MyResourceGroup \
        --name <registryname> \
        --anonymous-pull-enabled
    
  8. Eseguire il comando seguente per creare un'identità gestita assegnata dall'utente che la creazione della connessione al servizio può usare per abilitare il workload identity per i carichi di lavoro su AKS. Per altre informazioni, vedere Gestire le identità gestite assegnate dall'utente usando il portale di Azure.

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

Creare una connessione di servizio con il Connettore di servizi

Creare una connessione di servizio tra il cluster AKS e l'account Archiviazione di Azure utilizzando interfaccia della riga di comando di Azure o il portale di Azure.

Eseguire il comando interfaccia della riga di comando di Azure seguente per creare una connessione del servizio all'account di archiviazione Azure. Sostituire <storageaccountname> con il nome dell'account di archiviazione e <user-identity-resource-id> con l'ID risorsa identità gestita assegnata dall'utente.

È possibile ottenere l'ID della risorsa dell'identità gestita assegnata dall'utente dall'output del comando az identity create precedente oppure usare il formato /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>

Dopo aver creato la connessione, nella pagina del connettore di servizi del portale di Azure vengono visualizzate informazioni sulla nuova connessione. È possibile usare queste informazioni quando si modifica il file pod.yaml più avanti in questa esercitazione.

Screenshot del portale di Azure, visualizzando le risorse kubernetes create da Service Connector.

Creare l'applicazione di esempio

  1. Clonare il repository di esempio e quindi passare alla directory che contiene l'app di esempio. Eseguire i comandi rimanenti da questa cartella.

    git clone https://github.com/Azure-Samples/serviceconnector-aks-samples.git
    cd serviceconnector-aks-samples/azure-storage-workload-identity
    
  2. Compilare ed eseguire il push delle immagini nel registro dei contenitori usando il comando az acr build. Sostituire il <registryname> segnaposto con il nome del registro.

    az acr build --registry <registryname> --image sc-demo-storage-identity:latest ./
    
  3. Usando il comando az acr repository list, visualizzare l'immagine nel registro contenitori. Sostituire il <registryname> segnaposto con il nome del registro.

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

Eseguire l'applicazione e testare la connessione

  1. Sostituire i segnaposto seguenti nel file pod.yaml nella cartella dell'app locale.

    • <YourContainerImage>: sostituire con il nome dell'immagine nel registro contenitori, ad esempio <registryname>.azurecr.io/sc-demo-storage-identity:latest.
    • <ServiceAccountCreatedByServiceConnector>: Sostituire con l'account del servizio Service Connector creato dopo la connessione. È possibile controllare il nome dell'account del servizio nella pagina del connettore di servizio del cluster AKS nel portale di Azure.
    • <SecretCreatedByServiceConnector>: sostituire con il connettore del servizio segreto creato dopo la creazione della connessione. È possibile controllare il nome dell'account del servizio nella pagina Connettore di Servizio del cluster AKS nel portale di Azure.
  2. Distribuire il pod nel cluster usando kubectl apply. Il comando crea un pod denominato sc-demo-storage-identity nello spazio dei nomi predefinito del cluster del servizio Azure Kubernetes.

    kubectl apply -f pod.yaml
    
  3. Verificare che la distribuzione sia riuscita visualizzando il pod usando kubectl.

    kubectl get pod/sc-demo-storage-identity
    
  4. Verificare che la connessione venga stabilita visualizzando i log usando kubectl.

    kubectl logs pod/sc-demo-storage-identity
    

Pulire le risorse

Se per questa esercitazione non sono più necessarie le risorse Azure create, è possibile eliminarle eliminando il gruppo di risorse MyResourceGroup.

az group delete \
  --resource-group MyResourceGroup