Integración con la implementación de Kubernetes mediante Helm
Helm proporciona una manera de definir, instalar y actualizar las aplicaciones que se ejecutan en Kubernetes. Un gráfico de Helm contiene la información necesaria para crear una instancia de una aplicación de Kubernetes. La configuración se almacena fuera del propio gráfico, en un archivo denominado values.yaml.
Durante el proceso de lanzamiento, Helm combina el gráfico con la configuración adecuada para ejecutar la aplicación. Por ejemplo, se puede hacer referencia a las variables definidas en values.yaml como variables de entorno dentro de los contenedores en ejecución. Helm también admite la creación de secretos de Kubernetes, que se pueden montar como volúmenes de datos o exponerse como variables de entorno.
Puede invalidar los valores almacenados en values.yaml si proporciona archivos de configuración basados en YAML adicionales en la línea de comandos al ejecutar Helm. Azure App Configuration admite la exportación de valores de configuración a archivos YAML. La integración de esta funcionalidad de exportación en la implementación permite a las aplicaciones de Kubernetes aprovechar los valores de configuración almacenados en App Configuration.
En este tutorial, aprenderá a:
- Usar valores de App Configuration al implementar una aplicación en Kubernetes con Helm.
- Crear un secreto de Kubernetes basado en una referencia de Key Vault en App Configuration.
En este tutorial se da por supuesto que tiene conocimientos básicos sobre la administración de Kubernetes con Helm. Consulte más información sobre la instalación de aplicaciones con Helm en Azure Kubernetes Service (AKS).
Prerrequisitos
- Si no tiene una suscripción a Azure, cree una cuenta gratuita antes de empezar.
- Instalar la CLI de Azure (versión 2.4.0 o posterior)
- Instalar Helm (versión 2.14.0 o posterior)
- Un clúster de Kubernetes.
Creación de un almacén de App Configuration
Para crear un almacén de App Configuration, inicie sesión en Azure Portal. En la esquina superior izquierda de la página principal, seleccione Crear un recurso. En el cuadro Buscar en Marketplace, escriba App Configuration y presione Entrar.

Seleccione Configuración de la aplicación en los resultados de la búsqueda y, después, Crear.

