Compartilhar via


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

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

Propriedades

Um recurso AzureAppConfigurationProvider tem as seguintes propriedades filho de nível superior sob o spec. endpoint ou connectionStringReference precisa ser especificado.

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

A propriedade spec.target tem a propriedade filho a seguir.

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

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 de Aplicativos 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. Essa propriedade tem as propriedades filho a seguir.

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, json, yaml e properties. opcionais corda
chave O nome da chave dos dados recuperados quando o type estiver 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 corda
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 chaves-valor em sua forma original. Defina essa configuração somente se o carregador de arquivos de configuração usado em seu aplicativo não puder carregar chaves-valor sem convertê-las no formato hierárquico. opcionais corda

A propriedade spec.auth não será necessária se a cadeia de conexão do repositório da Configuração de Aplicativos for fornecida definindo a propriedade spec.connectionStringReference. 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 propriedades filho a seguir. Apenas uma delas deve ser especificada. Se nenhum deles for definido, a identidade gerenciada atribuída pelo sistema do conjunto de dimensionamento de máquinas virtuais 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 corda
workloadIdentity As configurações para usar a identidade da carga de trabalho. falso objeto
managedIdentityClientId A ID do cliente da identidade gerenciada atribuída pelo usuário do conjunto de dimensionamento de máquinas virtuais. falso corda

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

Nome Descrição Obrigatório Tipo
nome_da_conta_serviço O nome da conta de serviço associada à identidade da carga de trabalho. verdadeiro corda

O spec.configuration tem as propriedades filho a seguir.

Nome Descrição Obrigatório Tipo
seletores A lista de seletores para filtragem de valor-chave. falso matriz de objetos
trimKeyPrefixes A lista de prefixos chave a serem cortados. falso Matriz de cadeia de caracteres
atualizar As configurações para atualizar chaves-valor da Configuração de Aplicativos do Azure. Se a propriedade estiver ausente, as chaves-valor da Configuração de Aplicativos do Azure não serão atualizadas. falso objeto

Se a spec.configuration.selectors propriedade não estiver definida, todas as chaves-valor sem rótulo serão baixadas. Contém uma matriz de objetos seletores, que têm as propriedades filho a seguir. Observe que as chaves-valor do último seletor têm precedência e substituem quaisquer chaves sobrepostas dos seletores anteriores.

Nome Descrição Obrigatório Tipo
keyFilter O filtro chave para consultar valores-chave. Essa propriedade e a snapshotName propriedade não devem ser definidas ao mesmo tempo. alternativa corda
labelFilter O filtro de rótulo para consultar valores-chave. Essa propriedade e a snapshotName propriedade não devem ser definidas ao mesmo tempo. falso corda
nome instantâneo O nome de um instantâneo do qual as chaves-valor são carregadas. Essa propriedade não deve ser usada em conjunto com outras propriedades. alternativa corda

A propriedade spec.configuration.refresh tem as propriedades filho a seguir.

Nome Descrição Obrigatório Tipo
Habilitado A configuração que determina se as chaves-valor da Configuração de Aplicativos do Azure são atualizadas automaticamente. Se a propriedade estiver ausente, um valor padrão de false será usado. falso Bool
monitoramento Os valores-chave monitorados para detecção de alterações, também conhecidos como chaves sentinelas. As chaves-valor da Configuração de Aplicativos do Azure serão atualizadas somente se pelo menos uma das chaves-valores monitoradas for alterada. Se essa propriedade estiver ausente, todas as chaves-valor selecionadas serão monitoradas para atualização. falso objeto
intervalo O intervalo no qual as chaves-valor são atualizadas da Configuração de Aplicativos do Azure. Ele precisa ser maior ou igual a 1. Se a propriedade estiver ausente, um valor padrão de 30 segundos será usado. falso cadeia de caracteres de duração

O spec.configuration.refresh.monitoring.keyValues é uma matriz de objetos que contém as propriedades filho a seguir.

Nome Descrição Obrigatório Tipo
chave A chave de um par chave-valor. verdadeiro corda
etiqueta O rótulo de um par chave-valor. falso corda

A propriedade spec.secret tem as propriedades filho a seguir. É necessário se alguma referência do Key Vault deve ser baixada. Para saber mais sobre o suporte para tipos de segredos internos do Kubernetes, consulte Tipos de segredos.

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

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

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

Se a spec.secret.target.secretData propriedade não estiver definida, o Segredo gerado será preenchido com a lista de valores-chave recuperados dos Key Vaults, o que permite que o Segredo seja consumido como variáveis de ambiente. Atualize essa propriedade se você quiser consumir o Segredo como um arquivo montado. Essa propriedade tem as propriedades filho a seguir.

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, json, yaml e properties. opcionais corda
chave O nome da chave dos dados recuperados quando o type estiver 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 corda
separador O delimitador usado para gerar os dados secretos no formato hierárquico quando o tipo é definido json como ou yaml. O separador está vazio por padrão e o Segredo gerado contém valores-chave em sua forma original. Defina essa configuração somente se o carregador de arquivos de configuração usado em seu aplicativo não puder carregar chaves-valor sem convertê-las no formato hierárquico. opcionais corda

