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.3.0 Kubernetes Azure App Configuration ou une version ultérieure. 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 Descriptif Obligatoire Catégorie
point de terminaison Point de terminaison d’Azure App Configuration à partir duquel vous souhaitez récupérer les paires clé-valeur. alternatif ficelle
connectionStringReference Le nom du secret Kubernetes qui contient la chaîne de connexion Azure App Configuration. alternatif ficelle
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. faux 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. faux Bool
cible Destination des paires clé-valeur récupérées dans Kubernetes. vrai objet
authen Méthode d’authentification pour accéder à Azure App Configuration. faux objet
paramétrage Les paramètres d’interrogation et de traitement des valeurs de clé dans Azure App Configuration. faux objet
secret Les paramètres des références Key Vault dans Azure App Configuration. conditionnelles objet
featureFlag Paramètres des indicateurs de fonctionnalité dans Azure App Configuration. faux objet

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

Nom Descriptif Obligatoire Catégorie
configMapName Nom du ConfigMap à créer. vrai ficelle
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é. faux objet

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 Descriptif Obligatoire Catégorie
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 ficelle
clé 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 ficelle
séparateur 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. facultatifs ficelle

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 Descriptif Obligatoire Catégorie
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. faux ficelle
charge de travailIdentité Paramètres d’utilisation de l’identité de charge de travail. faux objet
managedIdentityClientId ID client de l’identité managée affectée par l’utilisateur du groupe de machines virtuelles identiques. faux ficelle

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

Nom Descriptif Obligatoire Catégorie
serviceAccountName Nom du compte de service associé à l’identité de charge de travail. vrai ficelle

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

Nom Descriptif Obligatoire Catégorie
sélecteurs Liste des sélecteurs pour le filtrage de paires clé-valeur. faux tableau d’objets
trimKeyPrefixes Liste des préfixes de clé à découper. faux 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. faux objet

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 Descriptif Obligatoire Catégorie
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. alternatif ficelle
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. faux ficelle
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. alternatif ficelle

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

Nom Descriptif Obligatoire Catégorie
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. faux Bool
surveillance 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. faux objet
intervalle 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. faux chaîne de durée

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

Nom Descriptif Obligatoire Catégorie
clé La clé d'une valeur-clé. vrai ficelle
étiquette Libellé d'une valeur-clé. faux ficelle

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 Descriptif Obligatoire Catégorie
cible Destination des secrets récupérés dans Kubernetes. vrai objet
authen Méthode d’authentification pour accéder aux coffres de clés. faux objet
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. faux objet

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

Nom Descriptif Obligatoire Catégorie
secretName Nom du secret Kubernetes à créer. vrai ficelle
secretData Paramètre qui spécifie la façon dont les données récupérées doivent être remplies dans le secret généré. vrai ficelle

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

Nom Descriptif Obligatoire Catégorie
type Paramètre qui indique la façon dont les données récupérées sont construites dans le secret généré. Les valeurs autorisées incluent default, json, yaml et properties. facultatifs ficelle
clé 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 du fichier si le secret est configuré pour être consommé en tant que fichier monté. conditionnelles ficelle
séparateur Délimiteur utilisé pour générer les données secrètes au format hiérarchique lorsque le type est défini json sur ou yaml. Le séparateur est vide par défaut et le secret généré contient des valeurs clés sous leur forme 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. facultatifs ficelle

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 Descriptif Obligatoire Catégorie
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. faux ficelle
charge de travailIdentité 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. faux objet
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. faux ficelle
keyVaults Les méthodes d’authentification pour les Key Vaults individuels. faux 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 Descriptif Obligatoire Catégorie
URI L’URI d’un Key Vault (coffre de clés). vrai ficelle
servicePrincipalReference Nom du secret Kubernetes qui contient les informations d’identification d’un principal de service utilisé pour l’authentification avec un Key Vault. faux ficelle
charge de travailIdentité 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. faux objet
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. faux ficelle

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

Nom Descriptif Obligatoire Catégorie
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. faux Bool
intervalle 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. vrai 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 Descriptif Obligatoire Catégorie
sélecteurs Liste des sélecteurs pour le filtrage des indicateurs de fonctionnalité. faux 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. faux objet

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 Descriptif Obligatoire Catégorie
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. alternatif ficelle
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. faux ficelle
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. alternatif ficelle

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

Nom Descriptif Obligatoire Catégorie
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. faux Bool
intervalle 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. faux 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. Dans l’exemple suivant, le fournisseur Kubernetes vérifie azure App Configuration pour les mises à jour toutes les minutes. Le ConfigMap et le secret associés sont régénérés uniquement lorsque des modifications sont détectées. Pour plus d’informations sur la surveillance des modifications de configuration, consultez les meilleures pratiques pour l’actualisation de la configuration.

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

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 :

clé valeur étiquettes
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

Actualisation à la demande

Vous pouvez configurer l’actualisation automatique des données, mais vous voudrez parfois déclencher une actualisation à la demande pour obtenir les données les plus récentes d’App Configuration et de Key Vault. Pour ce faire, ajoutez ou mettez à jour toutes les annotations de la metadata.annotationsAzureAppConfigurationProvidersection . Le fournisseur Kubernetes va ensuite rapprocher et mettre à jour la ConfigMap et le secret avec les données les plus récentes de votre magasin App Configuration et de Key Vault.

Dans l’exemple suivant, il AzureAppConfigurationProvider est mis à jour avec une nouvelle annotation. Après la modification, appliquez les modifications à l’aide kubectl apply du déclencheur d’une actualisation à la demande.

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>

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 :

clé valeur
Clé1 valeur1
clé2 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