Inicio rápido: Implementa una aplicación mediante la extensión Dapr para Azure Kubernetes Service (AKS) o Kubernetes con compatibilidad con Arc

En esta guía de inicio rápido, utilizará la extensión Dapr en un clúster de Kubernetes habilitado para AKS o Arc. Se implementa un ejemplo de hello world, que consta de una aplicación de Python que genera mensajes y una aplicación Node.js que consume y conserva los mensajes.

Requisitos previos

Clonación del repositorio

  1. Clone el repositorio de inicio rápido de Dapr mediante el git clone comando .

    git clone https://github.com/Azure-Samples/dapr-aks-extension-quickstart.git
    
  2. Cambie al directorio dapr-aks-extension-quickstart.

    cd dapr-aks-extension-quickstart
    

Creación y configuración de un almacén de Redis

Abra el portal de Azure para iniciar el flujo de creación de Azure Managed Redis.

  1. Complete la información recomendada según la guía de inicio rápido Crear una instancia de Azure Managed Redis.

  2. Seleccione Crear para iniciar la implementación de la instancia de Redis.

Comprobación de la información del recurso

  1. Una vez implementado el recurso de Redis, vaya a su página de información general.

  2. Tome nota de:

    • El nombre del host, que se encuentra en la sección Essentials de la página de resumen del recurso. El formato de nombre de host es similar a: <your-cache-name>.<region>.redis.azure.net.
    • El puerto SSL, que se encuentra en Configuración>Avanzada. El valor predeterminado es 10000.
  3. En el terminal, habilite la autenticación de clave de acceso en la base de datos predeterminada.

    az redisenterprise database update \
        --cluster-name <REDIS_NAME> \
        --resource-group <RESOURCE_GROUP> \
        --access-keys-auth Enabled
    
  4. Recupere la clave principal de la base de datos predeterminada y guárdela en una variable de entorno.

    export REDIS_PRIMARY_KEY=$(az redisenterprise database list-keys \
        --cluster-name <REDIS_NAME> \
        --resource-group <RESOURCE_GROUP> \
        --query primaryKey \
        -o tsv)
    

Habilitación del acceso a la red pública

En este escenario, la instancia de Redis administrada de Azure usa el acceso a la red pública. Asegúrese de limpiar los recursos después de finalizar con este inicio rápido.

  1. En el menú del recurso, en Configuración, seleccione Redes.

  2. Establezca Acceso a la red pública en Habilitado.

Configuración de los componentes de Dapr

En el archivo redis.yaml , configure el componente para que use la autenticación de clave de acceso con TLS.

- name: redisPassword
    secretKeyRef:
        name: redis-secret
        key: redisPassword
- name: useEntraID
    value: "false"
- name: enableTLS
  value: true
  1. En el editor de código preferido, vaya al directorio deploy del repositorio de ejemplo y abra redis.yaml.

  2. En redisHost, sustituya el valor del marcador de posición <REDIS_HOST>:10000 por el nombre de host de Azure Managed Redis que guardó antes en Azure Portal.

    - name: redisHost
      value: <your-cache-name>.<region>.redis.azure.net:10000
    
  3. Cree el secreto de Kubernetes utilizado por redisPassword.

    kubectl create secret generic redis-secret \
        --from-literal=redisPassword="$REDIS_PRIMARY_KEY"
    

Aplicación de la configuración

Aplique el archivo redis.yaml mediante el kubectl apply comando .

kubectl apply -f ./deploy/redis.yaml

Salida prevista

component.dapr.io/statestore created

Implementación de la aplicación de Node.js con el sidecar de Dapr

Configuración de la aplicación Node.js

  1. Vaya al deploy directorio y abra workload-identity.yaml.

  2. Reemplace <MANAGED_IDENTITY_CLIENT_ID> por el identificador de cliente de la identidad administrada asignada por el usuario que creó.

  3. Aplique el manifiesto de la cuenta de servicio antes de implementar manifiestos de aplicación.

    kubectl apply -f ./deploy/workload-identity.yaml
    

En node.yaml, la especificación del pod usa la etiqueta de identidad de la carga de trabajo y la cuenta de servicio compartida workload-sa:

labels:
  app: node
  azure.workload.identity/use: "true"

Aplicación de la configuración

  1. Aplique la implementación de la aplicación de Node.js al clúster mediante el comando kubectl apply.

    kubectl apply -f ./deploy/node.yaml
    
  2. Las implementaciones de Kubernetes son asincrónicas, así que antes de continuar con el paso siguiente, compruebe que se ha completado la implementación con el siguiente comando:

    kubectl rollout status deploy/nodeapp
    
  3. Acceda al servicio mediante el comando kubectl get svc.

    kubectl get svc nodeapp
    
  4. Tome nota del EXTERNAL-IP en la salida y configúrelo como una variable de entorno.

    export EXTERNAL_IP=<EXTERNAL-IP>
    

Compruebe el servicio de Node.js

  1. Use curl para llamar al servicio con su EXTERNAL-IP.

    curl $EXTERNAL_IP/ports
    

    Salida de ejemplo

    {"DAPR_HTTP_ENDPOINT":"http://localhost:3500","DAPR_GRPC_ENDPOINT":"http://localhost:50001"}
    
  2. Envíe una orden a la aplicación.

    curl --request POST --data "@sample.json" --header Content-Type:application/json $EXTERNAL_IP/neworder
    
  3. Confirme la orden.

    curl $EXTERNAL_IP/order
    

    Salida prevista

    { "orderId": "42" }
    

Implementación de la aplicación de Python con el sidecar de Dapr

Configuración de la aplicación de Python

En python.yaml, la especificación del pod usa la etiqueta de identidad de carga de trabajo y la cuenta de servicio compartida workload-sa:

labels:
    app: python
    azure.workload.identity/use: "true"

Aplicación de la configuración

  1. Implemente la aplicación de Python en el clúster de Kubernetes usando el comando kubectl apply.

    kubectl apply -f ./deploy/python.yaml
    
  2. Las implementaciones de Kubernetes son asincrónicas, así que antes de continuar con el paso siguiente, compruebe que se ha completado la implementación con el siguiente comando:

    kubectl rollout status deploy/pythonapp
    

Observación de mensajes y confirmación de persistencia

Ahora que se han implementado las aplicaciones de Node.js y Python, puede ver cómo llegan los mensajes.

  1. Obtenga los registros de la aplicación de Node.js mediante el comando kubectl logs.

    kubectl logs --selector=app=node -c node --tail=-1
    

    Salida prevista

    Got a new order! Order ID: 1
    Successfully persisted state
    Got a new order! Order ID: 2
    Successfully persisted state
    Got a new order! Order ID: 3
    Successfully persisted state
    
  2. Usando curl, llame al punto de conexión de la orden de la aplicación de Node.js para obtener la orden más reciente.

    curl $EXTERNAL_IP/order
    

    Debería ver la salida de JSON más reciente en la respuesta.

Limpieza de recursos

Si ya no tiene previsto usar los recursos de este inicio rápido, puede quitar el grupo de recursos, el clúster, el espacio de nombres y todos los recursos relacionados mediante el comando az group delete .

az group delete --name <your-resource-group>

Paso siguiente