Compartilhar via


Tutorial: Conectar-se ao Cache do Azure para Redis ou Redis Gerenciado do Azure do seu aplicativo hospedado no Serviço de Kubernetes do Azure

Neste tutorial, você usará este exemplo para se conectar ao Azure Cache para Redis ou a uma instância do Azure Managed Redis.

Pré-requisitos

Importante

Este tutorial pressupõe que você esteja familiarizado com conceitos básicos do Kubernetes, como contêineres, pods e serviço.

Configurar uma instância do Cache Redis do Azure

  1. Crie uma nova instância do Cache do Azure para Redis usando o portal do Azure ou sua ferramenta de CLI preferida. Use o guia de início rápido para começar. Alternativamente, você também pode criar uma instância do Redis Gerenciado do Azure.

    Para este tutorial, use um cache C1 Standard. Captura de tela da criação de um cache C1 Standard no portal do Azure

  2. Conclua as etapas para criar o cache.

  3. Depois que a instância do cache Redis for criada, navegue até a guia Autenticação. Selecione a identidade gerenciada atribuída ao usuário que você deseja usar para se conectar à instância do cache Redis e, em seguida, selecione Salvar.

  4. Como alternativa, você pode navegar até a Configuração de Acesso a Dados no menu Recurso para criar um novo usuário do Redis com sua identidade gerenciada atribuída pelo usuário para se conectar ao cache.

  5. Anote o nome de usuário do seu usuário do Redis no portal. Use esse nome de usuário com a carga de trabalho do AKS.

Executar o exemplo localmente

Para executar este exemplo localmente, configure sua entidade de segurança de usuário como um Usuário Redis em sua instância do Redis. O exemplo de código usa sua entidade de usuário por meio de DefaultAzureCredential para se conectar à instância do Redis.

Configurar o cluster do AKS

Siga estas etapas para configurar uma identidade de carga de trabalho para o cluster do AKS.

Em seguida, conclua as seguintes etapas:

  • Habilitar o emissor do OIDC e a identidade da carga de trabalho
  • Ignore a etapa para criar a identidade gerenciada atribuída pelo usuário se você já tiver criado sua identidade gerenciada. Se você criar uma nova identidade gerenciada, certifique-se de criar um novo Usuário Redis para sua identidade gerenciada e atribuir permissões de acesso a dados apropriadas.
  • Criar uma conta do Serviço do Kubernetes anotada com a ID do cliente da identidade gerenciada atribuída pelo usuário
  • Crie uma credencial de identidade federada para o cluster do AKS.

Configurar sua carga de trabalho que se conecta ao Cache do Azure para Redis

Em seguida, configure a carga de trabalho do AKS para se conectar ao Cache do Azure para Redis depois de configurar o cluster do AKS.

  1. Baixe o código do aplicativo de exemplo.

  2. Crie e envie por push a imagem do Docker para o Registro de Contêiner do Azure usando o comando az acr build.

     az acr build --image sample/connect-from-aks-sample:1.0 --registry yourcontainerregistry --file Dockerfile .
    
  3. Anexe o registro de contêiner ao cluster do AKS usando o seguinte comando:

    az aks update --name clustername --resource-group mygroup --attach-acr youracrname
    

Implantar sua carga de trabalho

Nesta seção, primeiro você instala a CLI do Kubernetes e, em seguida, conecta-se a um cluster do AKS.

Instalar a CLI Kubernetes

Use a CLI do Kubernetes, kubectl, para se conectar ao cluster Kubernetes do computador local. Se você estiver executando localmente, poderá usar o comando a seguir para instalar o kubectl.

az aks install-cli

Se você usar Azure Cloud Shell, o kubectl já estará instalado e você poderá ignorar esta etapa.

Conectar-se ao cluster do AKS

  1. Use o portal para copiar o grupo de recursos e o nome do cluster para o cluster do AKS. Para configurar o kubectl para conectar-se ao seu cluster do AKS, use o seguinte comando com seu grupo de recursos e nome do cluster:

    az aks get-credentials --resource-group myResourceGroup --name myClusterName
    
  2. Verifique se você consegue se conectar ao cluster executando o seguinte comando:

    kubectl get nodes
    

    Você deverá ver uma saída semelhante mostrando a lista de nós de cluster.

    NAME                                STATUS   ROLES   AGE   VERSION
    aks-agentpool-21274953-vmss000001   Ready    agent   1d    v1.29.7
    aks-agentpool-21274953-vmss000003   Ready    agent   1d    v1.29.7
    aks-agentpool-21274953-vmss000006   Ready    agent   1d    v1.29.7
    

