Partilhar via


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

Neste tutorial, você usa este exemplo para se conectar a uma instância do Cache do Azure para Redis ou 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 Azure Cache Redis

  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. Como alternativa, você também pode criar uma instância do Azure Managed Redis.

    Para este tutorial, use um cache C1 padrão. Captura de ecrã a mostrar a criação de uma 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 à sua instância de cache Redis e selecione Salvar.

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

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

Executar amostra localmente

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

Configure seu cluster AKS

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

Em seguida, conclua as seguintes etapas:

  • Habilitar o emissor OIDC e a identidade da carga de trabalho
  • Ignore a etapa para criar a identidade gerenciada atribuída ao 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.
  • Crie uma conta do Serviço Kubernetes anotada com o ID do cliente da identidade gerenciada atribuída ao usuário
  • Crie uma credencial de identidade federada para o seu cluster AKS.

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

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

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

  2. Crie e envie por push a imagem do docker para seu 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 seu registro de contêiner ao cluster AKS usando o seguinte comando:

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

Implante sua carga de trabalho

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

Instalar a CLI do Kubernetes

Use a CLI do Kubernetes, kubectl, para se conectar ao cluster do Kubernetes a partir do seu computador local. Se você estiver executando localmente, então você pode usar o seguinte comando para instalar o kubectl.

az aks install-cli

Se você usa o Azure Cloud Shell, o kubectl já está instalado e você pode ignorar esta etapa.

Conecte-se ao cluster AKS

  1. Use o portal para copiar o grupo de recursos e o nome do cluster para o cluster AKS. Para configurar o kubectl para se conectar ao cluster AKS, use o seguinte comando com o grupo de recursos e o 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ê verá uma saída semelhante mostrando a lista dos nós do 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
    

Execute 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 AKS. Ao usar a autenticação de chave de acesso, substitua o valor de AUTHENTICATION_TYPE, REDIS_HOSTNAME, REDIS_ACCESSKEY e REDIS_PORT variáveis de ambiente. Para a instância do Azure Managed Redis, 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 este arquivo como podspec.yaml e aplique-o ao seu cluster AKS executando o comando folloWing:

    kubectl apply -f podspec.yaml
    

    Você recebe uma resposta indicando que seu pod foi criado:

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

    kubectl get pods
    

    Você vê seu pod funcionando com sucesso 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 este comando.

    kubectl logs entrademo-app
    

    Você vê os seguintes logs que indicam que seu pod se conectou com êxito à sua 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!
    

Limpe o cluster

Para limpar o cluster, execute os seguintes comandos:

kubectl delete pod entrademo-pod

Limpeza de recursos

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

Caso contrário, se tiver terminado os recursos, pode eliminar o grupo de recursos do Azure que criou para evitar cobranças.

Importante

A eliminação de um grupo de recursos é irreversível. Quando elimina um grupo de recursos, todos os recursos nele contidos são eliminados permanentemente. Certifique-se de que não elimina acidentalmente grupos de recursos ou recursos errados. Se você criou os recursos dentro de um grupo de recursos existente que contém recursos que deseja manter, poderá excluir cada recurso individualmente em vez de excluir o grupo de recursos.

Para eliminar um grupo de recursos

  1. Inicie sessão no Portal do Azure e selecione Grupos de recursos.

  2. Selecione o grupo de recursos que pretende eliminar.

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

    Captura de ecrã a mostrar uma lista de grupos de recursos a eliminar no painel de trabalho.

  3. Selecione Eliminar grupo de recursos.

  4. É-lhe pedido que confirme a eliminação do grupo de recursos. Escreva o nome do grupo de recursos para confirmar e, em seguida, selecione Eliminar.

    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 respetivos recursos são eliminados.