Partager via


Référence du fournisseur Kubernetes Azure App Configuration

La référence suivante décrit les propriétés prises en charge par le fournisseur v2.1.0Kubernetes Azure App Configuration. Pour plus d’informations sur la modification, consultez les notes de publication.

Propriétés

Une ressource AzureAppConfigurationProvider dispose des propriétés enfants de niveau supérieur suivantes sous spec. Soit endpoint ou connectionStringReference doit être spécifié.

Nom Description Obligatoire Type
endpoint Point de terminaison d’Azure App Configuration à partir duquel vous souhaitez récupérer les paires clé-valeur. alternative string
connectionStringReference Le nom du secret Kubernetes qui contient la chaîne de connexion Azure App Configuration. alternative string
replicaDiscoveryEnabled Paramètre qui détermine si les réplicas d’Azure App Configuration sont automatiquement découverts et utilisés pour le basculement. Si la propriété est absente, une valeur true par défaut est utilisée. false bool
loadBalancingEnabled Paramètre qui permet à votre charge de travail de distribuer des demandes à App Configuration sur tous les réplicas disponibles. Si la propriété est absente, une valeur false par défaut est utilisée. false bool
cible Destination des paires clé-valeur récupérées dans Kubernetes. true object
auth Méthode d’authentification pour accéder à Azure App Configuration. false object
configuration Les paramètres d’interrogation et de traitement des valeurs de clé dans Azure App Configuration. false object
secret Les paramètres des références Key Vault dans Azure App Configuration. conditionnelles object
featureFlag Paramètres des indicateurs de fonctionnalité dans Azure App Configuration. false object

La propriété spec.target dispose de la propriété enfant suivante.

Nom Description Obligatoire Type
configMapName Nom du ConfigMap à créer. true string
configMapData Paramètre qui spécifie la façon dont les données récupérées doivent être remplies dans le ConfigMap généré. false object

Si la spec.target.configMapData propriété n’est pas définie, le ConfigMap généré est rempli avec la liste des valeurs clés récupérées à partir d’Azure App Configuration, ce qui permet à ConfigMap d’être consommé en tant que variables d’environnement. Mettez à jour cette propriété si vous souhaitez utiliser configMap en tant que fichier monté. Cette propriété dispose des propriétés enfants suivantes.

Nom Description Obligatoire Type
type Paramètre qui indique comment les données récupérées sont construites dans le ConfigMap généré. Les valeurs autorisées incluent default, json, yaml et properties. facultatifs string
key Nom de clé des données récupérées lorsque est type défini sur json, yaml ou properties. Définissez-le sur le nom de fichier si le ConfigMap est configuré pour être consommé en tant que fichier monté. conditionnelles string
separator Délimiteur utilisé pour générer les données ConfigMap au format hiérarchique lorsque le type est défini json sur ou yaml. Le séparateur est vide par défaut et le ConfigMap généré contient des valeurs clés dans leur formulaire d’origine. Configurez ce paramètre uniquement si le chargeur de fichiers de configuration utilisé dans votre application ne peut pas charger de valeurs clés sans les convertir au format hiérarchique. facultatif string

La propriété spec.auth n’est pas obligatoire si la chaîne de connexion de votre magasin App Configuration est fournie en définissant la propriété spec.connectionStringReference. Sinon, l’une des identités, le principal de service, l’identité de charge de travail ou l’identité managée est utilisée pour l’authentification. spec.auth dispose des propriétés enfants suivantes. Seul l’un d’eux doit être spécifié. Si aucun d’entre eux n’est défini, l’identité managée affectée par le système du groupe de machines virtuelles identiques est utilisée.

Nom Description Obligatoire Type
servicePrincipalReference Nom du secret Kubernetes qui contient les informations d’identification d’un principal de service. Le secret doit se trouver dans le même espace de noms que le fournisseur Kubernetes. false string
workloadIdentity Paramètres d’utilisation de l’identité de charge de travail. false object
managedIdentityClientId ID client de l’identité managée affectée par l’utilisateur du groupe de machines virtuelles identiques. false string

