Delen via


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.0voor 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 , defaultjsonyaml 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

  1. Schakel de door het systeem toegewezen beheerde identiteit in de virtuele-machineschaalset in die wordt gebruikt door het AKS-cluster (Azure Kubernetes Service).

  2. Verdeel de door het systeem toegewezen rol App Configuration Data Reader in Azure-app Configuration.

  3. 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

  1. Maak een door de gebruiker toegewezen beheerde identiteit en noteer de client-id nadat deze is gemaakt.

  2. Wijs de door de gebruiker toegewezen beheerde identiteit toe aan de virtuele-machineschaalset die wordt gebruikt door het AKS-cluster (Azure Kubernetes Service).

  3. Verdeel de door de gebruiker toegewezen rol App Configuration Data Reader in Azure-app Configuration.

  4. Stel de spec.auth.managedIdentityClientId eigenschap in op de client-id van de door de gebruiker toegewezen beheerde identiteit in de volgende voorbeeldresource AzureAppConfigurationProvider 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

  1. Een service-principal maken

  2. Verdeel de rol App Configuration Data Reader van de service-principal in Azure-app Configuration.

  3. 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.

  4. Stel de spec.auth.servicePrincipalReference eigenschap in op de naam van het geheim in de volgende voorbeeldresource AzureAppConfigurationProvider 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

  1. Schakel workloadidentiteit in op het AKS-cluster (Azure Kubernetes Service).

  2. Haal de URL van de OIDC-verlener van het AKS-cluster op.

  3. Maak een door de gebruiker toegewezen beheerde identiteit en noteer de client-id, tenant-id, naam en resourcegroep.

  4. Verdeel de door de gebruiker toegewezen rol App Configuration Data Reader in Azure-app Configuration.

  5. 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>
    
  6. 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>.

  7. Stel de spec.auth.workloadIdentity.serviceAccountName eigenschap in op de naam van het serviceaccount in de volgende voorbeeldresource AzureAppConfigurationProvider . Zorg ervoor dat de AzureAppConfigurationProvider 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

  1. 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.

  2. Stel de spec.connectionStringReference eigenschap in op de naam van het geheim in de volgende voorbeeldresource AzureAppConfigurationProvider 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