Executar sua carga de trabalho

  1. O código a seguir descreve o arquivo de especificação do pod que você usa para executar nossa carga de trabalho. Observe que o pod tem o rótulo azure.workloadidentity/use: "true" e é anotado com serviceAccountName, conforme exigido pela identidade da carga de trabalho do AKS. Quando usar a autenticação de chave de acesso, substitua o valor das variáveis de ambiente AUTHENTICATION_TYPE, REDIS_HOSTNAME e REDIS_ACCESSKEY e REDIS_PORT. Para a instância do Redis Gerenciado do Azure, defina o valor de REDIS_PORT como 10000.

     apiVersion: v1
     kind: Pod
     metadata:
       name: entrademo-pod
       labels:
         azure.workload.identity/use: "true"  # Required. Only pods with this label can use workload identity.
     spec:
       serviceAccountName: workload-identity-sa
       containers:
       - name: entrademo-container
         image: youracr.azurecr.io/connect-from-aks-sample:1.0
         imagePullPolicy: Always
         command: ["dotnet", "ConnectFromAKS.dll"] 
         resources:
           limits:
             memory: "256Mi"
             cpu: "500m"
           requests:
             memory: "128Mi"
             cpu: "250m"
         env:
              - name: AUTHENTICATION_TYPE
                value: "MANAGED_IDENTITY" # change to ACCESS_KEY to authenticate using access key
              - name: REDIS_HOSTNAME
                value: "your redis hostname"
              - name: REDIS_ACCESSKEY
                value: "your access key" 
              - name: REDIS_PORT
                value: "6380" # change to 10000 for Azure Managed Redis
       restartPolicy: Never
    
    
  2. Salve esse arquivo como podspec.yaml e aplique-o ao cluster do AKS executando o comando a seguir:

    kubectl apply -f podspec.yaml
    

    Você obtém uma resposta indicando que o pod foi criado:

    pod/entrademo-pod created
    
  3. Para testar o aplicativo, execute o seguinte comando para marcar se o pod estiver em execução:

    kubectl get pods
    

    Você verá seu pod em execução com êxito, como:

    NAME                       READY   STATUS      RESTARTS       AGE
    entrademo-pod              0/1     Completed   0              42s
    
  4. Como este tutorial é um aplicativo de console, você precisa verificar os logs do pod para verificar se ele foi executado conforme o esperado usando esse comando.

    kubectl logs entrademo-app
    

    Você verá os logs a seguir que indicam que o pod foi conectado com êxito à instância do Redis usando a identidade gerenciada atribuída pelo usuário

    Connecting with managed identity..
    Retrieved value from Redis: Hello, Redis!
    Success! Previous value: Hello, Redis!
    

Limpar seu cluster

Para limpar o cluster, execute este comando:

kubectl delete pod entrademo-pod

Limpar os recursos

Se você quiser continuar a usar os recursos criados neste artigo, mantenha o grupo de recursos.

Caso contrário, se tiver terminado de usar os recursos, é possível excluir o grupo de recursos do Azure criado para evitar encargos.

Importante

A exclusão de um grupo de recursos é irreversível. Ao excluir o grupo de recursos, todos os recursos nele são excluídos permanentemente. Certifique-se de que não exclua acidentalmente o grupo de recursos ou os recursos incorretos. Se você criou os recursos dentro de um grupo de recursos existente que contém recursos que você deseja manter, é possível excluir cada recurso individualmente em vez de excluir o grupo de recursos.

Para excluir um grupo de recursos

  1. Entre no portal do Azure e selecione Grupos de recursos.

  2. Selecione o grupo de recursos que você quer excluir.

    Se houver muitos grupos de recursos, use a caixa Filtrar por qualquer campo... digite o nome do grupo de recursos que você criou para este artigo. Selecione o grupo de recursos na lista de resultados.

    Captura de tela mostrando uma lista de grupos de recursos a serem excluídos no painel de trabalho.

  3. Selecione Excluir grupo de recursos.

  4. Você receberá uma solicitação para confirmar a exclusão do grupo de recursos. Digite o nome do grupo de recursos para confirmar e selecione Excluir.

    Captura de tela mostrando um formulário que requer o nome do recurso para confirmar a exclusão.

Após alguns instantes, o grupo de recursos, e todos os recursos nele são excluídos.