Partilhar via


Referência do Provedor Kubernetes de Configuração de Aplicativo do Azure

A referência a seguir descreve as propriedades suportadas pelo Provedor Kubernetes de Configuração de Aplicativo do v2.3.0 Azure ou posterior. Consulte as notas de versão para obter mais informações sobre a alteração.

Propriedades

Um AzureAppConfigurationProvider recurso tem as seguintes propriedades filho de nível superior sob o spec. Ou endpointconnectionStringReference tem de ser especificado.

Nome Descrição Obrigatório Tipo
ponto final O ponto de extremidade da Configuração do Aplicativo do Azure, do qual você gostaria de recuperar os valores-chave. alternativa cadeia (de caracteres)
connectionStringReference O nome do Segredo do Kubernetes que contém a cadeia de conexão Configuração do Aplicativo do Azure. alternativa cadeia (de caracteres)
replicaDiscoveryEnabled A configuração que determina se as réplicas da Configuração do Aplicativo do Azure são automaticamente descobertas e usadas para failover. Se a propriedade estiver ausente, um valor padrão de true será usado. falso booleano
loadBalancingEnabled A configuração que permite que sua carga de trabalho distribua solicitações para a Configuração do Aplicativo em todas as réplicas disponíveis. Se a propriedade estiver ausente, um valor padrão de false será usado. falso booleano
destino O destino dos valores-chave recuperados no Kubernetes. verdadeiro objecto
autenticação O método de autenticação para acessar a Configuração do Aplicativo do Azure. falso objecto
configuração As configurações para consultar e processar valores de chave na Configuração do Aplicativo do Azure. falso objecto
segredo As configurações para referências do Cofre da Chave na Configuração do Aplicativo do Azure. condicional objecto
featureFlag As configurações para sinalizadores de recursos na Configuração do Aplicativo do Azure. falso objecto

A spec.target propriedade tem a seguinte propriedade filho.

Nome Descrição Obrigatório Tipo
configMapName O nome do ConfigMap a ser criado. verdadeiro cadeia (de caracteres)
configMapData A configuração que especifica como os dados recuperados devem ser preenchidos no ConfigMap gerado. falso objecto

Se a spec.target.configMapData propriedade não estiver definida, o ConfigMap gerado será preenchido com a lista de valores-chave recuperados da Configuração do Aplicativo do Azure, o que permite que o ConfigMap seja consumido como variáveis de ambiente. Atualize essa propriedade se desejar consumir o ConfigMap como um arquivo montado. Esta propriedade tem as seguintes propriedades filhas.

Nome Descrição Obrigatório Tipo
tipo A configuração que indica como os dados recuperados são construídos no ConfigMap gerado. Os valores permitidos incluem default, jsonyamle properties. opcional cadeia (de caracteres)
chave O nome da chave dos dados recuperados quando o type está definido como json, yaml ou properties. Defina-o como o nome do arquivo se o ConfigMap estiver configurado para ser consumido como um arquivo montado. condicional cadeia (de caracteres)
separador O delimitador usado para gerar os dados do ConfigMap em formato hierárquico quando o tipo é definido como json ou yaml. O separador está vazio por padrão e o ConfigMap gerado contém valores-chave em sua forma original. Configure essa configuração somente se o carregador de arquivos de configuração usado em seu aplicativo não puder carregar valores-chave sem convertê-los para o formato hierárquico. opcional cadeia (de caracteres)

A spec.auth propriedade não será necessária se a cadeia de conexão da sua loja de Configuração de Aplicativo for fornecida pela definição da spec.connectionStringReference propriedade. Caso contrário, uma das identidades, entidade de serviço, identidade de carga de trabalho ou identidade gerenciada, será usada para autenticação. O spec.auth tem as seguintes propriedades filhas. Apenas um deles deve ser especificado. Se nenhum deles for definido, a identidade gerenciada atribuída ao sistema do conjunto de escala da máquina virtual será usada.

Nome Descrição Obrigatório Tipo
servicePrincipalReference O nome do Segredo do Kubernetes que contém as credenciais de uma entidade de serviço. O segredo deve estar no mesmo namespace que o provedor do Kubernetes. falso cadeia (de caracteres)
workloadIdentity As configurações para usar a identidade da carga de trabalho. falso objecto
managedIdentityClientId A ID do cliente da identidade gerenciada atribuída pelo usuário do conjunto de dimensionamento da máquina virtual. falso cadeia (de caracteres)

A spec.auth.workloadIdentity propriedade tem a seguinte propriedade filho.

