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

Neste tutorial, você aprenderá a usar o Service Connector para conectar uma conta Armazenamento do Azure a um pod em um cluster AKS (Serviço de Kubernetes do Azure) usando a identidade da carga de trabalho. Conclua as seguintes tarefas:

  • Crie um cluster do AKS e uma conta de Armazenamento do Azure.
  • Crie uma conexão entre o cluster do AKS e a conta Armazenamento do Azure usando o Service Connector.
  • Clone um aplicativo de exemplo que se conecta à conta Armazenamento do Azure do cluster do AKS.
  • Implante o aplicativo em um pod no cluster do AKS e teste a conexão.
  • Limpe os recursos.

Pré-requisitos

Criar recursos do Azure

  1. Entre no Azure executando az login e seguindo os prompts.

  2. Crie um grupo de recursos Azure a ser usado para este tutorial, substituindo o espaço reservado <region> por um valor válido. O location deve ser uma região Azure em que sua assinatura tenha cota de computação suficiente para os recursos de Azure e nenhuma restrição a nenhum dos serviços.

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

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

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

    az storage account create \
        --resource-group MyResourceGroup \
        --name <storageaccountname> \
        --sku Standard_LRS
    
  6. Crie um registro de contêiner Azure para hospedar a imagem de contêiner do aplicativo consumida pela definição de pod do AKS. Para obter mais informações, consulte Quickstart: Criar um registro de contêiner Azure usando o portal Azure. Execute o comando a seguir, substituindo <registryname> por um nome de 5 a 50 caracteres minúsculos ou numéricos e exclusivo em Azure.

    az acr create \
        --resource-group MyResourceGroup \
        --name <registryname> \
        --sku Standard
    
  7. Habilite o pull anônimo para que o cluster do AKS possa consumir as imagens do registro. Substitua o marcador <registryname> pelo nome do seu registro.

    az acr update \
        --resource-group MyResourceGroup \
        --name <registryname> \
        --anonymous-pull-enabled
    
  8. Execute o comando a seguir para criar uma identidade gerenciada atribuída pelo usuário que a criação da conexão de serviço pode usar para habilitar a identidade da carga de trabalho para cargas de trabalho do AKS. Para obter mais informações, consulte Manage identidades gerenciadas atribuídas pelo usuário usando o portal Azure.

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

Criar uma conexão de serviço usando o Conector de Serviço

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

Execute o comando CLI do Azure a seguir para criar uma conexão de serviço com a conta de armazenamento Azure. Substitua <storageaccountname> pelo nome da conta de armazenamento e <user-identity-resource-id> pela ID do recurso de identidade gerenciada atribuída pelo usuário.

Você pode obter a ID de recurso da identidade gerenciada atribuída ao usuário a partir da saída do comando az identity create anterior, 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 que a conexão é criada, a página conector de serviço do portal Azure mostra informações sobre a nova conexão. Você pode usar essas informações ao editar o arquivo pod.yaml mais adiante neste tutorial.

Screenshot do portal Azure, exibindo recursos do Kubernetes criados pelo Service Connector.

Criar o aplicativo de exemplo

  1. Clone o repositório de exemplo e altere para o diretório que contém o aplicativo de exemplo. Execute 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. Compile e envie por push as imagens para o registro de contêiner usando o az acr build comando. Substitua o <registryname> marcador de posição pelo nome do registro.

    az acr build --registry <registryname> --image sc-demo-storage-identity:latest ./
    
  3. Exiba a imagem no registro de contêiner usando o az acr repository list comando. Substitua o <registryname> marcador de posição pelo nome do registro.

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

Executar o aplicativo e testar a conexão

  1. Substitua os seguintes espaços reservados no arquivo pod.yaml na pasta do aplicativo local:

    • <YourContainerImage>: substitua pelo nome da imagem no registro de contêiner, por exemplo <registryname>.azurecr.io/sc-demo-storage-identity:latest.
    • <ServiceAccountCreatedByServiceConnector>: substitua pelo Service Connector da conta de serviço criado após a criação da conexão. Você pode verificar o nome da conta de serviço na página do Conector de Serviço do cluster do AKS no portal do Azure.
    • <SecretCreatedByServiceConnector>: substitua pelo conector de serviço secreto criado após a criação da conexão. Você pode verificar o nome da conta de serviço na página do Conector de Serviço do cluster do AKS no portal do Azure.
  2. Implante o pod em seu cluster usando kubectl apply. O comando cria um pod chamado sc-demo-storage-identity no namespace padrão de seu cluster do AKS.

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

    kubectl get pod/sc-demo-storage-identity
    
  4. Verifique se a conexão está estabelecida exibindo os logs usando kubectl.

    kubectl logs pod/sc-demo-storage-identity
    

Limpar os recursos

Se você não precisar mais dos recursos Azure criados para este tutorial, poderá excluí-los excluindo o grupo de recursos MyResourceGroup.

az group delete \
  --resource-group MyResourceGroup