Compartir a través de


Referencia del proveedor de Kubernetes de Azure App Configuration

En la referencia siguiente se describen las propiedades admitidas por el proveedor v2.3.0 de Kubernetes de Azure App Configuration o posterior. Consulte las notas de la versión para obtener más información sobre el cambio.

Propiedades

Un recurso AzureAppConfigurationProvider tiene las siguientes propiedades secundarias de nivel superior en spec. Se debe especificar endpoint o connectionStringReference.

Nombre Descripción Obligatorio Tipo
punto final Punto de conexión de Azure App Configuration, del que desea recuperar los pares clave-valor. alternativa cuerda / cadena
connectionStringReference Nombre del secreto de Kubernetes que contiene la cadena de conexión de Azure App Configuration. alternativa cuerda / cadena
replicaDiscoveryEnabled Configuración que determina si las réplicas de App de Azure Configuración se detectan y usan automáticamente para la conmutación por error. Si la propiedad está ausente, se usa un valor predeterminado de true . falso booleano
loadBalancingEnabled Configuración que permite que la carga de trabajo distribuya las solicitudes a App Configuration en todas las réplicas disponibles. Si la propiedad está ausente, se usa un valor predeterminado de false . falso booleano
Destino Destino de los pares clave-valor recuperados en Kubernetes. cierto objeto
autenticación El método de autenticación para acceder a Azure App Configuration. falso objeto
configuración La configuración para realizar consultas en los pares clave-valor y procesarlos en Azure App Configuration. falso objeto
secreto La configuración de las referencias de Key Vault en Azure App Configuration. condicionales objeto
featureFlag La configuración de las marcas de características en App de Azure Configuración. falso objeto

La propiedad spec.target tiene la siguiente propiedad secundaria.

Nombre Descripción Obligatorio Tipo
configMapName Nombre de ConfigMap que se va a crear. cierto cuerda / cadena
configMapData Configuración que especifica cómo se deben rellenar los datos recuperados en el ConfigMap generado. falso objeto

Si no se establece la spec.target.configMapData propiedad , configMap generado se rellena con la lista de valores de clave recuperados de App de Azure Configuración, lo que permite que ConfigMap se consuma como variables de entorno. Actualice esta propiedad si desea consumir ConfigMap como un archivo montado. Esta propiedad tiene las siguientes propiedades secundarias.

Nombre Descripción Obligatorio Tipo
tipo Valor que indica cómo se construyen los datos recuperados en el ConfigMap generado. Los valores permitidos son default, json, yaml y properties. opcional cuerda / cadena
clave Nombre de clave de los datos recuperados cuando type se establece en json, yaml o properties. Establézcalo en el nombre de archivo si ConfigMap está configurado para consumirse como un archivo montado. condicionales cuerda / cadena
separador Delimitador que se usa para generar los datos configMap en formato jerárquico cuando el tipo se establece json en o yaml. El separador está vacío de forma predeterminada y configMap generado contiene valores clave en su forma original. Configure esta opción solo si el cargador de archivos de configuración usado en la aplicación no puede cargar los valores de clave sin convertirlos al formato jerárquico. opcional cuerda / cadena

La propiedad spec.auth no es necesaria si se proporciona la cadena de conexión del almacén de App Configuration estableciendo la propiedad spec.connectionStringReference. De lo contrario, se usa una de las identidades, la entidad de servicio, la identidad de carga de trabajo o la identidad administrada para la autenticación. spec.auth tiene las siguientes propiedades secundarias. Solo se puede especificar una de ellas. Si no se establece ninguna de ellas, se usa la identidad administrada asignada por el sistema del conjunto de escalado de máquinas virtuales.

Nombre Descripción Obligatorio Tipo
servicePrincipalReference Nombre del secreto de Kubernetes que contiene las credenciales de una entidad de servicio. El secreto debe estar en el mismo espacio de nombres que el proveedor de Kubernetes. falso cuerda / cadena
workloadIdentity Configuración para usar la identidad de carga de trabajo. falso objeto
managedIdentityClientId Identificador de cliente de la identidad administrada asignada por el usuario del conjunto de escalado de máquinas virtuales. falso cuerda / cadena