Nome Descrição Obrigatório Tipo
serviceAccountName O nome da conta de serviço associada à identidade da carga de trabalho. verdadeiro cadeia (de caracteres)

O spec.configuration tem as seguintes propriedades filhas.

Nome Descrição Obrigatório Tipo
seletores A lista de seletores para filtragem chave-valor. falso matriz de objetos
trimKeyPrefixes A lista de prefixos de chave a serem cortados. falso matriz de cadeia de caracteres
actualizar As configurações para atualizar valores-chave da Configuração do Aplicativo do Azure. Se a propriedade estiver ausente, os valores-chave da Configuração do Aplicativo do Azure não serão atualizados. falso objecto

Se a spec.configuration.selectors propriedade não estiver definida, todos os valores-chave sem rótulo serão baixados. Ele contém uma matriz de objetos seletores , que têm as seguintes propriedades filhas. Observe que os valores-chave do último seletor têm precedência e substituem quaisquer teclas sobrepostas dos seletores anteriores.

Nome Descrição Obrigatório Tipo
keyFilter O filtro de chave para consultar valores-chave. Esta propriedade e a snapshotName propriedade não devem ser definidas ao mesmo tempo. alternativa cadeia (de caracteres)
labelFiltrar O filtro de rótulo para consultar valores-chave. Esta propriedade e a snapshotName propriedade não devem ser definidas ao mesmo tempo. falso cadeia (de caracteres)
tagFiltros A etiqueta filtra para consultar valores-chave. Esta propriedade e a snapshotName propriedade não devem ser definidas ao mesmo tempo. O filtro de etiquetas deve ser formatado como tag1=value1. falso matriz de cadeia de caracteres
nome do instantâneo O nome de um instantâneo a partir do qual os valores-chave são carregados. Esta propriedade não deve ser usada em conjunto com outras propriedades. alternativa cadeia (de caracteres)

A spec.configuration.refresh propriedade tem as seguintes propriedades filhas.

Nome Descrição Obrigatório Tipo
ativado A configuração que determina se os valores-chave da Configuração do Aplicativo do Azure são atualizados automaticamente. Se a propriedade estiver ausente, um valor padrão de false será usado. falso booleano
monitorização Os valores-chave monitorados para deteção de alterações, também conhecidos como chaves sentinela. Os valores-chave da Configuração de Aplicativo do Azure são atualizados somente se pelo menos um dos valores-chave monitorados for alterado. Se essa propriedade estiver ausente, todos os valores-chave selecionados serão monitorados para atualização. falso objecto
intervalo O intervalo no qual os valores-chave são atualizados da Configuração do Aplicativo do Azure. Deve ser maior ou igual a 1 segundo. Se a propriedade estiver ausente, um valor padrão de 30 segundos será usado. falso String de duração

O spec.configuration.refresh.monitoring.keyValues é uma matriz de objetos, que têm as seguintes propriedades filhas.

Nome Descrição Obrigatório Tipo
chave A chave de um valor-chave. verdadeiro cadeia (de caracteres)
etiqueta O rótulo de um valor-chave. falso cadeia (de caracteres)

A spec.secret propriedade tem as seguintes propriedades filhas. É necessário se se espera que alguma referência do Cofre da Chave seja baixada. Para saber mais sobre o suporte para tipos internos de segredos do Kubernetes, consulte Tipos de segredo.

Nome Descrição Obrigatório Tipo
destino O destino dos segredos recuperados no Kubernetes. verdadeiro objecto
autenticação O método de autenticação para acessar os Cofres de Chaves. falso objecto
actualizar As configurações para atualizar dados dos Cofres de Chaves. Se a propriedade estiver ausente, os dados dos Cofres de Chaves não serão atualizados, a menos que as referências correspondentes do Cofre de Chaves sejam recarregadas. falso objecto

A spec.secret.target propriedade tem a seguinte propriedade filho.

Nome Descrição Obrigatório Tipo
nomeSegredo O nome do Segredo do Kubernetes a ser criado. verdadeiro cadeia (de caracteres)
secretData A configuração que especifica como os dados recuperados devem ser preenchidos no Segredo gerado. verdadeiro cadeia (de caracteres)

Se a spec.secret.target.secretData propriedade não estiver definida, o Segredo gerado será preenchido com a lista de valores-chave recuperados dos Cofres de Chaves, o que permite que o Segredo seja consumido como variáveis de ambiente. Atualize esta propriedade se desejar consumir o Secret como um arquivo montado. Esta propriedade tem as seguintes propriedades filhas.

