Extensión de Dapr para Azure Kubernetes Service (AKS) y Kubernetes habilitado para Arc

Dapr es un entorno de ejecución portátil controlado por eventos que simplifica la creación de aplicaciones resistentes, sin estado y con estado que se ejecutan en la nube y en el perímetro, y abarca la diversidad de lenguajes y marcos de desarrollador. Al aplicar las ventajas de una arquitectura de tipo sidecar, Dapr le ayuda a abordar los desafíos que conlleva la creación de microservicios y mantiene independiente la plataforma de código. En concreto, ayuda a resolver problemas relacionados con los servicios:

  • Que llaman a otros servicios de forma confiable y segura
  • Que crean aplicaciones controladas por eventos con pub-sub
  • Que crean aplicaciones portátiles en varios servicios en la nube y hosts (por ejemplo, Kubernetes frente a una máquina virtual)

Al usar la extensión de Dapr de AKS para aprovisionar Dapr en el clúster de AKS o Kubernetes habilitado para Arc, se elimina la sobrecarga de descargar las herramientas de Dapr e instalar y administrar manualmente el entorno de ejecución en el clúster de AKS. Además, la extensión ofrece compatibilidad con todas las funcionalidades de configuración nativas de Dapr a través de argumentos de línea de comandos sencillos.

Nota

Si tiene previsto instalar Dapr en un entorno de producción de Kubernetes, consulte la página de documentación Directrices de Dapr para el uso de producción.

Cómo funciona

La extensión de Dapr usa la CLI de Azure para aprovisionar el plano de control de Dapr en el clúster de AKS o Kubernetes habilitado para Arc. Esto creará lo siguiente:

  • dapr-operator: administra las actualizaciones de componentes y los puntos de conexión de servicios de Kubernetes para Dapr (almacenes de estado, pub/subs, etc.).
  • dapr-sidecar-injector: inserta Dapr en pods de implementación anotados y agrega las variables de entorno DAPR_HTTP_PORT y DAPR_GRPC_PORT para permitir que las aplicaciones definidas por el usuario se comuniquen fácilmente con Dapr sin codificar de forma rígida los valores de puerto de Dapr.
  • dapr-placement: solo se usa para actores. Crea tablas de asignación que asignan instancias de actor a pods.
  • dapr-sentry: administra mTLS entre servicios y actúa como entidad de certificación. Para obtener más información, lea la Introducción a la seguridad.

Una vez instalado Dapr en el clúster, puede empezar a desarrollar con las API del bloque de creación de Dapr agregando algunas anotaciones a las implementaciones. Para obtener información general más detallada de las API de bloques de compilación y la mejor forma de usarlas, consulte la Introducción a los bloques de compilación de Dapr.

Advertencia

Si instala Dapr a través de la extensión de AKS o Kubernetes habilitado para Arc, nuestra recomendación es seguir usando la extensión para la administración futura de Dapr en lugar de la CLI de Dapr. La combinación de las dos herramientas puede provocar conflictos y generar un comportamiento no deseado.

Actualmente se admite

Versiones de Dapr

La compatibilidad con la extensión de Dapr varía en función de cómo administre el entorno de ejecución.

Autoadministrado
Para el entorno de ejecución autoadministrado, la extensión de Dapr admite:

El entorno de ejecución autoadministrado requiere que la actualización manual permanezca en la ventana de soporte técnico. Para actualizar Dapr a través de la extensión, siga las instrucciones de la instancia de actualización de la extensión.

Actualización automática
Al habilitar la actualización automática, la extensión Dapr se actualiza a la versión secundaria más reciente. Es posible que experimente cambios importantes entre las actualizaciones.

Componentes

Se admiten los componentes de Azure + código abierto. Los componentes alfa y beta se admiten a través del mejor esfuerzo.

Nubes o regiones

La nube de Global Azure es compatible con Arc en las siguientes regiones:

