Tutorial: Ligue-se ao Armazenamento do Azure no AKS usando o Service Connector com identidade de carga de trabalho

Neste tutorial, aprende a usar o Service Connector para ligar uma conta Armazenamento do Azure a um pod num cluster Azure Kubernetes Service (AKS) usando a identidade da carga de trabalho. Conclua as seguintes tarefas:

  • Crie um cluster AKS e uma conta Armazenamento do Azure.
  • Crie uma ligação entre o cluster AKS e a conta do Armazenamento do Azure usando o Service Connector.
  • Clone uma aplicação de exemplo que se ligue à conta Armazenamento do Azure a partir do cluster AKS.
  • Implante a aplicação num pod no cluster AKS e teste a ligação.
  • Limpe os recursos.

Pré-requisitos

Criar recursos do Azure

  1. Inicie sessão no Azure executando az login e seguindo as indicações.

  2. Crie um grupo de recursos Azure para usar neste tutorial, substituindo o marcador <region> por um valor válido. O location deve ser uma região Azure onde a sua subscrição tenha uma quota de computação suficiente para os recursos Azure e sem restrições em nenhum dos serviços.

    az group create \
        --name MyResourceGroup \
        --location <region>
    
  3. Crie um cluster AKS para conter a ligação de serviço, definição de pod e aplicação de exemplo, executando o seguinte comando. Para mais informações, consulte Quickstart: Implemente um cluster de Azure Kubernetes Service (AKS) usando CLI do Azure.

    az aks create \
        --resource-group MyResourceGroup \
        --name MyAKSCluster \
        --enable-managed-identity \
        --node-count 1
    
  4. Ligue-se ao cluster executando o seguinte comando.

    az aks get-credentials \
        --resource-group MyResourceGroup \
        --name MyAKSCluster
    
  5. Crie uma conta Armazenamento do Azure para ser o serviço alvo ao qual o cluster AKS se liga e com o qual a aplicação de exemplo interage. Para obter mais informações, consulte Criar uma conta de armazenamento do Azure. Execute o comando seguinte, substituindo <storageaccountname> por um nome que seja de 3 a 24 caracteres minúsculos ou numéricos e que seja único em Azure.

    az storage account create \
        --resource-group MyResourceGroup \
        --name <storageaccountname> \
        --sku Standard_LRS
    
  6. Crie um registo de contentores Azure para armazenar a imagem do contentor da aplicação utilizada na definição do pod AKS. Para mais informações, consulte Quickstart: Crie um registo de contentores Azure usando o portal Azure. Execute o comando seguinte, substituindo <registryname> por um nome que seja de 5 a 50 caracteres minúsculos ou numéricos e que seja único entre Azure.

    az acr create \
        --resource-group MyResourceGroup \
        --name <registryname> \
        --sku Standard
    
  7. Ative a extração anónima para que o cluster AKS possa consumir as imagens do registro. Substitua o <registryname> pelo nome do seu registo.

    az acr update \
        --resource-group MyResourceGroup \
        --name <registryname> \
        --anonymous-pull-enabled
    
  8. Execute o seguinte comando para criar uma identidade gerida atribuída pelo utilizador que a criação da ligação ao serviço possa usar para ativar a identidade da carga de trabalho para cargas de trabalho do AKS. Para mais informações, consulte Gerir identidades geridas atribuídas pelo utilizador usando o portal Azure.

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

Criar uma conexão de serviço usando o Service Connector

Crie uma ligação de serviço entre o cluster AKS e a conta Armazenamento do Azure usando CLI do Azure ou o portal Azure.

Execute o seguinte comando CLI do Azure para criar uma ligação de serviço à conta de armazenamento Azure. Substitua <storageaccountname> pelo nome da sua conta de armazenamento e <user-identity-resource-id> pelo ID de recurso de identidade gerida atribuído pelo utilizador.

Pode obter o ID de recurso de identidade gerida atribuído pelo utilizador a partir da saída do comando anterior az identity create, ou usar o 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>

Depois de criada a ligação, a página do Conector de Serviço do portal Azure mostra informações sobre a nova ligação. Podes usar esta informação quando editares o ficheiro pod.yaml mais tarde neste tutorial.

Captura de ecrã do portal Azure, visualizando recursos kubernetes criados pelo Service Connector.

Criar o aplicativo de exemplo

  1. Clone o repositório de exemplos e depois mude para o diretório que contém a aplicação de exemplo. Executa os comandos restantes desta pasta.

    git clone https://github.com/Azure-Samples/serviceconnector-aks-samples.git
    cd serviceconnector-aks-samples/azure-storage-workload-identity
    
  2. Constrói e envia as imagens para o registo do teu contentor usando o az acr build comando. Substitua o marcador de posição <registryname> pelo nome do registo.

    az acr build --registry <registryname> --image sc-demo-storage-identity:latest ./
    
  3. Veja a imagem no seu registo de contentores usando o az acr repository list comando. Substitua o <registryname> pelo nome do seu registo.

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

Executar aplicativo e testar conexão

  1. Substitua os seguintes marcadores de posição no ficheiro pod.yaml da sua pasta local da app:

    • <YourContainerImage>: Substitua pelo nome da imagem no seu registo de contentores, por exemplo <registryname>.azurecr.io/sc-demo-storage-identity:latest.
    • <ServiceAccountCreatedByServiceConnector>: Substituir pelo Service Connector da conta de serviço criado após a criação da ligação. Pode verificar o nome da conta de serviço na página do seu Conector de Serviço do cluster AKS no portal Azure.
    • <SecretCreatedByServiceConnector>: Substituir pelo Conector de Serviço secreto criado após a criação da ligação. Pode verificar o nome da conta de serviço na página do seu Conector de Serviço do cluster AKS no portal Azure.
  2. Implante o pod no seu cluster usando kubectl apply. O comando cria um pod nomeado sc-demo-storage-identity no namespace padrão do seu cluster AKS.

    kubectl apply -f pod.yaml
    
  3. Verifique se a implementação foi bem-sucedida visualizando o pod usando kubectl.

    kubectl get pod/sc-demo-storage-identity
    
  4. Verifique se a ligação está estabelecida visualizando os registos usando kubectl.

    kubectl logs pod/sc-demo-storage-identity
    

Limpar recursos

Se já não precisares dos recursos Azure que criaste para este tutorial, podes apagá-los eliminando o grupo de recursos MyResourceGroup.

az group delete \
  --resource-group MyResourceGroup