La propiedad spec.auth.workloadIdentity tiene la siguiente propiedad secundaria.

Nombre Descripción Obligatorio Tipo
serviceAccountName Nombre de la cuenta de servicio asociada a la identidad de carga de trabajo. cierto cuerda / cadena

spec.configuration tiene las siguientes propiedades secundarias.

Nombre Descripción Obligatorio Tipo
selectores Lista de selectores para el filtrado de pares clave-valor. falso matriz de objeto
trimKeyPrefixes Lista de prefijos de clave que se van a recortar. falso matriz de cadenas
actualizar La configuración para actualizar los valores de clave de App de Azure Configuration. Si la propiedad no está presente, no se actualizan los valores de clave de App de Azure Configuración. falso objeto

Si no se establece la spec.configuration.selectors propiedad, se descargan todos los valores de clave sin etiqueta. Contiene una matriz de objetos selectores, que tienen las siguientes propiedades secundarias. Tenga en cuenta que los valores clave del último selector tienen prioridad e invalidan las claves superpuestas de los selectores anteriores.

Nombre Descripción Obligatorio Tipo
keyFilter Filtro de clave para consultar los pares clave-valor. Esta propiedad y la snapshotName propiedad no deben establecerse al mismo tiempo. alternativa cuerda / cadena
labelFilter Filtro de etiqueta para consultar pares clave-valor. Esta propiedad y la snapshotName propiedad no deben establecerse al mismo tiempo. falso cuerda / cadena
tagFiltros La etiqueta filtra para consultar los valores clave. Esta propiedad y la snapshotName propiedad no deben establecerse al mismo tiempo. El filtro de etiquetas debe estar formateado como tag1=value1. falso matriz de cadenas
snapshotName Nombre de una instantánea desde la que se cargan los valores de clave. Esta propiedad no se debe usar junto con otras propiedades. alternativa cuerda / cadena

La propiedad spec.configuration.refresh tiene las siguientes propiedades secundarias.

Nombre Descripción Obligatorio Tipo
Habilitado Configuración que determina si los valores de clave de App de Azure Configuración se actualizan automáticamente. Si la propiedad está ausente, se usa un valor predeterminado de false . falso booleano
La supervisión Los valores de clave supervisados para la detección de cambios, también conocidos como claves sentinel. Los valores de clave de App de Azure Configuración solo se actualizan si se cambia al menos uno de los valores de clave supervisados. Si esta propiedad no está presente, se supervisarán todos los valores de clave seleccionados para su actualización. falso objeto
intervalo Intervalo en el que se actualizan los valores de clave desde App de Azure Configuración. Debe ser mayor o igual que 1 segundo. Si la propiedad está ausente, se usa un valor predeterminado de 30 segundos. falso cadena de duración

spec.configuration.refresh.monitoring.keyValues es una matriz de objetos, que tienen las siguientes propiedades secundarias.

Nombre Descripción Obligatorio Tipo
clave Clave de un par clave-valor. cierto cuerda / cadena
etiqueta Etiqueta de un par clave-valor. falso cuerda / cadena

La propiedad spec.secret tiene las siguientes propiedades secundarias. Se requiere si se espera que se descarguen referencias de Key Vault. Para más información sobre la compatibilidad con los tipos integrados de Secretos de Kubernetes, consulte Tipos de secretos.

Nombre Descripción Obligatorio Tipo
Destino Destino de los secretos recuperados en Kubernetes. cierto objeto
autenticación El método de autenticación para acceder a Key Vaults. falso objeto
actualizar La configuración para actualizar los datos de Key Vaults. Si la propiedad no está presente, los datos de Key Vault no se actualizan a menos que se vuelvan a cargar las referencias correspondientes de Key Vault. falso objeto

La propiedad spec.secret.target tiene la siguiente propiedad secundaria.

Nombre Descripción Obligatorio Tipo
nombreSecreto Nombre del secreto de Kubernetes que se va a crear. cierto cuerda / cadena
secretData Configuración que especifica cómo se deben rellenar los datos recuperados en el secreto generado. cierto cuerda / cadena