Region Compatibilidad con AKS Compatibilidad con Arc para Kubernetes
australiaeast ✔️ ✔️
australiasoutheast ✔️
canadacentral ✔️ ✔️
canadaeast ✔️ ✔️
centralindia ✔️ ✔️
centralus ✔️ ✔️
eastasia ✔️ ✔️
eastus ✔️ ✔️
eastus2 ✔️ ✔️
eastus2euap ✔️
francecentral ✔️ ✔️
germanywestcentral ✔️ ✔️
japaneast ✔️ ✔️
koreacentral ✔️ ✔️
northcentralus ✔️ ✔️
northeurope ✔️ ✔️
norwayeast ✔️
southafricanorth ✔️
southcentralus ✔️ ✔️
southeastasia ✔️ ✔️
swedencentral ✔️ ✔️
switzerlandnorth ✔️ ✔️
uksouth ✔️ ✔️
westcentralus ✔️ ✔️
westeurope ✔️ ✔️
westus ✔️ ✔️
westus2 ✔️ ✔️
westus3 ✔️ ✔️

Prerrequisitos

Configuración de la extensión de la CLI de Azure para las extensiones de clúster

Necesitará la extensión de la CLI de Azure k8s-extension. Para instalarla, ejecute los siguientes comandos:

az extension add --name k8s-extension

Si la extensión k8s-extension ya está instalada, puede actualizarla a su versión más reciente con el siguiente comando:

az extension update --name k8s-extension

Registro del proveedor de servicios KubernetesConfiguration

Si todavía no ha usado extensiones de clúster, es posible que tenga que registrar el proveedor de servicios en su suscripción. Puede consultar el estado de registro del proveedor mediante el comando [az provider list][az-provider-list], tal y como se muestra en el siguiente ejemplo:

az provider list --query "[?contains(namespace,'Microsoft.KubernetesConfiguration')]" -o table

El proveedor Microsoft.KubernetesConfiguration debería indicar Registered, tal y como se muestra en el siguiente ejemplo de salida:

Namespace                          RegistrationState    RegistrationPolicy
---------------------------------  -------------------  --------------------
Microsoft.KubernetesConfiguration  Registered           RegistrationRequired

Si el proveedor se muestra como NotRegistered, registre el proveedor con el comando az provider register tal como se muestra en el siguiente ejemplo:

az provider register --namespace Microsoft.KubernetesConfiguration

Creación de la extensión e instalación de Dapr en el clúster de AKS o Kubernetes habilitado para Arc

Al instalar la extensión de Dapr, use el valor de marca que corresponde al tipo de clúster:

  • Clúster de AKS: --cluster-type managedClusters.
  • Clúster de Kubernetes habilitado para Arc: --cluster-type connectedClusters.

Nota

Si usa Dapr OSS en el clúster de AKS y desea instalar la extensión de Dapr para AKS, obtenga más información sobre cómo migrar correctamente a la extensión de Dapr.

Cree la extensión de Dapr, que instala Dapr en el clúster de AKS o Kubernetes habilitado para Arc. Por ejemplo, para un clúster de AKS:

az k8s-extension create --cluster-type managedClusters \
--cluster-name myAKSCluster \
--resource-group myResourceGroup \
--name dapr \
--extension-type Microsoft.Dapr

Tiene la opción de permitir que Dapr actualice automáticamente su versión menor especificando el parámetro --auto-upgrade-minor-version y estableciendo el valor en true:

--auto-upgrade-minor-version true

Al configurar la extensión, puede elegir instalar Dapr desde un --release-train específico. Especifique uno de los dos valores de entrenamiento de versión:

Value Descripción
stable Predeterminada.
dev Las versiones preliminares pueden contener características experimentales. No son adecuadas para producción.

Por ejemplo:

--release-train stable

Parámetros de configuración

La extensión le permite establecer las opciones de configuración de Dapr mediante el parámetro --configuration-settings. Por ejemplo, para aprovisionar Dapr con alta disponibilidad (HA) habilitada, establezca el parámetro global.ha.enabled en true:

az k8s-extension create --cluster-type managedClusters \
--cluster-name myAKSCluster \
--resource-group myResourceGroup \
--name dapr \
--extension-type Microsoft.Dapr \
--auto-upgrade-minor-version true \
--configuration-settings "global.ha.enabled=true" \
--configuration-settings "dapr_operator.replicaCount=2"

Nota

Si los valores de configuración son confidenciales y deben protegerse, como, por ejemplo, la información relacionada con certificados, pase el parámetro --configuration-protected-settings y el valor se protegerá para que no se lea.

Si no se pasa ninguna configuración, los valores predeterminados de la configuración de Dapr son los siguientes:

  ha:
    enabled: true
    replicaCount: 3
    disruption:
      minimumAvailable: ""
      maximumUnavailable: "25%"
  prometheus:
    enabled: true
    port: 9090
  mtls:
    enabled: true
    workloadCertTTL: 24h
    allowedClockSkew: 15m

Para obtener una lista de las opciones disponibles, consulte Configuración de Dapr.

Obtención como destino una versión específica de Dapr

Nota

Dapr se admite con una ventana gradual, que incluye solo las versiones actuales y anteriores. Es su responsabilidad operativa mantenerse actualizado a estas versiones admitidas. Si tiene una versión más antigua de Dapr, es posible que deba realizar actualizaciones intermedias para llegar a una versión admitida.

Para instalar una versión específica de Dapr o revertir a una versión anterior, se usa el mismo argumento de línea de comandos. Establezca --auto-upgrade-minor-version en false y --version en la versión de Dapr que quiere instalar. Si se omite el parámetro version, la extensión instalará la versión más reciente de Dapr. Por ejemplo, para usar Dapr X.X.X:

az k8s-extension create --cluster-type managedClusters \
--cluster-name myAKSCluster \
--resource-group myResourceGroup \
--name dapr \
--extension-type Microsoft.Dapr \
--auto-upgrade-minor-version false \
--version X.X.X

Limitar la extensión a determinados nodos

En algunas configuraciones, es posible que solo quiera ejecutar Dapr en determinados nodos. Puede limitar la extensión pasando un nodeSelector en la configuración de la extensión. Si el elemento nodeSelector deseado contiene ., debe retirarlos del shell y la extensión. Por ejemplo, la configuración siguiente instalará Dapr solo en nodos con topology.kubernetes.io/zone: "us-east-1c":

az k8s-extension create --cluster-type managedClusters \
--cluster-name myAKSCluster \
--resource-group myResourceGroup \
--name dapr \
--extension-type Microsoft.Dapr \
--auto-upgrade-minor-version true \
--configuration-settings "global.ha.enabled=true" \
--configuration-settings "dapr_operator.replicaCount=2" \
--configuration-settings "global.nodeSelector.kubernetes\.io/zone: us-east-1c"

Para administrar el sistema operativo y la arquitectura, use las versiones admitidas de global.daprControlPlaneOs y la configuración global.daprControlPlaneArch:

az k8s-extension create --cluster-type managedClusters \
--cluster-name myAKSCluster \
--resource-group myResourceGroup \
--name dapr \
--extension-type Microsoft.Dapr \
--auto-upgrade-minor-version true \
--configuration-settings "global.ha.enabled=true" \
--configuration-settings "dapr_operator.replicaCount=2" \
--configuration-settings "global.daprControlPlaneOs=linux” \
--configuration-settings "global.daprControlPlaneArch=amd64”

Establecimiento de las actualizaciones automáticas de CRD

A partir de la versión 1.9.2 de Dapr, los CRD se actualizan automáticamente cuando se actualiza la extensión. Para deshabilitar esta configuración, puede establecer hooks.applyCrds en false.

az k8s-extension upgrade --cluster-type managedClusters \
--cluster-name myAKSCluster \
--resource-group myResourceGroup \
--name dapr \
--extension-type Microsoft.Dapr \
--auto-upgrade-minor-version true \
--configuration-settings "global.ha.enabled=true" \
--configuration-settings "dapr_operator.replicaCount=2" \
--configuration-settings "global.daprControlPlaneOs=linux” \
--configuration-settings "global.daprControlPlaneArch=amd64” \
--configuration-settings "hooks.applyCrds=false"

