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 Kubernetes, puede configurar pods para consumir datos de configuración de ConfigMaps. Esta práctica mejora la portabilidad de las aplicaciones, ya que puede desacoplar los datos de configuración de las imágenes de contenedor.
El proveedor de Kubernetes de Azure App Configuration ofrece una manera de construir ConfigMaps y secretos de Kubernetes a partir de valores clave y referencias de Azure Key Vault que se almacenan en App Configuration. Al usar este proveedor, puede usar App Configuration para almacenar y administrar de forma centralizada los datos de configuración sin realizar cambios en el código de la aplicación.
ConfigMap se puede consumir como variable de entorno o como un archivo montado. En este inicio rápido, incorporará el proveedor de Kubernetes de Azure App Configuration en la carga de trabajo de AKS. El proveedor crea un objeto ConfigMap a partir de datos en el almacén de App Configuration. En la carga de trabajo, ejecutará una aplicación básica de ASP.NET Core en un pod que consume ConfigMap como un archivo JSON montado en un volumen de datos.
Sugerencia
Para conocer otras formas de acceder a App Configuration desde una carga de trabajo hospedada en Kubernetes, consulte Acceso de Azure Kubernetes Service a App Configuration.
Nota:
Este inicio rápido le guía a través de la configuración del proveedor de Kubernetes de Azure App Configuration. Opcionalmente, puede usar los siguientes comandos de la CLI para desarrolladores de Azure para aprovisionar recursos de Azure e implementar la aplicación de ejemplo que usa este inicio rápido. Estos comandos usan la azure-appconfig-aks plantilla para este propósito. Para más información sobre esta plantilla, consulte el repositorio de GitHub azure-appconfig-aks .
azd init -t azure-appconfig-aks
azd up
Requisitos previos
- Un almacén de App Configuration. Crear un almacén.
- Una instancia de Azure Container Registry. Cree un registro.
- Un clúster de AKS que tiene permiso para extraer imágenes del registro de contenedor. Creación de un clúster de AKS.
- SDK de .NET 8.0 o posterior.
- La CLI de Azure.
- Docker Desktop.
- Helm.
- kubectl.
Creación de una aplicación que se ejecuta en AKS
En esta sección, creará una aplicación web básica ASP.NET Core que se ejecuta en AKS. La aplicación lee los datos de configuración de un archivo JSON local. En la sección siguiente, habilitará la aplicación para que consuma datos de configuración desde App Configuration sin cambiar el código de la aplicación.
Si ya tiene una aplicación de AKS que lee la configuración de un archivo, puede omitir esta sección y ir a Uso del proveedor de Kubernetes de Azure App Configuration. Si omite esta sección, asegúrese de que el archivo de configuración que genera el proveedor coincide con la ruta de acceso de archivo que usa la aplicación.
Crear una aplicación
Use la interfaz de línea de comandos (CLI) de .NET para ejecutar el siguiente comando. Crea un proyecto de aplicación web ASP.NET Core en un nuevo directorio MyWebApp .
dotnet new webapp --output MyWebApp --framework net8.0En el directorio MyWebApp , vaya al directorio Pages y abra Index.cshtml. Reemplace el contenido por el código siguiente:
@page @model IndexModel @using Microsoft.Extensions.Configuration @inject IConfiguration Configuration @{ ViewData["Title"] = "Home page"; } <style> h1 { color: @Configuration["Settings:FontColor"]; } </style> <div class="text-center"> <h1>@Configuration["Settings:Message"]</h1> </div>Cree un directorio de configuración en la raíz del proyecto. En el directorio config , agregue un archivo mysettings.json que contenga el siguiente contenido:
{ "Settings": { "FontColor": "Black", "Message": "Message from the local configuration" } }En el directorio raíz del proyecto, abra Program.cs y agregue el archivo JSON al origen de configuración llamando al
AddJsonFilemétodo .// Existing code in Program.cs // ... ... // Add a JSON configuration source. builder.Configuration.AddJsonFile("config/mysettings.json", reloadOnChange: true, optional: false); var app = builder.Build(); // The rest of the existing code in Program.cs // ... ...
Incluir la aplicación en contenedores
Para compilar la aplicación en modo de versión y crear los recursos en el directorio publicado , ejecute el comando dotnet publish .
dotnet publish -c Release -o publishedCree un archivo denominado Dockerfile en la raíz del directorio de su proyecto, ábralo en un editor de texto y escriba el siguiente contenido. Un Dockerfile es un archivo de texto que no tiene una extensión. Se usa para crear una imagen de contenedor.
FROM mcr.microsoft.com/dotnet/aspnet:8.0 AS runtime WORKDIR /app COPY published/ ./ ENTRYPOINT ["dotnet", "MyWebApp.dll"]Compile una imagen de contenedor denominada
aspnetappmediante la ejecución del comando siguiente:docker build --tag aspnetapp .
Inserción de la imagen en Container Registry
Para iniciar sesión en el registro de contenedor, ejecute el comando az acr login . El código siguiente inicia sesión en un registro denominado
myregistry. Reemplace ese nombre del Registro por el nombre del registro.az acr login --name myregistryEl comando devuelve
Login Succeededsi inicia sesión correctamente.Para crear una etiqueta denominada
myregistry.azurecr.io/aspnetapp:v1para laaspnetappimagen, use el comando docker tag . Reemplace pormyregistryel nombre del registro.docker tag aspnetapp myregistry.azurecr.io/aspnetapp:v1Sugerencia
Para revisar la lista de las etiquetas e imágenes de Docker existentes, ejecute
docker image ls. En este escenario, la salida debe enumerar al menos dos imágenes:aspnetappymyregistry.azurecr.io/aspnetapp.Para cargar la imagen en el registro de contenedor, use el comando docker push . Por ejemplo, el siguiente comando inserta la imagen en un repositorio denominado
aspnetappcon etiquetav1en el Registromyregistry:docker push myregistry.azurecr.io/aspnetapp:v1
Implementación de la aplicación
Cree un directorio de Implementación en el directorio raíz del proyecto.
Para definir una implementación, agregue un archivo deployment.yaml con el siguiente contenido al directorio Deployment . Reemplace el valor de
template.spec.containers.imagepor la etiqueta que creó en la sección anterior.apiVersion: apps/v1 kind: Deployment metadata: name: aspnetapp-demo labels: app: aspnetapp-demo spec: replicas: 1 selector: matchLabels: app: aspnetapp-demo template: metadata: labels: app: aspnetapp-demo spec: containers: - name: aspnetapp image: myregistry.azurecr.io/aspnetapp:v1 ports: - containerPort: 80Para definir un
LoadBalancerservicio, agregue un archivo service.yaml con el siguiente contenido al directorio Implementación :apiVersion: v1 kind: Service metadata: name: aspnetapp-demo-service spec: type: LoadBalancer ports: - port: 80 selector: app: aspnetapp-demoPara que kubectl pueda conectarse al clúster de AKS, ejecute el siguiente comando. Descarga las credenciales del clúster de AKS y las combina en el contexto del clúster.
az aks get-credentials --name <your-AKS-instance-name> --resource-group <your-AKS-resource-group>Para implementar la aplicación en el clúster de AKS y crear los recursos, ejecute los siguientes comandos:
kubectl create namespace appconfig-demo kubectl apply -f ./Deployment -n appconfig-demoPara obtener la dirección IP externa expuesta por el
LoadBalancerservicio, ejecute el siguiente comando:kubectl get service aspnetapp-demo-service -n appconfig-demoEn una ventana del explorador, vaya a la dirección IP que obtuvo en el paso anterior. La página web debe ser similar a la siguiente captura de pantalla:
Uso del proveedor de Kubernetes de Azure App Configuration
Ahora que tiene una aplicación que se ejecuta en AKS, el siguiente paso es implementar el proveedor de Kubernetes de Azure App Configuration en el clúster de AKS para que se ejecute como un controlador de Kubernetes. El proveedor recupera datos del almacén de App Configuration y crea un ConfigMap, que se puede consumir como archivo JSON montado en un volumen de datos.
Configuración del almacén de App Configuration
Agregue las siguientes claves y valores al almacén de App Configuration. Para cada uno de ellos, use valores predeterminados para Label y Content Type. Para más información sobre cómo agregar valores de clave a un almacén mediante Azure Portal o la CLI de Azure, consulte Creación de un valor de clave.
| Clave | Valor |
|---|---|
| Configuración:Color de fuente | Verde |
| Configuración:Mensaje | Hola desde Azure App Configuration |
Configuración del proveedor de Kubernetes de Azure App Configuration
Instale el proveedor de Kubernetes de Azure App Configuration en el clúster de AKS. Puede instalar el proveedor como una extensión de AKS o mediante un gráfico de Helm. La extensión de AKS proporciona una instalación y administración sin problemas a través de la CLI de Azure, plantillas de Azure Resource Manager (plantillas de ARM) o archivos de Bicep. Además, el uso de la extensión de AKS facilita las actualizaciones automáticas de versiones secundarias y de revisión, lo que ayuda a garantizar que el sistema permanece actualizado.
Agregue a las extensiones de la
k8s-extensionCLI de Azure.az extension add --name k8s-extensionRegistre el proveedor de
KubernetesConfigurationrecursos.az provider register --namespace Microsoft.KubernetesConfigurationInstale la extensión de AKS para App Configuration. Reemplace los
cluster-namevalores de parámetro yresource-grouppor los valores correspondientes de la instancia de AKS. De forma predeterminada, el proveedor se instala en elazappconfig-systemespacio de nombres .az k8s-extension create --cluster-type managedClusters \ --cluster-name <your-AKS-instance-name> \ --resource-group <your-AKS-resource-group> \ --name appconfigurationkubernetesprovider \ --extension-type Microsoft.AppConfigurationPara más información, consulte Instalación de la extensión de AKS de Azure App Configuration.
Para definir un
AzureAppConfigurationProviderrecurso, agregue un archivo appConfigurationProvider.yaml con el siguiente contenido al directorio Deployment .AzureAppConfigurationProvideres un recurso personalizado. Define los datos que se van a descargar desde un almacén de App Configuration. También crea un objeto ConfigMap.apiVersion: azconfig.io/v1 kind: AzureAppConfigurationProvider metadata: name: appconfigurationprovider-sample spec: endpoint: <your-app-configuration-store-endpoint> target: configMapName: configmap-created-by-appconfig-provider configMapData: type: json key: mysettings.json auth: workloadIdentity: serviceAccountName: <your-service-account-name>Reemplace el valor del campo
endpointpor el punto de conexión del almacén de Azure App Configuration. Continúe con el paso siguiente para actualizar la secciónauthcon la información de autenticación.Nota:
AzureAppConfigurationProvideres un objeto de API declarativo. Define el estado deseado de ConfigMap que se crea a partir de los datos del almacén de App Configuration. La definición del estado deseado especifica el siguiente comportamiento:- Se produce un error en la creación de ConfigMap si ya existe un objeto ConfigMap con el mismo nombre en el mismo espacio de nombres.
- ConfigMap se restablece en función de los datos presentes en el almacén de App Configuration si se elimina o modifica por cualquier otro medio.
- ConfigMap se elimina si se desinstala el proveedor de Kubernetes de Azure App Configuration.
Para autenticarse con el almacén de App Configuration, siga las instrucciones para usar la identidad de carga de trabajo. Actualice el archivo appConfigurationProvider.yaml reemplazando el
serviceAccountNamecampo por el nombre de la cuenta de servicio que cree al seguir las instrucciones. Para obtener más información sobre otros métodos de autenticación, consulte los ejemplos de Autenticación.Como se muestra en el código siguiente, actualice el archivo deployment.yaml en el directorio Deployment para usar ConfigMap
configmap-created-by-appconfig-providercomo volumen de datos montado. Es importante que elvolumeMounts.mountPathvalor coincida con elWORKDIRvalor especificado en dockerfile y el directorio de configuración que creó anteriormente. Además, asegúrese de que el valor detemplate.spec.containers.imagecoincide con el nombre de la imagen que creó anteriormente.apiVersion: apps/v1 kind: Deployment metadata: name: aspnetapp-demo labels: app: aspnetapp-demo spec: replicas: 1 selector: matchLabels: app: aspnetapp-demo template: metadata: labels: app: aspnetapp-demo spec: containers: - name: aspnetapp image: myregistry.azurecr.io/aspnetapp:v1 ports: - containerPort: 80 volumeMounts: - name: config-volume mountPath: /app/config volumes: - name: config-volume configMap: name: configmap-created-by-appconfig-providerPara implementar los cambios, ejecute el siguiente comando. Actualice el espacio de nombres si usa la aplicación de AKS existente.
kubectl apply -f ./Deployment -n appconfig-demoActualice el explorador. La página muestra el contenido actualizado.
Solución de problemas
Si la aplicación no lee los datos del almacén de App Configuration, ejecute el siguiente comando para comprobar que ConfigMap se ha creado correctamente:
kubectl get configmap configmap-created-by-appconfig-provider -n appconfig-demo
Si no se crea configMap, ejecute el siguiente comando para obtener el estado de recuperación de datos:
kubectl get AzureAppConfigurationProvider appconfigurationprovider-sample -n appconfig-demo -o yaml
Si el proveedor de Kubernetes de Azure App Configuration recupera datos del almacén de App Configuration correctamente, la phase propiedad de la status sección de la salida debe ser Complete, como se muestra en el ejemplo siguiente:
$ kubectl get AzureAppConfigurationProvider appconfigurationprovider-sample -n appconfig-demo -o yaml
apiVersion: azconfig.io/v1
kind: AzureAppConfigurationProvider
... ... ...
status:
lastReconcileTime: "2025-08-04T13:58:02Z"
lastSyncTime: "2025-08-04T13:58:02Z"
message: Complete sync key-values from App Configuration to target ConfigMap or
Secret.
phase: Complete
Si la propiedad phase no COMPLETEes , los datos no se descargan del almacén de App Configuration correctamente. Para acceder a los registros del proveedor de Kubernetes de Azure App Configuration, ejecute el siguiente comando:
kubectl logs deployment/az-appconfig-k8s-provider -n azappconfig-system
Uso de registros para solución de problemas adicional. Para obtener soluciones a problemas comunes, consulte Preguntas más frecuentes.
Preguntas más frecuentes
¿Por qué no se está generando el ConfigMap o el Secret?
Para recopilar registros que contienen información detallada sobre errores, siga los pasos descritos en Solución de problemas. Estas son algunas causas comunes de este problema:
- RESPUESTA 403: 403 Prohibido: la identidad configurada carece de los permisos necesarios para acceder al almacén de App Configuration. Para obtener ejemplos que coincidan con la identidad que usa, consulte Autenticación.
-
Se encuentra una referencia de Key Vault en App Configuration, pero "spec.secret" no se configuró: una o varias referencias de Key Vault se incluyen en los valores de clave seleccionados, pero no se proporciona la información de autenticación de Key Vault. Para mantener la integridad de la configuración, no se carga toda la configuración. Configure la sección
spec.secretpara proporcionar la información de autenticación necesaria. Para obtener ejemplos y más información, consulte Referencias de Key Vault .
¿Por qué el objeto ConfigMap no contiene los datos esperados?
Asegúrese de que los selectores de clave-valor que especifique coincidan con los datos esperados. Si no especifica ningún selector, todos los valores de clave sin una etiqueta se descargan desde el almacén de App Configuration. Cuando use un filtro de clave, compruebe que coincide con el prefijo de los valores de clave esperados. Si los valores de clave tienen etiquetas, asegúrese de especificar el filtro de etiqueta en los selectores. Para obtener más ejemplos, consulte Selección de clave-valor.
¿Cómo puedo personalizar la instalación del proveedor de Kubernetes de Azure App Configuration?
Puede personalizar la instalación proporcionando valores adicionales de Helm al instalar el proveedor de Kubernetes de Azure App Configuration. Por ejemplo, puede establecer el nivel de registro, configurar el proveedor para que se ejecute en un nodo concreto o deshabilitar la identidad de la carga de trabajo. Para obtener más información, consulte Instalación.
¿Cómo puedo desencadenar una actualización a petición de ConfigMap y Secret?
Puede configurar los datos para que se actualicen automáticamente. Pero hay ocasiones en las que es posible que quiera desencadenar una actualización a petición para obtener los datos más recientes de App Configuration y Key Vault. Para desencadenar una actualización, puede modificar la metadata.annotations sección de AzureAppConfigurationProvider. A continuación, el proveedor de Kubernetes actualiza ConfigMap y Secret con los datos más recientes del almacén de App Configuration y Key Vault. Para obtener un ejemplo, consulte Actualización a petición.
No se recomienda eliminar ni modificar configMap y secret generados por el proveedor de Kubernetes. Los nuevos se generan a partir de los datos más recientes, pero esta situación puede provocar tiempo de inactividad para las aplicaciones durante los errores.
¿Por qué no puedo autenticar con App Configuration mediante la identidad de carga de trabajo después de actualizar el proveedor a la versión 2.0.0?
A partir de la versión 2.0.0, se requiere una cuenta de servicio proporcionada por el usuario para autenticarse con App Configuration mediante la identidad de carga de trabajo. Este cambio mejora la seguridad mediante el aislamiento del espacio de nombres. Anteriormente, se usaba una cuenta de servicio del proveedor de Kubernetes para todos los espacios de nombres. Para obtener instrucciones actualizadas, consulte la documentación sobre el uso de la identidad de carga de trabajo. Si necesita tiempo para migrar a la versión 2.0.0, puede usar temporalmente la configuración durante la workloadIdentity.globalServiceAccountEnabled=true instalación del proveedor. Tenga en cuenta que la compatibilidad con el uso de la cuenta de servicio del proveedor está programada para desuso en una versión futura.
Limpieza de recursos
Si desea desinstalar el proveedor de Kubernetes de Azure App Configuration, pero mantener el clúster de AKS, use el siguiente comando para desinstalar el proveedor:
az k8s-extension delete --cluster-type managedClusters \
--cluster-name <your-AKS-instance-name> \
--resource-group <your-AKS-resource-group> \
--name appconfigurationkubernetesprovider
Si no quiere seguir usando los recursos que se han creado en este artículo, elimine el grupo de recursos que creó aquí para evitar cargos.
Importante
La eliminación de un grupo de recursos es irreversible. El grupo de recursos y todos los recursos que contiene se eliminan permanentemente. Asegúrese de que no elimina por accidente el grupo de recursos o los recursos equivocados. Si creó los recursos para este artículo en un grupo de recursos que contenga los recursos que desee conservar, elimine cada recurso de forma individual desde su panel respectivo, en lugar de eliminar el grupo de recursos.
- Inicie sesión en Azure Portal y después seleccione Grupos de recursos.
- En el cuadro de texto Filtrar por nombre, escriba el nombre del grupo de recursos.
- En la lista resultados, seleccione el nombre del grupo de recursos para ver la información general.
- Seleccione Eliminar grupo de recursos.
- Se le pedirá que confirme la eliminación del grupo de recursos. Escriba el nombre del grupo de recursos para confirmar y seleccione Eliminar.
Transcurridos unos instantes, el grupo de recursos y todos sus recursos se eliminan.
Nota:
Si usa la CLI para desarrolladores de Azure para configurar los recursos, puede ejecutar el comando azd down para eliminar todos los recursos creados por la plantilla azure-appconfig-aks.
Pasos siguientes
En esta guía de inicio rápido:
- Ha creado una aplicación que se ejecuta en AKS.
- Conecte el clúster de AKS al almacén de App Configuration mediante el proveedor de Kubernetes de Azure App Configuration.
- Ha creado un objeto ConfigMap con datos del almacén de App Configuration.
- Ejecutó la aplicación con datos de configuración desde el almacén de App Configuration sin cambiar el código de la aplicación.
Para averiguar cómo actualizar las cargas de trabajo de AKS para actualizar dinámicamente los datos de configuración, continúe con el siguiente tutorial.
Para más información sobre el proveedor de Kubernetes de Azure App Configuration, consulte Referencia del proveedor de Kubernetes de Azure App Configuration.