Se a propriedade spec.secret.auth não estiver definida, a identidade gerenciada atribuída pelo sistema será usada. Ele tem as propriedades filho a seguir.

Nome Descrição Obrigatório Tipo
servicePrincipalReference O nome do Segredo do Kubernetes que contém as credenciais de uma entidade de serviço usadas para autenticação com Key Vaults que não têm métodos de autenticação individuais especificados. falso corda
workloadIdentity As configurações da identidade da carga de trabalho usada para autenticação com Key Vaults que não têm métodos de autenticação individuais especificados. Ele tem a mesma propriedade filho que spec.auth.workloadIdentity. falso objeto
managedIdentityClientId A ID do cliente de uma identidade gerenciada atribuída pelo usuário do conjunto de dimensionamento de máquinas virtuais usado para autenticação com Key Vaults que não têm métodos de autenticação individuais especificados. falso corda
keyVaults Os métodos de autenticação para Key Vaults individuais. falso matriz de objetos

O método de autenticação de cada Key Vault pode ser especificado com as propriedades a seguir. Um de managedIdentityClientId, servicePrincipalReference ou workloadIdentity deve ser fornecido.

Nome Descrição Obrigatório Tipo
URI O URI de um Key Vault. verdadeiro corda
servicePrincipalReference O nome do Segredo do Kubernetes que contém as credenciais de uma entidade de serviço usada para autenticação com um Key Vault. falso corda
workloadIdentity As configurações da identidade da carga de trabalho usada para autenticação com um Key Vault. Ele tem a mesma propriedade filho que spec.auth.workloadIdentity. falso objeto
managedIdentityClientId A ID do cliente de uma identidade gerenciada atribuída pelo usuário do conjunto de dimensionamento de máquinas virtuais usado para autenticação com um Key Vault. falso corda

A propriedade spec.secret.refresh tem as propriedades filho a seguir.

Nome Descrição Obrigatório Tipo
Habilitado A configuração que determina se os dados de Key Vaults são atualizados automaticamente. Se a propriedade estiver ausente, um valor padrão de false será usado. falso Bool
intervalo O intervalo no qual os dados são atualizados do Key Vault. Ele precisa ser maior ou igual a 1 segundo. A atualização do Key Vault é independente da atualização da Configuração de Aplicativos configurada por meio de spec.configuration.refresh. verdadeiro cadeia de caracteres de duração

A propriedade spec.featureFlag tem as propriedades filho a seguir. Ele é necessário se algum sinalizador de recurso for baixado.

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

Se a spec.featureFlag.selectors propriedade não estiver definida, os sinalizadores de recurso não serão baixados. Contém uma matriz de objetos seletores, que têm as propriedades filho a seguir. Observe que os sinalizadores de recurso do último seletor têm precedência e substituem quaisquer chaves sobrepostas dos seletores anteriores.

Nome Descrição Obrigatório Tipo
keyFilter O filtro de chave para consultar sinalizadores de recursos. Essa propriedade e a snapshotName propriedade não devem ser definidas ao mesmo tempo. alternativa corda
labelFilter O filtro de rótulo para consultar sinalizadores de recursos. Essa propriedade e a snapshotName propriedade não devem ser definidas ao mesmo tempo. falso corda
nome instantâneo O nome de um instantâneo do qual os sinalizadores de recurso são carregados. Essa propriedade não deve ser usada em conjunto com outras propriedades. alternativa corda

A propriedade spec.featureFlag.refresh tem as propriedades filho a seguir.

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

Instalação

Use o comando a seguir helm install para instalar o Provedor de Kubernetes da Configuração de Aplicativos do 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á desabilitado. No entanto, se você tiver vários AzureAppConfigurationProvider recursos para produzir vários ConfigMaps/Secrets, poderá ativar 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

Coleta de dados

O software pode coletar informações sobre você e seu uso do software e enviá-las à Microsoft. A Microsoft pode usar essas informações para fornecer serviços e aprimorar nossos produtos e serviços. Você pode desativar a telemetria definindo o requestTracing.enabled=false durante a instalação do Provedor de Kubernetes da Configuração de Aplicativos do Azure. Há também alguns recursos no software que podem permitir que você e a Microsoft coletem dados dos usuários de seus aplicativos. Se você usar esses recursos, deverá cumprir a lei aplicável, incluindo o fornecimento de avisos apropriados aos usuários de seus aplicativos, juntamente com uma cópia da política de privacidade da Microsoft. Nossa política de privacidade está localizada em https://go.microsoft.com/fwlink/?LinkID=824704. Você pode saber mais sobre a coleta e o uso de dados na documentação de ajuda e em nossa declaração de privacidade. Usar o software significa que você autoriza essas práticas.

Exemplos

Autenticação