La propriété spec.auth.workloadIdentity dispose de la propriété enfant suivante.

Nom Description Obligatoire Type
serviceAccountName Nom du compte de service associé à l’identité de charge de travail. true string

spec.configuration dispose des propriétés enfants suivantes.

Nom Description Obligatoire Type
sélecteurs Liste des sélecteurs pour le filtrage de paires clé-valeur. false tableau d’objets
trimKeyPrefixes Liste des préfixes de clé à découper. false tableau de chaînes
actualiser Paramètres d’actualisation des valeurs clés à partir d’Azure App Configuration. Si la propriété est absente, les valeurs clés d’Azure App Configuration ne sont pas actualisées. false object

Si la spec.configuration.selectors propriété n’est pas définie, toutes les valeurs de clé sans étiquette sont téléchargées. Cela contient un tableau d’objets sélecteur qui disposent des propriétés enfants suivantes. Notez que les valeurs de clé du dernier sélecteur sont prioritaires et remplacent les clés qui se chevauchent des sélecteurs précédents.

Nom Description Obligatoire Type
keyFilter Filtre de clé pour l’interrogation de paires clé-valeur. Cette propriété et la snapshotName propriété ne doivent pas être définies en même temps. alternative string
labelFilter Filtre d’étiquette pour l’interrogation de paires clé-valeur. Cette propriété et la snapshotName propriété ne doivent pas être définies en même temps. false string
snapshotName Nom d’un instantané à partir duquel les valeurs de clé sont chargées. Cette propriété ne doit pas être utilisée conjointement avec d’autres propriétés. alternative string

La propriété spec.configuration.refresh dispose des propriétés enfants suivantes.

Nom Description Obligatoire Type
activé Paramètre qui détermine si les valeurs clés d’Azure App Configuration sont automatiquement actualisées. Si la propriété est absente, une valeur false par défaut est utilisée. false bool
monitoring Les valeurs clés surveillées pour la détection des modifications, c’est-à-dire les clés sentinelles. Les valeurs clés d’Azure App Configuration sont actualisées uniquement si au moins une des valeurs de clé surveillées est modifiée. Si cette propriété est absente, toutes les valeurs de clé sélectionnées sont surveillées pour l’actualisation. false object
interval Intervalle auquel les valeurs de clé sont actualisées à partir d’Azure App Configuration. Elle doit être supérieure ou égale à 1 seconde. Si la propriété est absente, une valeur par défaut de 30 secondes est utilisée. false chaîne de durée

spec.configuration.refresh.monitoring.keyValues est un tableau d'objets, qui ont les propriétés enfants suivantes.

Nom Description Obligatoire Type
key La clé d'une valeur-clé. true string
label Libellé d'une valeur-clé. false string

La propriété spec.secret dispose des propriétés enfants suivantes. Elle est requise si des références Key Vault (coffre de clé) sont censées être téléchargées. Pour en savoir plus sur la prise en charge des types intégrés de Secrets Kubernetes, consultez Types de secrets.

Nom Description Obligatoire Type
cible Destination des secrets récupérés dans Kubernetes. true object
auth Méthode d’authentification pour accéder aux coffres de clés. false object
actualiser Paramètres d’actualisation des données à partir de Key Vaults. Si la propriété est absente, les données des coffres de clés ne sont pas actualisées, sauf si les références Key Vault correspondantes sont rechargées. false object

La propriété spec.secret.target dispose de la propriété enfant suivante.

Nom Description Obligatoire Type
secretName Nom du secret Kubernetes à créer. true string

Si la propriété spec.secret.auth n’est pas définie, l’identité managée affectée par le système est utilisée. Elle dispose des propriétés enfants suivantes.