Configuración del espacio de nombres de la versión de Dapr

Puede configurar el espacio de nombres de las versiones. La extensión de Dapr se instala en el espacio de nombres dapr-systemde forma predeterminada. Para invalidarlo, use --release-namespace. Incluya --scope del clúster para redefinir el espacio de nombres.

az k8s-extension create \
--cluster-type managedClusters \
--cluster-name dapr-aks \
--resource-group dapr-rg \
--name my-dapr-ext \
--extension-type microsoft.dapr \
--release-train stable \
--auto-upgrade false \
--version 1.9.2 \
--scope cluster \
--release-namespace dapr-custom

Visualización de las opciones de configuración actuales

Use el comando az k8s-extension show para mostrar los valores de configuración actuales de Dapr:

az k8s-extension show --cluster-type managedClusters \
--cluster-name myAKSCluster \
--resource-group myResourceGroup \
--name dapr

Actualizar valores de configuración

Importante

Algunas opciones de configuración no se pueden modificar después de la creación. Los ajustes de estas opciones requieren la eliminación y la nueva creación de la extensión, que se aplica a las siguientes configuraciones:

  • global.ha.*
  • dapr_placement.*

La alta disponibilidad está habilitada de manera predeterminada. Para deshabilitarla, es necesario eliminar la extensión y volver a crearla.

Para actualizar los valores de configuración de Dapr, vuelva a crear la extensión con el estado deseado. Por ejemplo, suponga que hemos creado e instalado previamente la extensión con la siguiente configuración:

az k8s-extension create --cluster-type managedClusters \
--cluster-name myAKSCluster \
--resource-group myResourceGroup \
--name dapr \
--extension-type Microsoft.Dapr \
--auto-upgrade-minor-version true \  
--configuration-settings "global.ha.enabled=true" \
--configuration-settings "dapr_operator.replicaCount=2" 

Para actualizar el dapr_operator.replicaCount de dos a tres, use el siguiente comando:

az k8s-extension create --cluster-type managedClusters \
--cluster-name myAKSCluster \
--resource-group myResourceGroup \
--name dapr \
--extension-type Microsoft.Dapr \
--auto-upgrade-minor-version true \
--configuration-settings "global.ha.enabled=true" \
--configuration-settings "dapr_operator.replicaCount=3"

Establecimiento del proxy de salida para la extensión de Dapr para Azure Arc local

Para usar un proxy de salida con la extensión Dapr para AKS, es necesario:

  1. Establecer las variables de entorno de proxy mediante las anotaciones dapr.io/env:
    • HTTP_PROXY
    • HTTPS_PROXY
    • NO_PROXY
  2. Instalar el certificado de proxy en sidecar.

Cumplimiento de los requisitos de red

La extensión Dapr para AKS y Arc para Kubernetes requiere direcciones URL de salida en https://:443 para funcionar. Además de la dirección URL de https://mcr.microsoft.com/daprio para extraer artefactos de Dapr, compruebe que ha incluido las direcciones URL de salida necesarias para AKS o Arc para Kubernetes.

Solución de errores de la extensión

Si la extensión no puede crear o actualizar, pruebe sugerencias y soluciones en la guía de solución de problemas de la extensión de Dapr.

Solución de problemas de Dapr

Solucione los errores de Dapr a través de la guía de incidencias y soluciones comunes de Dapr.

Eliminación de la extensión

Si necesita eliminar la extensión y quitar Dapr del clúster de AKS, puede usar el siguiente comando:

az k8s-extension delete --resource-group myResourceGroup --cluster-name myAKSCluster --cluster-type managedClusters --name dapr

Pasos siguientes

  • Una vez que haya aprovisionado correctamente Dapr en el clúster de AKS, intente implementar una aplicación de ejemplo.