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.0
Kubernetes 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
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).
Accordez à l’identité managée affectée par le système le rôle Lecteur de données App Configuration dans Azure App Configuration.
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
Créez une identité managée affectée par l’utilisateur et notez son ID client après sa création.
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).
Accordez à l’identité managée affectée par l’utilisateur le rôle Lecteur de données App Configuration dans Azure App Configuration.
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 ressourceAzureAppConfigurationProvider
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
Accordez au principal de service le rôle Lecteur de données App Configuration dans Azure App Configuration.
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.Définissez la propriété
spec.auth.servicePrincipalReference
sur le nom du secret dans l’exemple de ressourceAzureAppConfigurationProvider
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
Activez l’identité de charge de travail sur le cluster Azure Kubernetes Service (AKS).
Obtenez l’URL de l’émetteur OIDC du cluster AKS.
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.
Accordez à l’identité managée affectée par l’utilisateur le rôle Lecteur de données App Configuration dans Azure App Configuration.
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 apply
de ). 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>
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>
.Définissez la
spec.auth.workloadIdentity.serviceAccountName
propriété sur le nom du compte de service dans l’exempleAzureAppConfigurationProvider
de ressource suivant. Assurez-vous que laAzureAppConfigurationProvider
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
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.Définissez la propriété
spec.connectionStringReference
sur le nom du secret dans l’exemple de ressourceAzureAppConfigurationProvider
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.key
dans 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