Nom Description Obligatoire Type
servicePrincipalReference Le nom du secret Kubernetes qui contient les informations d’identification d’un principal de service utilisé pour l’authentification avec des Key Vaults qui n’ont pas de méthodes d’authentification individuelles spécifiées. false string
workloadIdentity Les paramètres de l’identité de la charge de travail utilisés pour l’authentification avec des Key Vaults qui n’ont pas de méthodes d’authentification individuelles spécifiées. Il a la même propriété enfant que spec.auth.workloadIdentity. false object
managedIdentityClientId L’ID client d’une identité managée affectée par l’utilisateur d’un groupe de machines virtuelles identiques utilisé pour l’authentification avec des Key Vaults qui n’ont pas de méthodes d’authentification individuelles spécifiées. false string
keyVaults Les méthodes d’authentification pour les Key Vaults individuels. false tableau d’objets

La méthode d’authentification de chaque Key Vault peut être spécifiée avec les propriétés suivantes. Un de managedIdentityClientId,servicePrincipalReference ou workloadIdentity doit être fournie.

Nom Description Obligatoire Type
uri L’URI d’un Key Vault (coffre de clés). true string
servicePrincipalReference Nom du secret Kubernetes qui contient les informations d’identification d’un principal de service utilisé pour l’authentification avec un Key Vault. false string
workloadIdentity Paramètres de l’identité de charge de travail utilisée pour l’authentification avec un Key Vault. Il a la même propriété enfant que spec.auth.workloadIdentity. false object
managedIdentityClientId L’ID client d’une identité managée affectée par l’utilisateur d’un groupe de machines virtuelles identiques utilisé pour l’authentification avec un Key Vault. false string

La propriété spec.secret.refresh dispose des propriétés enfants suivantes.

Nom Description Obligatoire Type
activé Le paramètre qui détermine si les données des Key Vaults sont automatiquement actualisées. Si la propriété est absente, une valeur false par défaut est utilisée. false bool
interval Intervalle auquel les données sont actualisées à partir de Key Vault. Elle doit être supérieure ou égale à 1 minute. L’actualisation Key Vault est indépendante de l’actualisation App Configuration configurée via spec.configuration.refresh. true chaîne de durée

La propriété spec.featureFlag dispose des propriétés enfants suivantes. Il est nécessaire si des indicateurs de fonctionnalité sont censés être téléchargés.

Nom Description Obligatoire Type
sélecteurs Liste des sélecteurs pour le filtrage des indicateurs de fonctionnalité. false tableau d’objets
actualiser Paramètres d’actualisation des indicateurs de fonctionnalité à partir d’Azure App Configuration. Si la propriété est absente, les indicateurs de fonctionnalité d’Azure App Configuration ne sont pas actualisés. false object

Si la spec.featureFlag.selectors propriété n’est pas définie, les indicateurs de fonctionnalité ne sont pas téléchargés. Cela contient un tableau d’objets sélecteur qui disposent des propriétés enfants suivantes. Notez que les indicateurs de fonctionnalité du dernier sélecteur sont prioritaires et remplacent les clés qui se chevauchent des sélecteurs précédents.

Nom Description Obligatoire Type
keyFilter Filtre de clé pour l’interrogation des indicateurs de fonctionnalité. Cette propriété et la snapshotName propriété ne doivent pas être définies en même temps. alternative string
labelFilter Filtre d’étiquette pour l’interrogation des indicateurs de fonctionnalité. Cette propriété et la snapshotName propriété ne doivent pas être définies en même temps. false string
snapshotName Nom d’un instantané à partir duquel les indicateurs de fonctionnalité sont chargés. Cette propriété ne doit pas être utilisée conjointement avec d’autres propriétés. alternative string

La propriété spec.featureFlag.refresh dispose des propriétés enfants suivantes.

Nom Description Obligatoire Type
activé Paramètre qui détermine si les indicateurs de fonctionnalité d’Azure App Configuration sont automatiquement actualisés. Si la propriété est absente, une valeur false par défaut est utilisée. false bool
interval Intervalle auquel les indicateurs de fonctionnalité sont actualisés à partir d’Azure App Configuration. Elle doit être supérieure ou égale à 1 seconde. Si la propriété est absente, une valeur par défaut de 30 secondes est utilisée. false chaîne de durée