Si no se establece la spec.secret.target.secretData propiedad , el secreto generado se rellena con la lista de valores de clave recuperados de Key Vaults, lo que permite que el secreto se consuma como variables de entorno. Actualice esta propiedad si desea consumir el secreto como un archivo montado. Esta propiedad tiene las siguientes propiedades secundarias.

Nombre Descripción Obligatorio Tipo
tipo Configuración que indica cómo se construyen los datos recuperados en el secreto generado. Los valores permitidos son default, json, yaml y properties. opcional cuerda / cadena
clave Nombre de clave de los datos recuperados cuando type se establece en json, yaml o properties. Establézcalo en el nombre de archivo si el secreto está configurado para que se consuma como un archivo montado. condicionales cuerda / cadena
separador Delimitador que se usa para generar los datos secretos en formato jerárquico cuando el tipo se establece json en o yaml. El separador está vacío de forma predeterminada y el secreto generado contiene valores de clave en su forma original. Configure esta opción solo si el cargador de archivos de configuración usado en la aplicación no puede cargar los valores de clave sin convertirlos al formato jerárquico. opcional cuerda / cadena

Si no se establece la propiedad spec.secret.auth, se usa la identidad administrada asignada por el sistema. Tiene las siguientes propiedades secundarias.

Nombre Descripción Obligatorio Tipo
servicePrincipalReference El nombre del secreto de Kubernetes que contiene las credenciales de una entidad de servicio que se usa para la autenticación con almacenes de claves que no tienen métodos de autenticación individuales especificados. falso cuerda / cadena
workloadIdentity La configuración de la identidad de la carga de trabajo que se usa para la autenticación con almacenes de claves que no tienen métodos de autenticación individuales especificados. Tiene la misma propiedad secundaria que spec.auth.workloadIdentity. falso objeto
managedIdentityClientId El id. de cliente de una identidad administrada asignada por el usuario del conjunto de escalado de máquinas virtuales que se usa para la autenticación con almacenes de claves que no tienen métodos de autenticación individuales especificados. falso cuerda / cadena
keyVaults Los métodos de autenticación para almacenes de claves individuales. falso matriz de objeto

El método de autenticación de cada instancia de Key Vault se puede especificar con las siguientes propiedades. Se debe proporcionar managedIdentityClientId, servicePrincipalReference o workloadIdentity.

Nombre Descripción Obligatorio Tipo
Uri Identificador URI de un almacén de claves. cierto cuerda / cadena
servicePrincipalReference Nombre del secreto de Kubernetes que contiene las credenciales de una entidad de servicio que se usa para la autenticación con un almacén de claves. falso cuerda / cadena
workloadIdentity La configuración de la identidad de carga de trabajo que se usa para la autenticación con un almacén de claves. Tiene la misma propiedad secundaria que spec.auth.workloadIdentity. falso objeto
managedIdentityClientId El id. de cliente de una identidad administrada asignada por el usuario del conjunto de escalado de máquinas virtuales que se usa para la autenticación con un almacén de claves. falso cuerda / cadena

La propiedad spec.secret.refresh tiene las siguientes propiedades secundarias.

Nombre Descripción Obligatorio Tipo
Habilitado Configuración que determina si los datos de los almacenes de claves se actualizan automáticamente. Si la propiedad está ausente, se usa un valor predeterminado de false . falso booleano
intervalo Intervalo en el que se actualizan los datos desde Key Vault. Debe ser mayor o igual que 1 minuto. La actualización de Key Vault es independiente de la actualización de App Configuration configurada a través spec.configuration.refresh. cierto cadena de duración

La propiedad spec.featureFlag tiene las siguientes propiedades secundarias. Es necesario si se espera que se descarguen marcas de características.

Nombre Descripción Obligatorio Tipo
selectores Lista de selectores para el filtrado de marcas de características. falso matriz de objeto
actualizar La configuración para actualizar las marcas de características de App de Azure Configuration. Si la propiedad no está presente, no se actualizan las marcas de características de App de Azure Configuración. falso objeto

Si no se establece la spec.featureFlag.selectors propiedad, no se descargan las marcas de características. Contiene una matriz de objetos selectores, que tienen las siguientes propiedades secundarias. Tenga en cuenta que las marcas de características del último selector tienen prioridad e invalidan las claves superpuestas de los selectores anteriores.

