Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
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
- Suscripción a Azure. Si no tiene una, puede crear una cuenta gratuita.
- La CLI de Azure instalada
- Un clúster AKS con:
- Identidad de carga de trabajo habilitada
- Identidad administrada creada en la misma suscripción
- Una cuenta de servicio de Kubernetes
- Credencial de identidad federada
- Extensión dapr instalada en el clúster de AKS
- kubectl instalado localmente
Clonación del repositorio
Clone el repositorio de inicio rápido de Dapr mediante el
git clonecomando .git clone https://github.com/Azure-Samples/dapr-aks-extension-quickstart.gitCambie 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.
Complete la información recomendada según la guía de inicio rápido Crear una instancia de Azure Managed Redis.
Seleccione Crear para iniciar la implementación de la instancia de Redis.
Comprobación de la información del recurso
Una vez implementado el recurso de Redis, vaya a su página de información general.
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.
- 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:
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 EnabledRecupere 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.
En el menú del recurso, en Configuración, seleccione Redes.
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
En el editor de código preferido, vaya al directorio deploy del repositorio de ejemplo y abra redis.yaml.
En
redisHost, sustituya el valor del marcador de posición<REDIS_HOST>:10000por el nombre de host de Azure Managed Redis que guardó antes en Azure Portal.- name: redisHost value: <your-cache-name>.<region>.redis.azure.net:10000Cree 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
Vaya al
deploydirectorio y abra workload-identity.yaml.Reemplace
<MANAGED_IDENTITY_CLIENT_ID>por el identificador de cliente de la identidad administrada asignada por el usuario que creó.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
Aplique la implementación de la aplicación de Node.js al clúster mediante el comando
kubectl apply.kubectl apply -f ./deploy/node.yamlLas 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/nodeappAcceda al servicio mediante el comando
kubectl get svc.kubectl get svc nodeappTome nota del
EXTERNAL-IPen la salida y configúrelo como una variable de entorno.export EXTERNAL_IP=<EXTERNAL-IP>
Compruebe el servicio de Node.js
Use
curlpara llamar al servicio con suEXTERNAL-IP.curl $EXTERNAL_IP/portsSalida de ejemplo
{"DAPR_HTTP_ENDPOINT":"http://localhost:3500","DAPR_GRPC_ENDPOINT":"http://localhost:50001"}Envíe una orden a la aplicación.
curl --request POST --data "@sample.json" --header Content-Type:application/json $EXTERNAL_IP/neworderConfirme la orden.
curl $EXTERNAL_IP/orderSalida 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
Implemente la aplicación de Python en el clúster de Kubernetes usando el comando
kubectl apply.kubectl apply -f ./deploy/python.yamlLas 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.
Obtenga los registros de la aplicación de Node.js mediante el comando
kubectl logs.kubectl logs --selector=app=node -c node --tail=-1Salida 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 stateUsando
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/orderDeberí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>