Installation

Utilisez la commande suivante helm install pour installer le fournisseur Kubernetes Azure App Configuration. Consultez helm-values.yaml pour obtenir la liste complète des paramètres et leurs valeurs par défaut. Vous pouvez remplacer les valeurs par défaut en passant l’indicateur --set à la commande.

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

Mise à l’échelle automatique

Par défaut, la mise à l’échelle automatique est désactivée. Toutefois, si vous avez plusieurs AzureAppConfigurationProvider ressources pour produire plusieurs ConfigMaps/Secrets, vous pouvez activer la mise à l’échelle automatique des pods horizontaux en définissant autoscaling.enabled sur true.

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

Collecte de données

Le logiciel peut collecter des informations sur vous et votre utilisation du logiciel et l’envoyer à Microsoft. Microsoft est susceptible d’utiliser ces informations pour fournir des services et améliorer ses produits et services. Vous pouvez désactiver les données de télémétrie en définissant le requestTracing.enabled=false tout en installant le fournisseur Kubernetes Azure App Configuration. Il existe également certaines fonctionnalités du logiciel qui peuvent vous permettre et Microsoft de collecter des données auprès des utilisateurs de vos applications. Si vous utilisez ces fonctionnalités, vous devez vous conformer à la loi applicable, y compris fournir des avis appropriés aux utilisateurs de vos applications avec une copie de la déclaration de confidentialité de Microsoft. Notre déclaration de confidentialité se trouve à l’adresse suivante https://go.microsoft.com/fwlink/?LinkID=824704. Vous pouvez en savoir plus sur la collecte et l’utilisation des données dans la documentation d’aide et notre déclaration de confidentialité. Votre utilisation du logiciel vaut acceptation de ces pratiques.

Exemples

Authentification

Utiliser l'identité gérée attribuée par le système de l'ensemble d'échelles de la machine virtuelle

  1. Activez l’identité managée affectée par le système dans le groupe de machines virtuelles identiques utilisée par le cluster Azure Kubernetes Service (AKS).

  2. Accordez à l’identité managée affectée par le système le rôle Lecteur de données App Configuration dans Azure App Configuration.

  3. Déployez l’exemple de ressource AzureAppConfigurationProvider suivant sur le 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
    

Utiliser l'identité gérée attribuée à l'utilisateur de l'ensemble d'échelles de la machine virtuelle

  1. Créez une identité managée affectée par l’utilisateur et notez son ID client après sa création.

  2. Affectez l’identité managée affectée par l’utilisateur dans le groupe de machines virtuelles identiques utilisée par le cluster Azure Kubernetes Service (AKS).

  3. Accordez à l’identité managée affectée par l’utilisateur le rôle Lecteur de données App Configuration dans Azure App Configuration.

  4. Définissez la propriété spec.auth.managedIdentityClientId pour l’ID client de l’identité managée affectée par l’utilisateur dans l’exemple de ressource AzureAppConfigurationProvider suivant et déployez-la sur le 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>
    

Utiliser Principal de service

  1. Créer un principal de service

  2. Accordez au principal de service le rôle Lecteur de données App Configuration dans Azure App Configuration.

  3. Créez un secret Kubernetes dans le même espace de noms que la ressource AzureAppConfigurationProvider et ajoutez azure_client_id, azure_client_secret et azure_tenant_id du principal de service au secret.

  4. Définissez la propriété spec.auth.servicePrincipalReference sur le nom du secret dans l’exemple de ressource AzureAppConfigurationProvider suivant et déployez-la sur le cluster 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>
    