Nombre Descripción Obligatorio Tipo
keyFilter Filtro de clave para consultar marcas de características. Esta propiedad y la snapshotName propiedad no deben establecerse al mismo tiempo. alternativa cuerda / cadena
labelFilter Filtro de etiqueta para consultar marcas de características. Esta propiedad y la snapshotName propiedad no deben establecerse al mismo tiempo. falso cuerda / cadena
tagFiltros La etiqueta filtra para consultar las banderas de características. Esta propiedad y la snapshotName propiedad no deben establecerse al mismo tiempo. El filtro de etiquetas debe estar formateado como tag1=value1. falso matriz de cadenas
snapshotName Nombre de una instantánea desde la que se cargan las marcas de características. Esta propiedad no se debe usar junto con otras propiedades. alternativa cuerda / cadena

La propiedad spec.featureFlag.refresh tiene las siguientes propiedades secundarias.

Nombre Descripción Obligatorio Tipo
Habilitado Configuración que determina si las marcas de características de App de Azure Configuración se actualizan automáticamente. Si la propiedad está ausente, se usa un valor predeterminado de false . falso booleano
intervalo Intervalo en el que se actualizan las marcas de características desde App de Azure Configuración. Debe ser mayor o igual que 1 segundo. Si la propiedad está ausente, se usa un valor predeterminado de 30 segundos. falso cadena de duración

Instalación

Use el comando siguiente helm install para instalar el proveedor de Kubernetes de configuración de App de Azure. Consulte helm-values.yaml para obtener la lista completa de parámetros y sus valores predeterminados. Puede invalidar los valores predeterminados pasando la --set marca al comando .

helm install azureappconfiguration.kubernetesprovider \
    oci://mcr.microsoft.com/azure-app-configuration/helmchart/kubernetes-provider \
    --namespace azappconfig-system \
    --create-namespace

Escalabilidad automática

De forma predeterminada, el escalado automático está deshabilitado. Sin embargo, si tiene varios AzureAppConfigurationProvider recursos para generar varios ConfigMaps/Secrets, puede habilitar el escalado automático horizontal de pods estableciendo autoscaling.enabledtrueen .

helm install azureappconfiguration.kubernetesprovider \
    oci://mcr.microsoft.com/azure-app-configuration/helmchart/kubernetes-provider \
    --namespace azappconfig-system \
    --create-namespace
    --set autoscaling.enabled=true

datos, recopilación

El software puede recopilar información sobre usted y su uso del software y enviarlo a Microsoft. Microsoft puede utilizar esta información para proporcionar servicios y mejorar nuestros productos y servicios. Puede desactivar la telemetría estableciendo al requestTracing.enabled=false instalar el proveedor de Kubernetes de configuración de App de Azure. También hay algunas características del software que pueden permitirle y Microsoft recopilar datos de los usuarios de las aplicaciones. Si usa estas características, debe cumplir con la legislación aplicable, incluida la prestación de avisos adecuados a los usuarios de sus aplicaciones junto con una copia de la declaración de privacidad de Microsoft. Nuestra declaración de privacidad se encuentra en https://go.microsoft.com/fwlink/?LinkID=824704. Puede obtener más información sobre la recopilación y el uso de datos en la documentación de ayuda y nuestra declaración de privacidad. El uso del software implica su consentimiento a estas prácticas.

Ejemplos

Autenticación

Uso de una identidad asignada por el sistema de un conjunto de escalado de máquinas virtuales

  1. Habilitar la identidad administrada asignada por el sistema en el conjunto de escalado de máquinas virtuales que usa el clúster de Azure Kubernetes Service (AKS).

  2. Conceder a la identidad administrada asignada por el sistema el rol Lector de datos de App Configuration en Azure App Configuration.

  3. Implemente el siguiente recurso de ejemplo AzureAppConfigurationProvider en el clúster de AKS.

    apiVersion: azconfig.io/v1
    kind: AzureAppConfigurationProvider
    metadata:
      name: appconfigurationprovider-sample
    spec:
      endpoint: <your-app-configuration-store-endpoint>
      target:
        configMapName: configmap-created-by-appconfig-provider
    

