naslaginformatie voor Azure-app configuratie-Kubernetes-provider
De volgende naslaginformatie bevat een overzicht van de eigenschappen die worden ondersteund door de Azure-app Kubernetes-provider v2.1.0
voor configuratie. Zie releaseopmerkingen voor meer informatie over de wijziging.
Eigenschappen
Een AzureAppConfigurationProvider
resource heeft de volgende onderliggende eigenschappen op het hoogste niveau onder de spec
. connectionStringReference
Of endpoint
moet worden opgegeven.
Name | Beschrijving | Vereist | Type |
---|---|---|---|
endpoint | Het eindpunt van Azure-app Configuration waaruit u de sleutelwaarden wilt ophalen. | alternatief | tekenreeks |
connectionStringReference | De naam van het Kubernetes-geheim met Azure-app Configuration verbindingsreeks. | alternatief | tekenreeks |
replicaDiscoveryEnabled | De instelling die bepaalt of replica's van Azure-app Configuratie automatisch worden gedetecteerd en gebruikt voor failover. Als de eigenschap afwezig is, wordt een standaardwaarde gebruikt true . |
false | bool |
loadBalancingEnabled | De instelling waarmee uw workload aanvragen naar App Configuration kan distribueren naar alle beschikbare replica's. Als de eigenschap afwezig is, wordt een standaardwaarde gebruikt false . |
false | bool |
doel | Het doel van de opgehaalde sleutelwaarden in Kubernetes. | true | object |
verif | De verificatiemethode voor toegang tot Azure-app-configuratie. | false | object |
configuratie | De instellingen voor het opvragen en verwerken van sleutelwaarden in Azure-app Configuratie. | false | object |
geheim | De instellingen voor Key Vault-verwijzingen in Azure-app Configuration. | voorwaardelijk | object |
featureFlag | De instellingen voor functievlagmen in Azure-app Configuratie. | false | object |
De spec.target
eigenschap heeft de volgende onderliggende eigenschap.
Name | Beschrijving | Vereist | Type |
---|---|---|---|
configMapName | De naam van de ConfigMap die moet worden gemaakt. | true | tekenreeks |
configMapData | De instelling die aangeeft hoe de opgehaalde gegevens moeten worden ingevuld in de gegenereerde ConfigMap. | false | object |
Als de spec.target.configMapData
eigenschap niet is ingesteld, wordt de gegenereerde ConfigMap gevuld met de lijst met sleutelwaarden die zijn opgehaald uit Azure-app Configuratie, waardoor de ConfigMap kan worden gebruikt als omgevingsvariabelen. Werk deze eigenschap bij als u de ConfigMap wilt gebruiken als een gekoppeld bestand. Deze eigenschap heeft de volgende onderliggende eigenschappen.
Name | Beschrijving | Vereist | Type |
---|---|---|---|
type | De instelling die aangeeft hoe de opgehaalde gegevens worden samengesteld in de gegenereerde ConfigMap. De toegestane waarden zijn , default json yaml en properties . |
optioneel | tekenreeks |
sleutel | De sleutelnaam van de opgehaalde gegevens wanneer deze type is ingesteld op json , yaml of properties . Stel deze in op de bestandsnaam als de ConfigMap is ingesteld voor gebruik als een gekoppeld bestand. |
voorwaardelijk | tekenreeks |
scheidingsteken | Het scheidingsteken dat wordt gebruikt voor het uitvoeren van de ConfigMap-gegevens in hiërarchische indeling wanneer het type is ingesteld json op of yaml . Het scheidingsteken is standaard leeg en de gegenereerde ConfigMap bevat sleutelwaarden in de oorspronkelijke vorm. Configureer deze instelling alleen als het configuratiebestandslaadprogramma dat in uw toepassing wordt gebruikt, geen sleutelwaarden kan laden zonder deze te converteren naar de hiërarchische indeling. |
optioneel | tekenreeks |
De spec.auth
eigenschap is niet vereist als de verbindingsreeks van uw App Configuration-archief wordt geleverd door de spec.connectionStringReference
eigenschap in te stellen. Anders wordt een van de identiteiten, service-principal, workloadidentiteit of beheerde identiteit gebruikt voor verificatie. De spec.auth
eigenschap heeft de volgende onderliggende eigenschappen. Er moet slechts één van deze worden opgegeven. Als ze niet zijn ingesteld, wordt de door het systeem toegewezen beheerde identiteit van de virtuele-machineschaalset gebruikt.
Name | Beschrijving | Vereist | Type |
---|---|---|---|
servicePrincipalReference | De naam van het Kubernetes-geheim dat de referenties van een service-principal bevat. Het geheim moet zich in dezelfde naamruimte bevinden als de Kubernetes-provider. | false | tekenreeks |
workloadIdentity | De instellingen voor het gebruik van workloadidentiteit. | false | object |
managedIdentityClientId | De client-id van door de gebruiker toegewezen beheerde identiteit van een virtuele-machineschaalset. | false | tekenreeks |
De spec.auth.workloadIdentity
eigenschap heeft de volgende onderliggende eigenschap.
Name | Beschrijving | Vereist | Type |
---|---|---|---|
serviceAccountName | De naam van het serviceaccount dat is gekoppeld aan de workloadidentiteit. | true | tekenreeks |
De spec.configuration
eigenschap heeft de volgende onderliggende eigenschappen.
Name | Beschrijving | Vereist | Type |
---|---|---|---|
Selectors | De lijst met selectors voor het filteren van sleutelwaarden. | false | objectmatrix |
trimKeyPrefixes | De lijst met sleutelvoorvoegsels die moeten worden ingekort. | false | tekenreeksmatrix |
vernieuwen | De instellingen voor het vernieuwen van sleutelwaarden uit Azure-app Configuration. Als de eigenschap afwezig is, worden sleutelwaarden uit Azure-app Configuratie niet vernieuwd. | false | object |
Als de spec.configuration.selectors
eigenschap niet is ingesteld, worden alle sleutelwaarden zonder label gedownload. Het bevat een matrix van selectorobjecten , die de volgende onderliggende eigenschappen hebben. Houd er rekening mee dat de sleutelwaarden van de laatste selector voorrang hebben en overlappende sleutels van de vorige selectors overschrijven.
Name | Beschrijving | Vereist | Type |
---|---|---|---|
keyFilter | Het sleutelfilter voor het uitvoeren van query's op sleutelwaarden. Deze eigenschap en de snapshotName eigenschap mogen niet tegelijkertijd worden ingesteld. |
alternatief | tekenreeks |
labelFilter | Het labelfilter voor het uitvoeren van query's op sleutelwaarden. Deze eigenschap en de snapshotName eigenschap mogen niet tegelijkertijd worden ingesteld. |
false | tekenreeks |
snapshotName | De naam van een momentopname van waaruit sleutelwaarden worden geladen. Deze eigenschap mag niet worden gebruikt in combinatie met andere eigenschappen. | alternatief | tekenreeks |
De spec.configuration.refresh
eigenschap heeft de volgende onderliggende eigenschappen.
Name | Beschrijving | Vereist | Type |
---|---|---|---|
enabled | De instelling waarmee wordt bepaald of sleutelwaarden uit Azure-app Configuratie automatisch worden vernieuwd. Als de eigenschap afwezig is, wordt een standaardwaarde gebruikt false . |
false | bool |
bewaking | De sleutelwaarden die worden bewaakt voor wijzigingsdetectie, ook wel sentinelsleutels genoemd. De sleutelwaarden uit Azure-app Configuratie worden alleen vernieuwd als ten minste één van de bewaakte sleutelwaarden wordt gewijzigd. Als deze eigenschap afwezig is, worden alle geselecteerde sleutelwaarden gecontroleerd voor vernieuwing. | false | object |
interval | Het interval waarmee de sleutelwaarden worden vernieuwd vanuit Azure-app Configuratie. Het moet groter dan of gelijk zijn aan 1 seconde. Als de eigenschap afwezig is, wordt een standaardwaarde van 30 seconden gebruikt. | false | duurtekenreeks |
Dit spec.configuration.refresh.monitoring.keyValues
is een matrix met objecten met de volgende onderliggende eigenschappen.
Name | Beschrijving | Vereist | Type |
---|---|---|---|
sleutel | De sleutel van een sleutelwaarde. | true | tekenreeks |
label | Het label van een sleutelwaarde. | false | tekenreeks |
De spec.secret
eigenschap heeft de volgende onderliggende eigenschappen. Dit is vereist als key Vault-verwijzingen naar verwachting worden gedownload. Zie Typen geheim voor meer informatie over de ondersteuning voor ingebouwde Kubernetes-typen geheimen.
Name | Beschrijving | Vereist | Type |
---|---|---|---|
doel | Het doel van de opgehaalde geheimen in Kubernetes. | true | object |
verif | De verificatiemethode voor toegang tot Key Vaults. | false | object |
vernieuwen | De instellingen voor het vernieuwen van gegevens uit Key Vaults. Als de eigenschap afwezig is, worden gegevens uit Key Vaults niet vernieuwd, tenzij de bijbehorende Key Vault-verwijzingen opnieuw worden geladen. | false | object |
De spec.secret.target
eigenschap heeft de volgende onderliggende eigenschap.
Name | Beschrijving | Vereist | Type |
---|---|---|---|
secretName | De naam van het Kubernetes-geheim dat moet worden gemaakt. | true | tekenreeks |
Als de spec.secret.auth
eigenschap niet is ingesteld, wordt de door het systeem toegewezen beheerde identiteit gebruikt. Deze heeft de volgende onderliggende eigenschappen.
Name | Beschrijving | Vereist | Type |
---|---|---|---|
servicePrincipalReference | De naam van het Kubernetes-geheim dat de referenties bevat van een service-principal die wordt gebruikt voor verificatie met Key Vaults waarvoor geen afzonderlijke verificatiemethoden zijn opgegeven. | false | tekenreeks |
workloadIdentity | De instellingen van de workloadidentiteit die wordt gebruikt voor verificatie met Key Vaults waarvoor geen afzonderlijke verificatiemethoden zijn opgegeven. Het heeft dezelfde onderliggende eigenschap als spec.auth.workloadIdentity . |
false | object |
managedIdentityClientId | De client-id van een door de gebruiker toegewezen beheerde identiteit van een virtuele-machineschaalset die wordt gebruikt voor verificatie met Key Vaults waarvoor geen afzonderlijke verificatiemethoden zijn opgegeven. | false | tekenreeks |
keyVaults | De verificatiemethoden voor afzonderlijke sleutelkluizen. | false | objectmatrix |
De verificatiemethode van elke Key Vault kan worden opgegeven met de volgende eigenschappen. Een van managedIdentityClientId
, servicePrincipalReference
of workloadIdentity
moet worden opgegeven.
Name | Beschrijving | Vereist | Type |
---|---|---|---|
uri | De URI van een sleutelkluis. | true | tekenreeks |
servicePrincipalReference | De naam van het Kubernetes-geheim dat de referenties bevat van een service-principal die wordt gebruikt voor verificatie met een Key Vault. | false | tekenreeks |
workloadIdentity | De instellingen van de workloadidentiteit die wordt gebruikt voor verificatie met een Key Vault. Het heeft dezelfde onderliggende eigenschap als spec.auth.workloadIdentity . |
false | object |
managedIdentityClientId | De client-id van een door de gebruiker toegewezen beheerde identiteit van een virtuele-machineschaalset die wordt gebruikt voor verificatie met een Key Vault. | false | tekenreeks |
De spec.secret.refresh
eigenschap heeft de volgende onderliggende eigenschappen.
Name | Beschrijving | Vereist | Type |
---|---|---|---|
enabled | De instelling waarmee wordt bepaald of gegevens uit Key Vaults automatisch worden vernieuwd. Als de eigenschap afwezig is, wordt een standaardwaarde gebruikt false . |
false | bool |
interval | Het interval waarmee de gegevens worden vernieuwd vanuit Key Vault. Deze moet groter zijn dan of gelijk zijn aan 1 minuut. De sleutelkluis vernieuwen is onafhankelijk van de app-configuratievernieuwing die is geconfigureerd via spec.configuration.refresh . |
true | duurtekenreeks |
De spec.featureFlag
eigenschap heeft de volgende onderliggende eigenschappen. Dit is vereist als er functievlagmen worden gedownload.
Name | Beschrijving | Vereist | Type |
---|---|---|---|
Selectors | De lijst met selectors voor het filteren van functievlagken. | false | objectmatrix |
vernieuwen | De instellingen voor het vernieuwen van functievlagmen van Azure-app Configuration. Als de eigenschap afwezig is, worden functievlagmen van Azure-app Configuratie niet vernieuwd. | false | object |
Als de spec.featureFlag.selectors
eigenschap niet is ingesteld, worden functievlagmen niet gedownload. Het bevat een matrix van selectorobjecten , die de volgende onderliggende eigenschappen hebben. Houd er rekening mee dat de functievlagmen van de laatste selector voorrang hebben en overlappende sleutels van de vorige selectors overschrijven.
Name | Beschrijving | Vereist | Type |
---|---|---|---|
keyFilter | Het sleutelfilter voor het uitvoeren van query's op functievlagmen. Deze eigenschap en de snapshotName eigenschap mogen niet tegelijkertijd worden ingesteld. |
alternatief | tekenreeks |
labelFilter | Het labelfilter voor het uitvoeren van query's op functievlagmen. Deze eigenschap en de snapshotName eigenschap mogen niet tegelijkertijd worden ingesteld. |
false | tekenreeks |
snapshotName | De naam van een momentopname van waaruit functievlagmen worden geladen. Deze eigenschap mag niet worden gebruikt in combinatie met andere eigenschappen. | alternatief | tekenreeks |
De spec.featureFlag.refresh
eigenschap heeft de volgende onderliggende eigenschappen.
Name | Beschrijving | Vereist | Type |
---|---|---|---|
enabled | De instelling die bepaalt of functievlagmen van Azure-app Configuratie automatisch worden vernieuwd. Als de eigenschap afwezig is, wordt een standaardwaarde gebruikt false . |
false | bool |
interval | Het interval waarmee de functievlagmen worden vernieuwd vanuit Azure-app Configuratie. Het moet groter dan of gelijk zijn aan 1 seconde. Als de eigenschap afwezig is, wordt een standaardwaarde van 30 seconden gebruikt. | false | duurtekenreeks |
Installatie
Gebruik de volgende helm install
opdracht om de Azure-app Kubernetes-provider te installeren. Zie helm-values.yaml voor de volledige lijst met parameters en hun standaardwaarden. U kunt de standaardwaarden overschrijven door de --set
vlag door te geven aan de opdracht.
helm install azureappconfiguration.kubernetesprovider \
oci://mcr.microsoft.com/azure-app-configuration/helmchart/kubernetes-provider \
--namespace azappconfig-system \
--create-namespace
Automatisch schalen
Automatisch schalen is standaard uitgeschakeld. Als u echter meerdere AzureAppConfigurationProvider
resources hebt om meerdere ConfigMaps/Geheimen te produceren, kunt u automatische schaalaanpassing van horizontale pods inschakelen door in te stellen autoscaling.enabled
op true
.
helm install azureappconfiguration.kubernetesprovider \
oci://mcr.microsoft.com/azure-app-configuration/helmchart/kubernetes-provider \
--namespace azappconfig-system \
--create-namespace
--set autoscaling.enabled=true
Gegevens verzamelen
De software kan informatie over u en uw gebruik van de software verzamelen en naar Microsoft verzenden. Microsoft kan deze informatie gebruiken voor het leveren van services en het verbeteren van producten en services. U kunt de telemetrie uitschakelen door de requestTracing.enabled=false
Azure-app Configuratie-Kubernetes-provider in te stellen. Er zijn ook enkele functies in de software waarmee u en Microsoft gegevens kunnen verzamelen van gebruikers van uw toepassingen. Als u deze functies gebruikt, moet u voldoen aan de toepasselijke wetgeving, inclusief het verstrekken van de juiste kennisgevingen aan gebruikers van uw toepassingen, samen met een kopie van de privacyverklaring van Microsoft. Onze Privacyverklaring bevindt zich op https://go.microsoft.com/fwlink/?LinkID=824704. Meer informatie over het verzamelen en gebruiken van gegevens vindt u in de Help-documentatie en onze privacyverklaring. Door de software te gebruiken geeft u aan in te stemmen met deze praktijken.
Voorbeelden
Verificatie
Door het systeem toegewezen beheerde identiteit van virtuele-machineschaalset gebruiken
Schakel de door het systeem toegewezen beheerde identiteit in de virtuele-machineschaalset in die wordt gebruikt door het AKS-cluster (Azure Kubernetes Service).
Verdeel de door het systeem toegewezen rol App Configuration Data Reader in Azure-app Configuration.
Implementeer de volgende voorbeeldresource
AzureAppConfigurationProvider
in het AKS-cluster.apiVersion: azconfig.io/v1 kind: AzureAppConfigurationProvider metadata: name: appconfigurationprovider-sample spec: endpoint: <your-app-configuration-store-endpoint> target: configMapName: configmap-created-by-appconfig-provider
Door de gebruiker toegewezen beheerde identiteit van virtuele-machineschaalset gebruiken
Maak een door de gebruiker toegewezen beheerde identiteit en noteer de client-id nadat deze is gemaakt.
Wijs de door de gebruiker toegewezen beheerde identiteit toe aan de virtuele-machineschaalset die wordt gebruikt door het AKS-cluster (Azure Kubernetes Service).
Verdeel de door de gebruiker toegewezen rol App Configuration Data Reader in Azure-app Configuration.
Stel de
spec.auth.managedIdentityClientId
eigenschap in op de client-id van de door de gebruiker toegewezen beheerde identiteit in de volgende voorbeeldresourceAzureAppConfigurationProvider
en implementeer deze in het AKS-cluster.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>
Service-principal gebruiken
Verdeel de rol App Configuration Data Reader van de service-principal in Azure-app Configuration.
Maak een Kubernetes-geheim in dezelfde naamruimte als de
AzureAppConfigurationProvider
resource en voeg azure_client_id, azure_client_secret en azure_tenant_id van de service-principal toe aan het geheim.Stel de
spec.auth.servicePrincipalReference
eigenschap in op de naam van het geheim in de volgende voorbeeldresourceAzureAppConfigurationProvider
en implementeer deze in het Kubernetes-cluster.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>
Workloadidentiteit gebruiken
Schakel workloadidentiteit in op het AKS-cluster (Azure Kubernetes Service).
Haal de URL van de OIDC-verlener van het AKS-cluster op.
Maak een door de gebruiker toegewezen beheerde identiteit en noteer de client-id, tenant-id, naam en resourcegroep.
Verdeel de door de gebruiker toegewezen rol App Configuration Data Reader in Azure-app Configuration.
Maak een serviceaccount door een YAML-bestand (bijvoorbeeld serviceAccount.yaml) toe te voegen met de volgende inhoud aan de map met uw AKS-implementatiebestanden. Het serviceaccount wordt gemaakt wanneer u al uw implementatiewijzigingen toepast op uw AKS-cluster (bijvoorbeeld met behulp van
kubectl apply
). Vervang<your-managed-identity-client-id>
door de client-id en<your-managed-identity-tenant-id>
door de tenant-id van de door de gebruiker toegewezen beheerde identiteit die zojuist is gemaakt. Vervang door<your-service-account-name>
de naam van uw voorkeur.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>
Maak een federatieve identiteitsreferentie voor de door de gebruiker toegewezen beheerde identiteit met behulp van de Azure CLI. Vervang
<user-assigned-identity-name>
door de naam en<resource-group>
door de resourcegroep van de zojuist gemaakte door de gebruiker toegewezen beheerde identiteit. Vervang door<aks-oidc-issuer>
de URL van de OIDC-verlener van het AKS-cluster. Vervang door<your-service-account-name>
de naam van het zojuist gemaakte serviceaccount. Vervang door<federated-identity-credential-name>
de naam van uw voorkeur voor de federatieve identiteitsreferentie.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
Houd er rekening mee dat het onderwerp van de federatieve identiteitsreferentie de volgende indeling moet volgen:
system:serviceaccount:<service-account-namespace>:<service-account-name>
.Stel de
spec.auth.workloadIdentity.serviceAccountName
eigenschap in op de naam van het serviceaccount in de volgende voorbeeldresourceAzureAppConfigurationProvider
. Zorg ervoor dat deAzureAppConfigurationProvider
resource en het serviceaccount zich in dezelfde naamruimte bevinden.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>
Gebruik verbindingsreeks
Maak een Kubernetes-geheim in dezelfde naamruimte als de
AzureAppConfigurationProvider
resource en voeg Azure-app Configuration-verbindingsreeks toe met de sleutel azure_app_configuration_connection_string in het geheim.Stel de
spec.connectionStringReference
eigenschap in op de naam van het geheim in de volgende voorbeeldresourceAzureAppConfigurationProvider
en implementeer deze in het Kubernetes-cluster.apiVersion: azconfig.io/v1 kind: AzureAppConfigurationProvider metadata: name: appconfigurationprovider-sample spec: connectionStringReference: <your-connection-string-secret-name> target: configMapName: configmap-created-by-appconfig-provider
Sleutel-waardeselectie
Gebruik de selectors
eigenschap om de sleutelwaarden te filteren die moeten worden gedownload uit Azure-app Configuratie.
In het volgende voorbeeld worden alle sleutelwaarden zonder label gedownload.
apiVersion: azconfig.io/v1
kind: AzureAppConfigurationProvider
metadata:
name: appconfigurationprovider-sample
spec:
endpoint: <your-app-configuration-store-endpoint>
target:
configMapName: configmap-created-by-appconfig-provider
In het volgende voorbeeld worden twee selectors gebruikt om twee sets sleutelwaarden op te halen, elk met unieke labels. Het is belangrijk te weten dat de waarden van de laatste selector voorrang krijgen en overlappende sleutels van de vorige selectors overschrijven.
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
Een momentopname kan alleen of samen met andere sleutel-waardekiezers worden gebruikt. In het volgende voorbeeld laadt u sleutelwaarden van algemene configuratie uit een momentopname en overschrijft u enkele waarden met sleutelwaarden voor ontwikkeling.
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
Sleutelvoorvoegsel bijsnijden
In het volgende voorbeeld wordt de trimKeyPrefixes
eigenschap gebruikt om twee voorvoegsels van sleutelnamen te knippen voordat deze worden toegevoegd aan de gegenereerde ConfigMap.
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]
Configuratie vernieuwen
Wanneer u wijzigingen aanbrengt in uw gegevens in Azure-app Configuratie, wilt u mogelijk dat deze wijzigingen automatisch worden vernieuwd in uw Kubernetes-cluster. Het is gebruikelijk om meerdere sleutelwaarden bij te werken, maar u wilt niet dat het cluster halverwege de update een wijziging ophaalt. Als u de configuratieconsistentie wilt behouden, kunt u een sleutelwaarde gebruiken om de voltooiing van uw update aan te geven. Deze sleutelwaarde wordt de sentinel-sleutel genoemd. De Kubernetes-provider kan deze sleutelwaarde bewaken en de ConfigMap en het geheim worden alleen opnieuw gegenereerd met bijgewerkte gegevens zodra een wijziging is gedetecteerd in de sentinel-sleutel.
In het volgende voorbeeld wordt elke minuut een sleutelwaarde met de naam app1_sentinel
gepeild en wordt de configuratie vernieuwd wanneer wijzigingen worden gedetecteerd in de sentinel-sleutel.
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
Key Vault-verwijzingen
Verificatie
In het volgende voorbeeld wordt één Key Vault geverifieerd met een service-principal, terwijl alle andere Key Vaults worden geverifieerd met een door de gebruiker toegewezen beheerde identiteit.
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>
Typen geheim
Er worden momenteel twee ingebouwde Kubernetes-typen geheimen, ondoorzichtig en TLS ondersteund. Geheimen die zijn omgezet vanuit Key Vault-verwijzingen, worden standaard opgeslagen als ondoorzichtig geheimtype . Als u een Key Vault-verwijzing naar een certificaat hebt en dit wilt opslaan als het type TLS-geheim, kunt u een tag met de volgende naam en waarde toevoegen aan de Key Vault-verwijzing in Azure-app Configuratie. Hierdoor wordt een geheim met het kubernetes.io/tls
type gegenereerd en benoemd naar de sleutel van de Key Vault-verwijzing.
Naam | Weergegeven als |
---|---|
.kubernetes.secret.type | kubernetes.io/tls |
In de volgende voorbeelden ziet u hoe de gegevens worden ingevuld in de gegenereerde geheimen met verschillende typen.
Ervan uitgaande dat een App Configuration-archief deze Key Vault-verwijzingen bevat:
sleutel | waarde | tags |
---|---|---|
app1-secret1 | <Key Vault-verwijzing 1> | {} |
app1-secret2 | <Key Vault-verwijzing 2> | {} |
app1-certificaat | <Key Vault-verwijzing 3> | {".kubernetes.secret.type": "kubernetes.io/tls"} |
In het volgende voorbeeld worden geheimen van zowel ondoorzichtige als TLS-typen gegenereerd.
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>
De gegenereerde geheimen worden gevuld met de volgende gegevens:
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>
Geheimen vernieuwen vanuit Key Vault
Voor het vernieuwen van geheimen uit Key Vaults moeten doorgaans de bijbehorende Key Vault-verwijzingen uit Azure-app-configuratie opnieuw worden geladen. Met de spec.secret.refresh
eigenschap kunt u de geheimen echter onafhankelijk van Key Vault vernieuwen. Dit is vooral handig om ervoor te zorgen dat uw workload tijdens het rouleren van geheimen automatisch bijgewerkte geheimen uit Key Vault ophaalt. Houd er rekening mee dat als u de nieuwste versie van een geheim wilt laden, de Key Vault-verwijzing geen versiegeheim mag zijn.
In het volgende voorbeeld worden alle niet-versiebeheerde geheimen van Key Vault elk uur vernieuwd.
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
Functievlagmen
In het volgende voorbeeld worden functievlagmen met sleutels die beginnen met app1
en labels die gelijk zijn aan common
, elke 10 minuten gedownload en vernieuwd. Houd er rekening mee dat als u functievlaggen in de gegenereerde ConfigMap wilt vullen, de configMapData.type
eigenschap moet zijn json
of 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
ConfigMap Consumption
Toepassingen die worden uitgevoerd in Kubernetes gebruiken doorgaans de ConfigMap als omgevingsvariabelen of als configuratiebestanden. Als de configMapData.type
eigenschap afwezig is of als standaard is ingesteld, wordt de ConfigMap gevuld met de geitemiseerde lijst met gegevens die zijn opgehaald uit Azure-app Configuratie, die eenvoudig als omgevingsvariabelen kunnen worden gebruikt. Als de configMapData.type
eigenschap is ingesteld op json, yaml of eigenschappen, worden gegevens die zijn opgehaald uit Azure-app Configuratie gegroepeerd in één item met de sleutelnaam die is opgegeven door de configMapData.key
eigenschap in de gegenereerde ConfigMap, die kunnen worden gebruikt als een gekoppeld bestand.
In de volgende voorbeelden ziet u hoe de gegevens worden ingevuld in de gegenereerde ConfigMap met verschillende instellingen van de configMapData.type
eigenschap.
Ervan uitgaande dat een App Configuration-archief deze sleutelwaarden heeft:
sleutel | waarde |
---|---|
key1 | waarde1 |
key2 | waarde2 |
key3 | waarde3 |
En de configMapData.type
eigenschap is afwezig of ingesteld op 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
De gegenereerde ConfigMap wordt gevuld met de volgende gegevens:
data:
key1: value1
key2: value2
key3: value3