Utiliser l’identité de charge de travail

  1. Activez l’identité de charge de travail sur le cluster Azure Kubernetes Service (AKS).

  2. Obtenez l’URL de l’émetteur OIDC du cluster AKS.

  3. Créez une identité managée affectée par l’utilisateur et notez son ID client, son ID client, son nom et son groupe de ressources.

  4. Accordez à l’identité managée affectée par l’utilisateur le rôle Lecteur de données App Configuration dans Azure App Configuration.

  5. Créez un compte de service en ajoutant un fichier YAML (par exemple, serviceAccount.yaml) avec le contenu suivant dans le répertoire contenant vos fichiers de déploiement AKS. Le compte de service est créé lorsque vous appliquez toutes vos modifications de déploiement à votre cluster AKS (par exemple, à l’aide kubectl applyde ). Remplacez <your-managed-identity-client-id> par l’ID client et <your-managed-identity-tenant-id> par l’ID de locataire de l’identité managée affectée par l’utilisateur qui vient d’être créée. Remplacez par <your-service-account-name> votre nom préféré.

    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. Créez des informations d’identification d’identité fédérée pour l’identité managée affectée par l’utilisateur à l’aide d’Azure CLI. Remplacez <user-assigned-identity-name> par le nom et <resource-group> par le groupe de ressources de l’identité managée affectée par l’utilisateur nouvellement créée. Remplacez <aks-oidc-issuer> par l’URL de l’émetteur OIDC du cluster AKS. Remplacez <your-service-account-name> par le nom du compte de service nouvellement créé. Remplacez <federated-identity-credential-name> par votre nom préféré pour les informations d’identification de l’identité fédérée.

    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
    

    Notez que l’objet des informations d’identification de l’identité fédérée doit suivre ce format : system:serviceaccount:<service-account-namespace>:<service-account-name>.

  7. Définissez la spec.auth.workloadIdentity.serviceAccountName propriété sur le nom du compte de service dans l’exemple AzureAppConfigurationProvider de ressource suivant. Assurez-vous que la AzureAppConfigurationProvider ressource et le compte de service se trouvent dans le même espace de noms.

    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>
    

Utiliser la chaîne de connexion

  1. Créez un secret Kubernetes dans le même espace de noms que la ressource AzureAppConfigurationProvider et ajoutez la chaîne de connexion Azure App Configuration avec la clé azure_app_configuration_connection_string dans le secret.

  2. Définissez la propriété spec.connectionStringReference sur le nom du secret dans l’exemple de ressource AzureAppConfigurationProvider suivant et déployez-la sur le cluster 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
    

Sélection de paires clé-valeur

Utilisez la propriété selectors pour filtrer les paires clé-valeur à télécharger à partir d’Azure App Configuration.

L’exemple suivant télécharge toutes paires clé-valeur sans étiquette.

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

Dans l’exemple suivant, deux sélecteurs sont utilisés pour récupérer deux ensembles de paires clés-valeur, chacun avec des étiquettes uniques. Il est important de noter que les valeurs du dernier sélecteur sont prioritaires et remplacent les clés qui se chevauchent provenant de précédents sélecteurs.

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

Un instantané peut être utilisé seul ou avec d’autres sélecteurs clé-valeur. Dans l’exemple suivant, vous chargez des valeurs clés de configuration courante à partir d’un instantané, puis remplacez certaines d’entre elles par des valeurs clés pour le développement.

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

Découpage du préfixe de clé

L’exemple suivant utilise la propriété trimKeyPrefixes pour découper des noms de clés de deux préfixes avant de les ajouter au ConfigMap généré.

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]

Actualisation de la configuration

Lorsque vous apportez des modifications à vos données dans Azure App Configuration, vous souhaiterez peut-être que ces modifications soient actualisées automatiquement dans votre cluster Kubernetes. Il est courant de mettre à jour plusieurs valeurs de clé, mais vous ne souhaitez pas que le cluster récupère une modification à mi-chemin de la mise à jour. Pour maintenir la cohérence de la configuration, vous pouvez utiliser une clé-valeur pour signaler la fin de votre mise à jour. Cette clé-valeur est appelée clé sentinelle. Le fournisseur Kubernetes peut surveiller cette clé-valeur, et le ConfigMap et le secret ne seront régénérés qu’avec les données mises à jour une fois qu’une modification est détectée dans la clé sentinelle.