Uso de una identidad administrada asignada por el usuario de un conjunto de escalado de máquinas virtuales

  1. Cree una identidad administrada asignada por el usuario y anote su id. de cliente después de la creación.

  2. Asignar la identidad administrada asignada por el usuario al conjunto de escalado de máquinas virtuales que usa el clúster de Azure Kubernetes Service (AKS).

  3. Conceder a la identidad administrada asignada por el usuario el rol Lector de datos de App Configuration en Azure App Configuration.

  4. Establezca la propiedad spec.auth.managedIdentityClientId en el id. de cliente de la identidad administrada asignada por el usuario en el siguiente recurso de ejemplo AzureAppConfigurationProvider e impleméntela en el clúster de AKS.

    apiVersion: azconfig.io/v1
    kind: AzureAppConfigurationProvider
    metadata:
      name: appconfigurationprovider-sample
    spec:
      endpoint: <your-app-configuration-store-endpoint>
      target:
        configMapName: configmap-created-by-appconfig-provider
      auth:
        managedIdentityClientId: <your-managed-identity-client-id>
    

Uso de la entidad de servicio

  1. Creación de una entidad de servicio

  2. Conceder a la entidad de servicio principal el rol Lector de datos de App Configuration en Azure App Configuration.

  3. Cree un secreto de Kubernetes en el mismo espacio de nombres que el recurso AzureAppConfigurationProvider y agregue azure_client_id, azure_client_secret y azure_tenant_id de la entidad de servicio al secreto.

  4. Establezca la propiedad spec.auth.servicePrincipalReference en el nombre del secreto en el siguiente recurso de ejemplo AzureAppConfigurationProvider e impleméntela en el clúster de Kubernetes.

    apiVersion: azconfig.io/v1
    kind: AzureAppConfigurationProvider
    metadata:
      name: appconfigurationprovider-sample
    spec:
      endpoint: <your-app-configuration-store-endpoint>
      target:
        configMapName: configmap-created-by-appconfig-provider
      auth:
        servicePrincipalReference: <your-service-principal-secret-name>
    

Uso de la identidad de carga de trabajo

  1. Habilite la identidad de carga de trabajo en el clúster de Azure Kubernetes Service (AKS).

  2. Obtenga la dirección URL del emisor de OIDC del clúster de AKS.

  3. Cree una identidad administrada asignada por el usuario y anote su identificador de cliente, identificador de inquilino, nombre y grupo de recursos.

  4. Conceder a la identidad administrada asignada por el usuario el rol Lector de datos de App Configuration en Azure App Configuration.

  5. Cree una cuenta de servicio agregando un archivo YAML (por ejemplo, serviceAccount.yaml) con el siguiente contenido en el directorio que contiene los archivos de implementación de AKS. La cuenta de servicio se creará cuando aplique todos los cambios de implementación al clúster de AKS (por ejemplo, mediante kubectl apply). Reemplace por <your-managed-identity-client-id> el identificador de cliente y <your-managed-identity-tenant-id> por el identificador de inquilino de la identidad administrada asignada por el usuario que acaba de crearse. Reemplace por <your-service-account-name> su nombre preferido.

    apiVersion: v1
    kind: ServiceAccount
    metadata:
      name: <your-service-account-name>
      annotations:
        azure.workload.identity/client-id: <your-managed-identity-client-id>
        azure.workload.identity/tenant-id: <your-managed-identity-tenant-id>
    
  6. Cree una credencial de identidad federada para la identidad administrada asignada por el usuario mediante la CLI de Azure. Reemplace <user-assigned-identity-name> por el nombre y <resource-group> por el grupo de recursos de la identidad administrada asignada por el usuario recién creada. Reemplace por <aks-oidc-issuer> la dirección URL del emisor de OIDC del clúster de AKS. Reemplace por <your-service-account-name> el nombre de la cuenta de servicio recién creada. Reemplace <federated-identity-credential-name> por el nombre preferido para la credencial de identidad federada.

    az identity federated-credential create --name "<federated-identity-credential-name>" --identity-name "<user-assigned-identity-name>" --resource-group "<resource-group>" --issuer "<aks-oidc-issuer>" --subject system:serviceaccount:default:<your-service-account-name> --audience api://AzureADTokenExchange
    

    Tenga en cuenta que el asunto de la credencial de identidad federada debe seguir este formato: system:serviceaccount:<service-account-namespace>:<service-account-name>.

  7. Establezca la spec.auth.workloadIdentity.serviceAccountName propiedad en el nombre de la cuenta de servicio en el siguiente recurso de ejemplo AzureAppConfigurationProvider . Asegúrese de que el AzureAppConfigurationProvider recurso y la cuenta de servicio están en el mismo espacio de nombres.

    apiVersion: azconfig.io/v1
    kind: AzureAppConfigurationProvider
    metadata:
      name: appconfigurationprovider-sample
    spec:
      endpoint: <your-app-configuration-store-endpoint>
      target:
        configMapName: configmap-created-by-appconfig-provider
      auth:
        workloadIdentity:
          serviceAccountName: <your-service-account-name>
    