En el panel Crear de App Configuration, introduzca la siguiente configuración:
Configuración Valor sugerido Descripción Suscripción Su suscripción Seleccione la suscripción de Azure que desee usar para probar App Configuration. Si su cuenta solo tiene una suscripción, se selecciona automáticamente y la lista Suscripción no aparece. Grupos de recursos AppConfigTestResources Seleccione o cree un grupo de recursos para el recurso del almacén de App Configuration. Este grupo es útil para organizar los distintos recursos que quiera eliminar al mismo tiempo mediante la eliminación del grupo de recursos. Para más información, consulte Administración de los recursos de Azure a través del Portal. Nombre del recurso Nombre único globalmente Escriba un nombre de recurso único para usarlo como recurso de almacén de App Configuration. El nombre debe ser una cadena de entre 5 y 50 caracteres y solo puede contener números, letras y el carácter -. El nombre no puede comenzar ni terminar con el carácter-.Ubicación Centro de EE. UU. Use Ubicación para especificar la ubicación geográfica en la que se hospeda el almacén de App Configuration. Para optimizar el rendimiento, cree el recurso en la misma región que los demás componentes de la aplicación. Plan de tarifa Gratis Seleccione el plan de tarifa deseado. Para más información, consulte la página de precios de App Configuration. Seleccione Revisar y crear para validar la configuración.
Seleccione Crear. La implementación puede tardar unos minutos.
Una vez finalizada la implementación, vaya al recurso de App Configuration. Seleccione Configuración > Claves de acceso. Tome nota de la cadena de conexión de la clave de solo lectura principal. Usará esta cadena de conexión más adelante para configurar la aplicación y que se comunique con el almacén de Azure App Configuration que ha creado.
Seleccione Explorador de configuración > Crear para agregar los siguientes pares clave-valor:
Clave Value settings.color Blanco settings.message Datos de Azure App Configuration Deje Etiqueta y Tipo de contenido en blanco, por ahora.
Incorporación de una referencia de Key Vault a App Configuration
Inicie sesión en Azure Portal y agregue un secreto a Key Vault con el nombre Password y el valor miContraseña.
Seleccione la instancia del almacén de App Configuration que creó en la sección anterior.
Seleccione Explorador de configuración.
Seleccione + Crear > Referencia del almacén de claves y, a continuación, especifique los valores siguientes:
- Clave: Seleccione secrets.password.
- Etiqueta: deje este valor en blanco.
- Suscripción, Grupo de recursos y Key Vault: escriba los valores correspondientes a los del almacén de claves que creó en el paso anterior.
- Secreto: seleccione el secreto llamado Password que creó en la sección anterior.
Creación de un gráfico de Helm
En primer lugar, cree un gráfico de Helm de ejemplo con el siguiente comando:
helm create mychart
Helm crea un directorio nuevo denominado mychart con la estructura que se muestra a continuación.
Sugerencia
Siga esta guía de gráficos para más información.
mychart
|-- Chart.yaml
|-- charts
|-- templates
| |-- NOTES.txt
| |-- _helpers.tpl
| |-- deployment.yaml
| |-- ingress.yaml
| `-- service.yaml
`-- values.yaml
A continuación, actualice la sección de spec:template:spec:containers del archivo deployment.yaml. En el fragmento de código siguiente se agregan dos variables de entorno al contenedor. Establecerá sus valores dinámicamente en el momento de la implementación.
env:
- name: Color
value: {{ .Values.settings.color }}
- name: Message
value: {{ .Values.settings.message }}
El archivo deployment.yaml completo después de la actualización debe ser similar al siguiente.
apiVersion: apps/v1beta2
kind: Deployment
metadata:
name: {{ include "mychart.fullname" . }}
labels:
app.kubernetes.io/name: {{ include "mychart.name" . }}
helm.sh/chart: {{ include "mychart.chart" . }}
app.kubernetes.io/instance: {{ .Release.Name }}
app.kubernetes.io/managed-by: {{ .Release.Service }}
spec:
replicas: {{ .Values.replicaCount }}
selector:
matchLabels:
app.kubernetes.io/name: {{ include "mychart.name" . }}
app.kubernetes.io/instance: {{ .Release.Name }}
template:
metadata:
labels:
app.kubernetes.io/name: {{ include "mychart.name" . }}
app.kubernetes.io/instance: {{ .Release.Name }}
spec:
containers:
- name: {{ .Chart.Name }}
image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}"
imagePullPolicy: {{ .Values.image.pullPolicy }}
env:
- name: Color
value: {{ .Values.settings.color }}
- name: Message
value: {{ .Values.settings.message }}
ports:
- name: http
containerPort: 80
protocol: TCP
livenessProbe:
httpGet:
path: /
port: http
readinessProbe:
httpGet:
path: /
port: http
resources:
{{ toYaml .Values.resources | indent 12 }}
{{- with .Values.nodeSelector }}
nodeSelector:
{{ toYaml . | indent 8 }}
{{- end }}
{{- with .Values.affinity }}
affinity:
{{ toYaml . | indent 8 }}
{{- end }}
{{- with .Values.tolerations }}
tolerations:
{{ toYaml . | indent 8 }}
{{- end }}
Para almacenar datos confidenciales como secretos de Kubernetes, agregue un archivo secrets.yaml en la carpeta de plantillas.
Sugerencia
Obtenga más información sobre cómo usar secretos de Kubernetes.
apiVersion: v1
kind: Secret
metadata:
name: mysecret
type: Opaque
data:
password: {{ .Values.secrets.password | b64enc }}
Por último, actualice el archivo values.yaml con el siguiente contenido para proporcionar de forma opcional los valores predeterminados de las opciones de configuración y los secretos a los que se hace referencia en los archivos deployment.yaml y secrets.yaml. Los valores reales se sobrescribirán con la configuración extraída de App Configuration.
# settings will be overwritten by App Configuration
settings:
color: red
message: myMessage
Paso de la configuración desde App Configuration en la instalación de Helm
En primer lugar, descargue la configuración de App Configuration en un archivo myConfig.yaml. Use un filtro de clave para descargar solo las claves que comiencen por settings. . Si en su caso el filtro de clave no es suficiente para excluir las claves de las referencias de Key Vault, puede usar el argumento --skip-keyvault para excluirlas.
Sugerencia
Obtenga más información sobre el comando export.
az appconfig kv export -n myAppConfiguration -d file --path myConfig.yaml --key "settings.*" --separator "." --format yaml
A continuación, descargue los secretos en un archivo denominado mySecrets.yaml. El argumento de línea de comandos --resolve-keyvault resuelve las referencias de Key Vault mediante la recuperación de los valores reales de Key Vault. Deberá ejecutar este comando con credenciales que tengan permisos de acceso a la instancia de Key Vault correspondiente.
Advertencia
Como este archivo contiene información confidencial, conserve el archivo con cuidado y elimínelo cuando ya no lo necesite.
az appconfig kv export -n myAppConfiguration -d file --path mySecrets.yaml --key "secrets.*" --separator "." --resolve-keyvault --format yaml
Use el argumento -f de la actualización de Helm para pasar los dos archivos de configuración que ha creado. Invalidarán los valores de configuración definidos en values.yaml con los valores exportados de App Configuration.
helm upgrade --install -f myConfig.yaml -f mySecrets.yaml "example" ./mychart
También puede usar el argumento --set para que la actualización de Helm pase valores de clave literal. El uso del argumento --set es una buena manera de evitar la persistencia de datos confidenciales en el disco.
$secrets = az appconfig kv list -n myAppConfiguration --key "secrets.*" --resolve-keyvault --query "[*].{name:key, value:value}" | ConvertFrom-Json
foreach ($secret in $secrets) {
$keyvalues += $secret.name + "=" + $secret.value + ","
}
if ($keyvalues){
$keyvalues = $keyvalues.TrimEnd(',')
helm upgrade --install --set $keyvalues "example" ./mychart
}
else{
helm upgrade --install "example" ./mychart
}
Compruebe que las configuraciones y los secretos se establecieron correctamente; para ello, acceda al panel de Kubernetes. Verá que los valores color y message de App Configuration se rellenaron en las variables de entorno del contenedor.

Un secreto, password, se almacena como referencia de Key Vault en App Configuration y también se agregó a los secretos de Kubernetes.

Limpieza de recursos
Si no desea seguir usando los recursos creados 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 no eliminar 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.
Pasos siguientes
En este tutorial, ha exportado los datos de Azure App Configuration que se van a usar en una implementación de Kubernetes con Helm. Para más información sobre App Configuration, continúe con los ejemplos de la CLI de Azure.