Nome Descrição Obrigatório Tipo
tipo A configuração que indica como os dados recuperados são construídos no Segredo gerado. Os valores permitidos incluem default, jsonyamle properties. opcional cadeia (de caracteres)
chave O nome da chave dos dados recuperados quando o type está definido como json, yaml ou properties. Defina-o como o nome do arquivo se o Segredo estiver configurado para ser consumido como um arquivo montado. condicional cadeia (de caracteres)
separador O delimitador usado para produzir os dados secretos em formato hierárquico quando o tipo é definido como json ou yaml. O separador está vazio por padrão e o Segredo gerado contém valores-chave em sua forma original. Configure essa configuração somente se o carregador de arquivos de configuração usado em seu aplicativo não puder carregar valores-chave sem convertê-los para o formato hierárquico. opcional cadeia (de caracteres)

Se a spec.secret.auth propriedade não estiver definida, a identidade gerenciada atribuída ao sistema será usada. Tem as seguintes propriedades filhas.

Nome Descrição Obrigatório Tipo
servicePrincipalReference O nome do Segredo do Kubernetes que contém as credenciais de uma entidade de serviço usada para autenticação com Cofres de Chaves que não têm métodos de autenticação individuais especificados. falso cadeia (de caracteres)
workloadIdentity As configurações da identidade da carga de trabalho usada para autenticação com Cofres de Chaves que não têm métodos de autenticação individuais especificados. Tem a mesma propriedade infantil que spec.auth.workloadIdentity. falso objecto
managedIdentityClientId A ID do cliente de uma identidade gerenciada atribuída pelo usuário do conjunto de escala de máquina virtual usado para autenticação com Cofres de Chaves que não têm métodos de autenticação individuais especificados. falso cadeia (de caracteres)
keyVaults [en] Os métodos de autenticação para Cofres de Chaves individuais. falso matriz de objetos

O método de autenticação de cada Cofre da Chave pode ser especificado com as seguintes propriedades. Um dos managedIdentityClientId, servicePrincipalReference ou workloadIdentity deve ser fornecido.

Nome Descrição Obrigatório Tipo
URI O URI de um cofre de chaves. verdadeiro cadeia (de caracteres)
servicePrincipalReference O nome do Segredo do Kubernetes que contém as credenciais de uma entidade de serviço usada para autenticação com um Cofre de Chaves. falso cadeia (de caracteres)
workloadIdentity As configurações da identidade da carga de trabalho usada para autenticação com um Cofre de Chaves. Tem a mesma propriedade infantil que spec.auth.workloadIdentity. falso objecto
managedIdentityClientId A ID do cliente de uma identidade gerenciada atribuída pelo usuário do conjunto de escala de máquina virtual usado para autenticação com um Cofre de Chaves. falso cadeia (de caracteres)

A spec.secret.refresh propriedade tem as seguintes propriedades filhas.

Nome Descrição Obrigatório Tipo
ativado A configuração que determina se os dados dos Cofres de Chaves são atualizados automaticamente. Se a propriedade estiver ausente, um valor padrão de false será usado. falso booleano
intervalo O intervalo no qual os dados são atualizados do Cofre da Chave. Deve ser maior ou igual a 1 minuto. A atualização do Cofre da Chave é independente da atualização da Configuração do Aplicativo configurada via spec.configuration.refresh. verdadeiro String de duração

A spec.featureFlag propriedade tem as seguintes propriedades filhas. É necessário se se espera que algum sinalizador de recurso seja baixado.

Nome Descrição Obrigatório Tipo
seletores A lista de seletores para filtragem de sinalizadores de recursos. falso matriz de objetos
actualizar As configurações para atualizar sinalizadores de recursos da Configuração do Aplicativo do Azure. Se a propriedade estiver ausente, os sinalizadores de recursos da Configuração do Aplicativo do Azure não serão atualizados. falso objecto

Se a spec.featureFlag.selectors propriedade não estiver definida, os sinalizadores de recursos não serão baixados. Ele contém uma matriz de objetos seletores , que têm as seguintes propriedades filhas. Observe que os sinalizadores de recursos do último seletor têm precedência e substituem quaisquer teclas sobrepostas dos seletores anteriores.