Usar a identidade gerenciada atribuída pelo sistema de um conjunto de dimensionamento de máquinas virtuais

  1. Habilite a identidade gerenciada atribuída pelo sistema no conjunto de dimensionamento de máquinas virtuais usado pelo cluster do Serviço de Kubernetes do Azure (AKS).

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

  3. Implante o recurso de amostra AzureAppConfigurationProvider a seguir no cluster do 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 de um conjunto de dimensionamento de máquinas virtuais

  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 dimensionamento de máquinas virtuais usado pelo cluster do Serviço de Kubernetes do Azure (AKS).

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

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

  1. Criar uma entidade de serviço

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

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

  4. Defina a propriedade spec.auth.servicePrincipalReference como o nome do Segredo no recurso de amostra 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 a identidade da carga de trabalho

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

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

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

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

  5. Crie uma conta de serviço adicionando um arquivo YAML (por exemplo, serviceAccount.yaml) com o conteúdo a seguir ao diretório que contém os 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 do 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 nome de sua preferência.

    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 atribuída pelo usuário recém-criada. Substitua <aks-oidc-issuer> pela URL do emissor do OIDC do cluster do AKS. Substitua <your-service-account-name> pelo nome da conta de serviço recém-criada. Substitua <federated-identity-credential-name> pelo nome de sua preferência 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 estejam 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 a cadeia de conexão

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

  2. Defina a propriedade spec.connectionStringReference como o nome do Segredo no recurso de amostra 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 valor-chave

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

A amostra 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 observar que os valores do último seletor têm precedência e substituem as chaves 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

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

A amostra a seguir usa a propriedade trimKeyPrefixes para cortar dois prefixos de nomes-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 nos dados na Configuração de Aplicativos do Azure, talvez você queira que essas alterações sejam atualizadas automaticamente no cluster do Kubernetes. No exemplo a seguir, o provedor do Kubernetes verifica a Configuração de Aplicativos do Azure em busca de atualizações a cada minuto. O ConfigMap e o Segredo associados são regenerados somente quando são detectadas alterações. Para obter mais informações sobre como monitorar alterações de configuração, consulte As 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 de Key Vault

Autenticação

No exemplo a seguir, um Key Vault é autenticado com uma entidade de serviço, enquanto todos os outros Key Vaults 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

Atualmente, há suporte para dois tipos de segredos integrados do Kubernetes, Opaque e TLS. Os segredos resolvidos de referências do Key Vault são salvos como o tipo Segredo Opaco por padrão. Se você tiver uma referência do Key Vault a um certificado e quiser salvá-la como o tipo de Segredo TLS, poderá adicionar uma marca com o seguinte nome e valor à referência do Key Vault na Configuração de Aplicativos 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 Key Vault.

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 um repositório da Configuração de Aplicativos tenha estas referências do Key Vault:

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

O exemplo a seguir gera segredos dos tipos Opaque 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 Key Vault

A atualização de segredos dos Key Vaults geralmente requer o recarregamento das referências de Key Vault correspondentes de Configuração de Aplicativos do Azure. No entanto, com a propriedade spec.secret.refresh, você pode atualizar os segredos de Key Vault independentemente. Isso é especialmente útil para garantir que sua carga de trabalho pegue automaticamente todos os segredos atualizados de Key Vault durante a rotação de segredos. Observe que, para carregar a versão mais recente de um segredo, a referência de Key Vault não deve ser um segredo com controle de versão.

O exemplo a seguir atualiza todos os segredos sem controle de versão de Key Vault 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, os sinalizadores de recursos com chaves 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 talvez queira disparar uma atualização sob demanda para obter os dados mais recentes da Configuração de Aplicativos e do Key Vault. Isso pode ser feito adicionando ou atualizando qualquer anotação na metadata.annotations seção do AzureAppConfigurationProvider. O provedor do Kubernetes reconciliará e atualizará o ConfigMap e Secret com os dados mais recentes do repositório de Configuração de Aplicativos e do Key Vault.

No exemplo a seguir, a AzureAppConfigurationProvider atualização é atualizada com uma nova anotação. Após a modificação, aplique as alterações usadas 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 de ConfigMap

Os aplicativos em execução no Kubernetes normalmente consomem o ConfigMap como variáveis de ambiente ou como arquivos de configuração. Se a propriedade configMapData.type estiver ausente ou estiver definida como padrão, o ConfigMap será preenchido com a lista detalhada de dados recuperados da Configuração de Aplicativos do Azure, que podem ser facilmente consumidos como variáveis de ambiente. Se a propriedade configMapData.type estiver definida como json, yaml ou propriedades, os dados recuperados da Configuração de Aplicativos do Azure serão agrupados em um item com o nome da chave especificado pela propriedade configMapData.key 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 as configurações diferentes da propriedade configMapData.type.

Supondo que um repositório da Configuração de Aplicativos tenha estas chaves-valores:

chave valor
chave1 value1
chave2 value2
key3 value3

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