Dans l’exemple suivant, une clé-valeur nommée app1_sentinel est interrogée toutes les minutes, et la configuration est actualisée chaque fois que des modifications sont détectées dans la clé sentinelle.

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
      monitoring:
        keyValues:
          - key: app1_sentinel
            label: common

Références Key Vault

Authentification

Dans l’exemple suivant, un Key Vault est authentifié auprès d’un principal de service, tandis que tous les autres coffres de clés sont authentifiés avec une identité managée affectée par l’utilisateur.

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>

Types de secrets

Deux types intégrés kubernetes de secrets, opaques et TLS sont actuellement pris en charge. Les secrets résolus à partir des références Key Vault sont enregistrés en tant que type secret opaque par défaut. Si vous disposez d’une référence Key Vault à un certificat et souhaitez l’enregistrer en tant que type de secret TLS, vous pouvez ajouter une balise portant le nom et la valeur suivants à la référence Key Vault dans Azure App Configuration. Ainsi, un secret avec le kubernetes.io/tls type est généré et nommé après la clé de la référence Key Vault.

Nom Valeur
.kubernetes.secret.type kubernetes.io/tls

Les exemples suivants montrent comment les données sont renseignées dans les secrets générés avec différents types.

En supposant qu’un magasin App Configuration dispose de ces références Key Vault :

key valeur tags
app1-secret1 <Informations de référence sur Key Vault 1> {}
app1-secret2 <Informations de référence sur Key Vault 2> {}
app1-certificate <Informations de référence sur Key Vault 3> {".kubernetes.secret.type": "kubernetes.io/tls"}

L’exemple suivant génère des secrets des types Opaque et 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>

Les secrets générés sont remplis avec les données suivantes :

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>

Actualisation des secrets à partir de Key Vault

L’actualisation des secrets à partir de Key Vaults nécessite généralement de recharger les références Key Vault correspondantes à partir de Azure App Configuration. Toutefois, avec la spec.secret.refresh propriété, vous pouvez actualiser les secrets de Key Vault indépendamment. Cela est particulièrement utile pour vous assurer que votre charge de travail récupère automatiquement les secrets mis à jour à partir de Key Vault pendant la rotation des secrets. Notez que pour charger la dernière version d’un secret, le Key Vault référence ne doit pas être un secret versionné.

L’exemple suivant actualise tous les secrets sans version de Key Vault toutes les heures.

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

Indicateurs de fonctionnalité

Dans l’exemple suivant, les indicateurs de fonctionnalité avec des clés commençant app1 par des étiquettes équivalentes sont common téléchargés et actualisés toutes les 10 minutes. Notez que pour remplir les indicateurs de fonctionnalité dans le ConfigMap généré, la configMapData.type propriété doit être 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

Consommation configMap

Les applications s’exécutant dans Kubernetes utilisent généralement le ConfigMap en tant que variables d’environnement ou en tant que fichiers de configuration. Si la propriété configMapData.type est absente ou est définie sur la valeur par défaut, le ConfigMap est rempli avec la liste détaillée des données récupérées à partir de Azure App Configuration, qui peuvent être facilement consommées en tant que variables d’environnement. Si la propriété configMapData.type est définie sur json, yaml ou propriétés, les données récupérées à partir de Azure App Configuration sont regroupées en un seul élément avec le nom de clé spécifié par la propriété configMapData.keydans le ConfigMap généré, qui peut être consommé en tant que fichier monté.

Les exemples suivants montrent comment les données sont remplies dans le ConfigMap généré avec différents paramètres de la propriété configMapData.type.

En supposant qu’un magasin de App Configuration possède les valeurs clés suivantes :

key value
key1 valeur1
key2 valeur2
key3 valeur3

Et la configMapData.type propriété est absente ou définie sur 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

Le ConfigMap généré est rempli avec les données suivantes :

data:
  key1: value1
  key2: value2
  key3: value3