Nome Descrição Obrigatório Tipo
keyFilter O filtro de chave para consultar sinalizadores de recursos. Esta propriedade e a snapshotName propriedade não devem ser definidas ao mesmo tempo. alternativa cadeia (de caracteres)
labelFiltrar O filtro de rótulo para consultar sinalizadores de recursos. Esta propriedade e a snapshotName propriedade não devem ser definidas ao mesmo tempo. falso cadeia (de caracteres)
tagFiltros A etiqueta filtra para consultar flags de funcionalidades. Esta propriedade e a snapshotName propriedade não devem ser definidas ao mesmo tempo. O filtro de etiquetas deve ser formatado como tag1=value1. falso matriz de cadeia de caracteres
nome do instantâneo O nome de um instantâneo a partir do qual os sinalizadores de recursos são carregados. Esta propriedade não deve ser usada em conjunto com outras propriedades. alternativa cadeia (de caracteres)

A spec.featureFlag.refresh propriedade tem as seguintes propriedades filhas.

Nome Descrição Obrigatório Tipo
ativado A configuração que determina se os sinalizadores de recursos da Configuração do Aplicativo do Azure são atualizados automaticamente. Se a propriedade estiver ausente, um valor padrão de false será usado. falso booleano
intervalo O intervalo no qual os sinalizadores de recurso são atualizados da Configuração do Aplicativo do Azure. Deve ser maior ou igual a 1 segundo. Se a propriedade estiver ausente, um valor padrão de 30 segundos será usado. falso String de duração

Instalação

Use o comando a seguir helm install para instalar o Provedor Kubernetes de Configuração do Aplicativo Azure. Consulte helm-values.yaml para obter a lista completa de parâmetros e seus valores padrão. Você pode substituir os valores padrão passando o --set sinalizador para o comando.

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

Dimensionamento automático

Por padrão, o dimensionamento automático está desativado. No entanto, se você tiver vários AzureAppConfigurationProvider recursos para produzir vários ConfigMaps/Secrets, poderá habilitar o dimensionamento automático horizontal do pod definindo autoscaling.enabled como true.

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

Recolha de dados

O software pode coletar informações sobre você e seu uso do software e enviá-las à Microsoft. A Microsoft poderá utilizar estas informações para fornecer serviços e melhorar os nossos produtos e serviços. Você pode desativar a telemetria definindo o durante a requestTracing.enabled=false instalação do Provedor Kubernetes de Configuração do Aplicativo do Azure. Há também alguns recursos no software que podem permitir que você e a Microsoft coletem dados de usuários de seus aplicativos. Se utilizar estas funcionalidades, tem de cumprir a lei aplicável, incluindo o fornecimento de avisos apropriados aos utilizadores das suas aplicações, juntamente com uma cópia da declaração de privacidade da Microsoft. A declaração de privacidade da Microsoft está localizada em https://go.microsoft.com/fwlink/?LinkID=824704. Pode saber mais sobre a recolha e utilização de dados na documentação de ajuda e na nossa declaração de privacidade. A utilização do software por parte do Cliente funciona como o consentimento do Cliente destas práticas.

Exemplos

Autenticação

Usar a identidade gerenciada atribuída pelo sistema do conjunto de dimensionamento da máquina virtual

  1. Habilite a identidade gerenciada atribuída ao sistema no conjunto de escala de máquina virtual usado pelo cluster do Serviço Kubernetes do Azure (AKS).

  2. Conceda a função de Leitor de Dados de Configuração de Aplicativo de identidade gerenciada atribuída pelo sistema na Configuração de Aplicativo do Azure.

  3. Implante o seguinte recurso de exemplo AzureAppConfigurationProvider no cluster 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
    

Usar a identidade gerenciada atribuída pelo usuário do conjunto de dimensionamento da máquina virtual

  1. Crie uma identidade gerenciada atribuída pelo usuário e anote sua ID de cliente após a criação.

  2. Atribua a identidade gerenciada atribuída pelo usuário ao conjunto de escala de máquina virtual usado pelo cluster do Serviço Kubernetes do Azure (AKS).

  3. Conceda a função de Leitor de Dados de Configuração de Aplicativo de identidade gerenciada atribuída pelo usuário na Configuração de Aplicativo do Azure.

  4. Defina a spec.auth.managedIdentityClientId propriedade como a ID do cliente da identidade gerenciada atribuída pelo usuário no recurso de exemplo AzureAppConfigurationProvider a seguir e implante-a no cluster 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>
    