Uso de una cadena de conexión

  1. Cree un secreto de Kubernetes en el mismo espacio de nombres que el recurso AzureAppConfigurationProvider y agregue la cadena de conexión de Azure App Configuration con la clave azure_app_configuration_connection_string en el secreto.

  2. Establezca la propiedad spec.connectionStringReference en el nombre del secreto en el siguiente recurso de ejemplo AzureAppConfigurationProvider e impleméntela en el clúster de Kubernetes.

    apiVersion: azconfig.io/v1
    kind: AzureAppConfigurationProvider
    metadata:
      name: appconfigurationprovider-sample
    spec:
      connectionStringReference: <your-connection-string-secret-name>
      target:
        configMapName: configmap-created-by-appconfig-provider
    

Selección de par clave-valor

Use la propiedad selectors para filtrar los pares clave-valor que se van a descargar de Azure App Configuration.

En el ejemplo siguiente se descargan todos los pares clave-valor sin etiqueta.

apiVersion: azconfig.io/v1
kind: AzureAppConfigurationProvider
metadata:
  name: appconfigurationprovider-sample
spec:
  endpoint: <your-app-configuration-store-endpoint>
  target:
    configMapName: configmap-created-by-appconfig-provider

En el ejemplo siguiente, se usan dos selectores para recuperar dos conjuntos de pares clave-valor, cada uno con etiquetas únicas. Es importante tener en cuenta que los valores del último selector tienen prioridad e invalidan las claves superpuestas de los selectores anteriores.

apiVersion: azconfig.io/v1
kind: AzureAppConfigurationProvider
metadata:
  name: appconfigurationprovider-sample
spec:
  endpoint: <your-app-configuration-store-endpoint>
  target:
    configMapName: configmap-created-by-appconfig-provider
  configuration:
    selectors:
      - keyFilter: app1*
        labelFilter: common
      - keyFilter: app1*
        labelFilter: development

Los filtros de etiquetas también pueden usarse para filtrar valores clave. En la siguiente muestra solo se descargan los valores clave con la etiqueta env=prod .

apiVersion: azconfig.io/v1
kind: AzureAppConfigurationProvider
metadata:
  name: appconfigurationprovider-sample
spec:
  endpoint: <your-app-configuration-store-endpoint>
  target:
    configMapName: configmap-created-by-appconfig-provider
  configuration:
    selectors:
      - keyFilter: '*'
        tagFilters:
          - env=prod

Una instantánea se puede usar sola o junto con otros selectores de clave-valor. En el ejemplo siguiente, se cargan los valores clave de la configuración común desde una instantánea y, a continuación, se invalidan algunos de ellos con los valores de clave para el desarrollo.

apiVersion: azconfig.io/v1
kind: AzureAppConfigurationProvider
metadata:
  name: appconfigurationprovider-sample
spec:
  endpoint: <your-app-configuration-store-endpoint>
  target:
    configMapName: configmap-created-by-appconfig-provider
  configuration:
    selectors:
      - snapshotName: app1_common_configuration
      - keyFilter: app1*
        labelFilter: development

Recorte de prefijo de la clave

En el ejemplo siguiente se usa la propiedad trimKeyPrefixes para recortar dos prefijos de nombres de clave antes de agregarlos al configMap generado.

