Tutorial: Conexión a Azure Cache for Redis o Azure Managed Redis desde la aplicación hospedada en Azure Kubernetes Service

En este tutorial, usará este ejemplo para conectarse con una instancia de Azure Cache for Redis o Azure Managed Redis.

Prerrequisitos

Importante

En este tutorial se supone que está familiarizado con conceptos básicos de Kubernetes, como contenedores, pods y servicio.

Configuración de una instancia de Azure Cache Redis

  1. Cree una nueva instancia de Azure Cache for Redis mediante Azure Portal o la herramienta de la CLI preferida. Use la guía de inicio rápido para empezar. De forma alternativa, también puede crear una instancia de Azure Managed Redis.

    En este tutorial, use una caché estándar de C1. Captura de pantalla de la creación de una caché C1 estándar en Azure Portal

  2. Complete los pasos para crear la memoria caché.

  3. Una vez creada la instancia de Redis Cache, vaya a la pestaña de Autenticación. Seleccione la identidad administrada asignada al usuario que desea utilizar para conectarse a su instancia de Redis Cache y, luego, seleccione Guardar.

  4. Como alternativa, puede ir a Configuración de acceso a datos en el menú Recurso para crear un nuevo usuario de Redis con la identidad administrada asignada por el usuario para conectarse a la memoria caché.

  5. Tome nota del nombre de usuario del usuario de Redis desde el portal. Use este nombre de usuario con la carga de trabajo de AKS.

Ejecución local de la muestra

Para ejecutar este ejemplo localmente, configure la entidad de seguridad de usuario como usuario de Redis en la instancia de Redis. El ejemplo de código usa la entidad de seguridad de usuario a través de DefaultAzureCredential para conectarse a la instancia de Redis.

Para eliminar el clúster de AKS

Siga estos pasos para configurar una identidad de carga de trabajo para el clúster de AKS.

Después, complete los siguientes pasos:

  • Habilitación del emisor de OIDC y la identidad de carga de trabajo
  • Omita el paso para crear una identidad administrada asignada por el usuario si ya ha creado la identidad administrada. Si crea una nueva identidad administrada, asegúrese de crear un nuevo usuario de Redis para la identidad administrada y asignar los permisos de acceso a datos adecuados.
  • Creación de una cuenta de Kubernetes Service anotada con el identificador de cliente de la identidad administrada asignada por el usuario
  • Cree una credencial de identidad federada para su clúster AKS.

Configuración de la carga de trabajo que se conecta a Azure Cache for Redis

A continuación, configure la carga de trabajo de AKS para conectarse a Azure Cache for Redis después de configurar el clúster de AKS.

  1. Descargue el código de la aplicación de ejemplo.

  2. Construye y empuja la imagen docker a tu Azure Container Registry usando el comando az acr build.

     az acr build --image sample/connect-from-aks-sample:1.0 --registry yourcontainerregistry --file Dockerfile .
    
  3. Adjunte su registro de contenedores a su clúster AKS utilizando el siguiente comando:

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

Evaluación de la carga de trabajo

En esta sección, primero instalará la CLI de Kubernetes y, después, se conectará a un clúster de AKS.

Instalación de la CLI de Kubernetes

Use la CLI de Kubernetes, kubectl, para conectarse al clúster de Kubernetes desde el equipo local. Si se ejecuta localmente, puede usar el siguiente comando para instalar kubectl.

az aks install-cli

Si usa Azure Cloud Shell, kubectl ya está instalado y puede omitir este paso.

Conectarse al clúster AKS

  1. Use el portal para copiar el grupo de recursos y el nombre del clúster para su clúster AKS. Para configurar kubectl a fin de que se conecte al clúster de AKS, use el siguiente comando con el grupo de recursos y el nombre de clúster:

    az aks get-credentials --resource-group myResourceGroup --name myClusterName
    
  2. Para comprobar que puede conectarse al clúster, ejecute el siguiente comando:

    kubectl get nodes
    

    Debería ver una salida similar en la que se muestra la lista de los nodos del clúster.

    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
    

Ejecute la carga de trabajo en la prueba

  1. El siguiente código describe el archivo de especificación de pods que se utiliza para ejecutar nuestra carga de trabajo. Tenga en cuenta que el pod tiene la etiqueta azure.workloadidentity/use: «true» y está anotado con serviceAccountName como requiere la identidad de carga de trabajo AKS. Si utiliza la autenticación mediante clave de acceso, sustituya el valor de las variables de entorno AUTHENTICATION_TYPE, REDIS_HOSTNAME, REDIS_ACCESSKEY y REDIS_PORT. Para la instancia Azure Managed Redis, establezca el valor de REDIS_PORT en 10 000.

     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. Guarde este archivo como podspec.yaml y, a continuación, aplíquelo al clúster de AKS mediante la ejecución del comando folloWing:

    kubectl apply -f podspec.yaml
    

    Obtiene una respuesta que indica que se creó el pod:

    pod/entrademo-pod created
    
  3. Para probar la aplicación, ejecute el siguiente comando para comprobar si el pod se está ejecutando:

    kubectl get pods
    

    Verá que el pod se ejecuta correctamente como:

    NAME                       READY   STATUS      RESTARTS       AGE
    entrademo-pod              0/1     Completed   0              42s
    
  4. Dado que este tutorial es una aplicación de consola, debe comprobar los registros del pod para comprobar que se ejecutó según lo previsto mediante este comando.

    kubectl logs entrademo-app
    

    Verá los registros siguientes que indican que el pod se ha conectado correctamente a la instancia de Redis mediante la identidad administrada asignada por el usuario

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

Limpiar el clúster local

Para limpiar el clúster, ejecute el comando siguiente:

kubectl delete pod entrademo-pod

Limpieza de recursos

Si desea seguir usando los recursos que creó en este artículo, mantenga el grupo de recursos.

De lo contrario, si ya ha terminado con los recursos, puede eliminar el grupo de recursos de Azure que ha creado para evitar cargos.

Importante

La eliminación de un grupo de recursos es irreversible. Cuando elimine un grupo de recursos, todos los recursos contenidos en él se eliminan permanentemente. Asegúrese de no eliminar por accidente el grupo de recursos o los recursos equivocados. Si ha creado los recursos en un grupo de recursos existente que contiene recursos que desea conservar, puede eliminar cada recurso individualmente en lugar de eliminar el grupo de recursos.

Para eliminar un grupo de recursos

  1. Inicie sesión en Azure Portal y después seleccione Grupos de recursos.

  2. Seleccione el grupo de recursos que desea eliminar.

    Si hay muchos grupos de recursos, use el cuadro Filtro para cualquier campo... y escriba el nombre del grupo de recursos que creó para este artículo. Seleccione el grupo de recursos en la lista de resultados.

    Captura de pantalla que muestra una lista de grupos de recursos para eliminar en el panel de trabajo.

  3. Seleccione Eliminar grupo de recursos.

  4. Se le pedirá que confirme la eliminación del grupo de recursos. Escriba el nombre del grupo de recursos para confirmar y, después, seleccione Eliminar.

    Captura de pantalla que muestra un formulario que requiera el nombre del recurso para confirmar la eliminación.

Transcurridos unos instantes, el grupo de recursos y todos sus recursos se eliminan.