Usar entidade de serviço

  1. Criar um Principal do Serviço

  2. Conceda a função de Leitor de Dados de Configuração de Aplicativo da entidade de serviço na Configuração de Aplicativo do Azure.

  3. Crie um Segredo do Kubernetes no mesmo namespace que o AzureAppConfigurationProvider recurso e adicione azure_client_id, azure_client_secret e azure_tenant_id da entidade de serviço ao Segredo.

  4. Defina a spec.auth.servicePrincipalReference propriedade como o nome do Segredo no recurso de exemplo AzureAppConfigurationProvider a seguir e implante-a no cluster do 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>
    

Usar identidade de carga de trabalho

  1. Habilite a Identidade da Carga de Trabalho no cluster do Serviço Kubernetes do Azure (AKS).

  2. Obtenha o URL do emissor OIDC do cluster AKS.

  3. Crie uma identidade gerenciada atribuída pelo usuário e anote sua ID de cliente, ID de locatário, nome e grupo de recursos.

  4. Conceda a função de Leitor de Dados de Configuração de Aplicativo de identidade gerenciada atribuída pelo usuário na Configuração de Aplicativo do Azure.

  5. Crie uma conta de serviço adicionando um arquivo YAML (por exemplo, serviceAccount.yaml) com o seguinte conteúdo ao diretório que contém seus arquivos de implantação do AKS. A conta de serviço será criada quando você aplicar todas as alterações de implantação ao cluster AKS (por exemplo, usando kubectl apply). Substitua <your-managed-identity-client-id> pela ID do cliente e <your-managed-identity-tenant-id> pela ID do locatário da identidade gerenciada atribuída pelo usuário que acabou de ser criada. Substitua <your-service-account-name> pelo seu nome 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. Crie uma credencial de identidade federada para a identidade gerenciada atribuída pelo usuário usando a CLI do Azure. Substitua <user-assigned-identity-name> pelo nome e <resource-group> pelo grupo de recursos da identidade gerenciada recém-criada atribuída pelo usuário. Substitua <aks-oidc-issuer> pelo URL do emissor OIDC do cluster AKS. Substitua <your-service-account-name> pelo nome da conta de serviço recém-criada. Substitua <federated-identity-credential-name> pelo seu nome preferido para a credencial de identidade 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
    

    Observe que o assunto da credencial de identidade federada deve seguir este formato: system:serviceaccount:<service-account-namespace>:<service-account-name>.

  7. Defina a spec.auth.workloadIdentity.serviceAccountName propriedade como o nome da conta de serviço no recurso de exemplo AzureAppConfigurationProvider a seguir. Certifique-se de que o AzureAppConfigurationProvider recurso e a conta de serviço estão no mesmo namespace.

    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>
    

Usar cadeia de conexão

  1. Crie um Segredo do Kubernetes no mesmo namespace que o recurso e adicione a AzureAppConfigurationProvider cadeia de conexão Configuração do Aplicativo do Azure com azure_app_configuration_connection_string de chave no Segredo.

  2. Defina a spec.connectionStringReference propriedade como o nome do Segredo no recurso de exemplo AzureAppConfigurationProvider a seguir e implante-a no cluster do 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
    

Seleção de chave-valor

Use a selectors propriedade para filtrar os valores-chave a serem baixados da Configuração do Aplicativo do Azure.

O exemplo a seguir baixa todos os valores-chave sem rótulo.

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

No exemplo a seguir, dois seletores são usados para recuperar dois conjuntos de valores-chave, cada um com rótulos exclusivos. É importante notar que os valores do último seletor têm precedência e substituem quaisquer teclas sobrepostas dos seletores 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

Filtros de etiquetas também podem ser usados para filtrar valores-chave. No exemplo seguinte, apenas os valores-chave com a etiqueta env=prod são descarregados.

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

Um instantâneo pode ser usado sozinho ou em conjunto com outros seletores de chave-valor. No exemplo a seguir, você carrega valores-chave de configuração comum de um instantâneo e, em seguida, substitui alguns deles por valores-chave para desenvolvimento.

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

Corte de prefixo de chave

O exemplo a seguir usa a trimKeyPrefixes propriedade para cortar dois prefixos de nomes de chave antes de adicioná-los ao ConfigMap gerado.

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]

Atualização de configuração

Ao fazer alterações em seus dados na Configuração do Aplicativo do Azure, convém que essas alterações sejam atualizadas automaticamente no cluster do Kubernetes. No exemplo a seguir, o provedor do Kubernetes verifica a Configuração do Aplicativo do Azure em busca de atualizações a cada minuto. O ConfigMap e o Secret associados são regenerados somente quando as alterações são detetadas. Para obter mais informações sobre como monitorar alterações de configuração, consulte Práticas recomendadas para atualização de configuração.

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