apiVersion: azconfig.io/v1
kind: AzureAppConfigurationProvider
metadata:
  name: appconfigurationprovider-sample
spec:
  endpoint: <your-app-configuration-store-endpoint>
  target:
    configMapName: configmap-created-by-appconfig-provider
  configuration:
    trimKeyPrefixes: [prefix1, prefix2]

Actualización de configuración

Al realizar cambios en los datos en Azure App Configuration, es posible que quiera que esos cambios se actualicen automáticamente en el clúster de Kubernetes. En el ejemplo siguiente, el proveedor de Kubernetes comprueba las actualizaciones de Azure App Configuration cada minuto. El configMap y el secreto asociados solo se vuelven a generar cuando se detectan cambios. Para obtener más información sobre la supervisión de los cambios de configuración, consulte Procedimientos recomendados para la actualización de la configuración.

apiVersion: azconfig.io/v1
kind: AzureAppConfigurationProvider
metadata:
  name: appconfigurationprovider-sample
spec:
  endpoint: <your-app-configuration-store-endpoint>
  target:
    configMapName: configmap-created-by-appconfig-provider
  configuration:
    selectors:
      - keyFilter: app1*
        labelFilter: common
    refresh:
      enabled: true
      interval: 1m

Referencias de Key Vault

Autenticación

En el ejemplo siguiente, una Key Vault se autentica con una entidad de servicio, mientras que todas las demás instancias de Key Vault se autentican con una identidad administrada asignada por el usuario.

apiVersion: azconfig.io/v1
kind: AzureAppConfigurationProvider
metadata:
  name: appconfigurationprovider-sample
spec:
  endpoint: <your-app-configuration-store-endpoint>
  target:
    configMapName: configmap-created-by-appconfig-provider
  configuration:
    selectors:
      - keyFilter: app1*
  secret:
    target:
      secretName: secret-created-by-appconfig-provider
    auth:
      managedIdentityClientId: <your-user-assigned-managed-identity-client-id>
      keyVaults:
        - uri: <your-key-vault-uri>
          servicePrincipalReference: <name-of-secret-containing-service-principal-credentials>

Tipos de secreto

Actualmente se admiten dos tipos integrados de Kubernetes de secretos, opacos y TLS. Los secretos resueltos desde las referencias de Key Vault se guardan como el tipo secreto opaco de forma predeterminada. Si tiene una referencia de Key Vault a un certificado y quiere guardarla como tipo de secreto TLS, puede agregar una etiqueta con el nombre y el valor siguientes a la referencia de Key Vault en App de Azure Configuración. Al hacerlo, se generará un secreto con el kubernetes.io/tls tipo y se denominará después de la clave de la referencia de Key Vault.

Nombre Valor
.kubernetes.secret.type kubernetes.io/tls

En los ejemplos siguientes se muestra cómo se rellenan los datos en los secretos generados con distintos tipos.

Suponiendo que un almacén de App Configuration tenga estas referencias de Key Vault:

clave valor etiquetas
app1-secret1 <Referencia de Key Vault 1> {}
app1-secret2 <Referencia de Key Vault 2> {}
app1-certificate <Referencia de Key Vault 3> {".kubernetes.secret.type": "kubernetes.io/tls"}

En el ejemplo siguiente se generan secretos de tipos Opacos y TLS.

apiVersion: azconfig.io/v1
kind: AzureAppConfigurationProvider
metadata:
  name: appconfigurationprovider-sample
spec:
  endpoint: <your-app-configuration-store-endpoint>
  target:
    configMapName: configmap-created-by-appconfig-provider
  configuration:
    selectors:
      - keyFilter: app1*
  secret:
    target:
      secretName: secret-created-by-appconfig-provider
    auth:
      managedIdentityClientId: <your-user-assigned-managed-identity-client-id>

Los secretos generados se rellenan con los siguientes datos:

name: secret-created-by-appconfig-provider
type: Opaque
data:
  app1-secret1: <secret value retrieved from Key Vault>
  app1-secret2: <secret value retrieved from Key Vault>
name: app1-certificate
type: kubernetes.io/tls
data:
  tls.crt: |
    <certificate data retrieved from Key Vault>
  tls.key: |
    <certificate key retrieved from Key Vault>