Referências do Key Vault

Autenticação

No exemplo a seguir, um Cofre de Chaves é autenticado com uma entidade de serviço, enquanto todos os outros Cofres de Chaves são autenticados com uma identidade gerenciada atribuída pelo usuário.

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 Segredo

Dois tipos internos de segredos do Kubernetes, Opaco e TLS, são atualmente suportados. Os segredos resolvidos a partir de referências do Cofre da Chave são salvos como o tipo Segredo Opaco por padrão. Se você tiver uma referência do Cofre da Chave a um certificado e quiser salvá-lo como o tipo Segredo TLS, poderá adicionar uma tag com o seguinte nome e valor à referência do Cofre da Chave na Configuração do Aplicativo do Azure. Ao fazer isso, um Segredo com o kubernetes.io/tls tipo será gerado e nomeado após a chave da referência do Cofre da Chave.

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

Os exemplos a seguir mostram como os dados são preenchidos nos Segredos gerados com diferentes tipos.

Supondo que uma loja de configuração de aplicativos tenha estas referências do Cofre da Chave:

chave valor etiquetas
app1-secret1 <Referência do Cofre da Chave 1> {}
app1-secret2 <Referência 2 do Cofre da Chave> {}
app1-certificado <Referência 3 do Cofre da Chave> {".kubernetes.secret.type": "kubernetes.io/tls"}

O exemplo a seguir gera segredos dos tipos opaco e 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>

Os Segredos gerados são preenchidos com os seguintes dados:

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>

Atualização de segredos do Cofre da Chave

A atualização de segredos dos Cofres de Chaves geralmente requer o recarregamento das referências correspondentes do Cofre de Chaves da Configuração de Aplicativo do Azure. No entanto, com a spec.secret.refresh propriedade, você pode atualizar os segredos do Cofre da Chave de forma independente. Isso é especialmente útil para garantir que sua carga de trabalho pegue automaticamente todos os segredos atualizados do Cofre da Chave durante a rotação secreta. Observe que, para carregar a versão mais recente de um segredo, a referência do Cofre da Chave não deve ser um segredo versionado.

O exemplo a seguir atualiza todos os segredos sem versão do Cofre da Chave a 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

Sinalizadores de recursos

No exemplo a seguir, sinalizadores de recursos com teclas começando com app1 e rótulos equivalentes a são baixados e atualizados a common cada 10 minutos. Observe que para preencher sinalizadores de recursos no ConfigMap gerado, a configMapData.type propriedade deve ser json ou 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

Atualização sob demanda

Embora você possa configurar a atualização automática de dados, há momentos em que convém acionar uma atualização sob demanda para obter os dados mais recentes da Configuração do Aplicativo e do Cofre de Chaves. Isso pode ser feito adicionando ou atualizando quaisquer anotações na metadata.annotations seção AzureAppConfigurationProviderdo . O provedor do Kubernetes reconciliará e atualizará o ConfigMap e o Secret com os dados mais recentes da sua loja de Configuração de Aplicativos e do Cofre de Chaves.

No exemplo a seguir, o AzureAppConfigurationProvider é atualizado com uma nova anotação. Após a modificação, aplique as alterações usando kubectl apply para disparar uma atualização sob demanda.

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 do ConfigMap

Os aplicativos executados no Kubernetes normalmente consomem o ConfigMap como variáveis de ambiente ou como arquivos de configuração. Se a configMapData.type propriedade estiver ausente ou definida como padrão, o ConfigMap será preenchido com a lista detalhada de dados recuperados da Configuração do Aplicativo do Azure, que podem ser facilmente consumidos como variáveis de ambiente. Se a propriedade estiver definida como json, yaml ou properties, os configMapData.type dados recuperados da Configuração do Aplicativo do Azure serão agrupados em um item com o nome da configMapData.key chave especificado pela propriedade no ConfigMap gerado, que pode ser consumido como um arquivo montado.

Os exemplos a seguir mostram como os dados são preenchidos no ConfigMap gerado com diferentes configurações da configMapData.type propriedade.

Supondo que uma loja de configuração de aplicativos tenha estes valores-chave:

chave valor
chave1 valor1
chave2 valor2
Chave3 valor3

E a configMapData.type propriedade está ausente ou definida como 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

O ConfigMap gerado é preenchido com os seguintes dados:

data:
  key1: value1
  key2: value2
  key3: value3