Actualización de secretos de Key Vault

La actualización de secretos de Key Vault normalmente requiere volver a cargar las referencias de Key Vault correspondientes desde Azure App Configuration. Sin embargo, con la propiedad spec.secret.refresh, puede actualizar los secretos de Key Vault de forma independiente. Esto es especialmente útil para garantizar que la carga de trabajo recoge automáticamente los secretos actualizados de Key Vault durante la rotación de secretos. Tenga en cuenta que para cargar la versión más reciente de un secreto, la referencia de Key Vault no debe ser un secreto con versiones.

En el ejemplo siguiente se actualizan todos los secretos sin versiones de Key Vault cada hora.

apiVersion: azconfig.io/v1
kind: AzureAppConfigurationProvider
metadata:
  name: appconfigurationprovider-sample
spec:
  endpoint: <your-app-configuration-store-endpoint>
  target:
    configMapName: configmap-created-by-appconfig-provider
  configuration:
    selectors:
      - keyFilter: app1*
        labelFilter: common
  secret:
    target:
      secretName: secret-created-by-appconfig-provider
    auth:
      managedIdentityClientId: <your-user-assigned-managed-identity-client-id>
    refresh:
      enabled: true
      interval: 1h

Marcas de características

En el ejemplo siguiente, se descargan y actualizan las marcas de características con claves a partir app1 de las etiquetas y equivalentes a common cada 10 minutos. Tenga en cuenta que para rellenar las marcas de características en el ConfigMap generado, la configMapData.type propiedad debe ser json o yaml.

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: appSettings.json
  featureFlag:
    selectors:
      - keyFilter: app1*
        labelFilter: common
    refresh:
      enabled: true
      interval: 10m

Actualización a petición

Aunque puede configurar la actualización automática de datos, 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 ello, agregue o actualice las anotaciones de la metadata.annotations sección de AzureAppConfigurationProvider. A continuación, el proveedor de Kubernetes reconciliará y actualizará ConfigMap y Secret con los datos más recientes del almacén de App Configuration y Key Vault.

En el ejemplo siguiente, AzureAppConfigurationProvider se actualiza con una nueva anotación. Después de la modificación, aplique los cambios mediante kubectl apply para desencadenar una actualización a petición.

apiVersion: azconfig.io/v1
kind: AzureAppConfigurationProvider
metadata:
  name: appconfigurationprovider-sample
  annotations:
    key1: value1
spec:
  endpoint: <your-app-configuration-store-endpoint>
  target:
    configMapName: configmap-created-by-appconfig-provider
  configuration:
    selectors:
      - keyFilter: app1*
        labelFilter: common
  secret:
    target:
      secretName: secret-created-by-appconfig-provider
    auth:
      managedIdentityClientId: <your-user-assigned-managed-identity-client-id>

Consumo de ConfigMap

Las aplicaciones que se ejecutan en Kubernetes normalmente consumen ConfigMap como variables de entorno o como archivos de configuración. Si la propiedad configMapData.type no está presente o está establecida en su valor predeterminado, ConfigMap se rellena con la lista detallada de datos recuperados de Azure App Configuration, que se pueden consumir fácilmente como variables de entorno. Si la propiedad configMapData.type se establece en json, yaml o properties, los datos recuperados de Azure App Configuration se agrupan en un elemento con el nombre de clave especificado por la configMapData.key propiedad en el ConfigMap generado, que se puede consumir como un archivo montado.

En los ejemplos siguientes se muestra cómo se rellenan los datos en el ConfigMap generado con una configuración diferente de la propiedad configMapData.type.

Suponiendo que un almacén de App Configuration tenga estos valores de clave:

clave valor
Clave1 value1
Clave2 value2
key3 value3

Y la configMapData.type propiedad está ausente o se establece en default,

apiVersion: azconfig.io/v1
kind: AzureAppConfigurationProvider
metadata:
  name: appconfigurationprovider-sample
spec:
  endpoint: <your-app-configuration-store-endpoint>
  target:
    configMapName: configmap-created-by-appconfig-provider

ConfigMap generado se rellena con los datos siguientes:

data:
  key1: value1
  key2: value2
  key3: value3