Share via


Azure App Configuration-Kubernetes-Anbieterreferenz

In der folgenden Referenz werden die eigenschaften beschrieben, die vom Azure-App Configuration Kubernetes Provider v1.3.0unterstützt werden. Weitere Informationen zur Änderung finden Sie in den Versionshinweisen .

Eigenschaften

Eine AzureAppConfigurationProvider-Ressource verfügt über die folgenden untergeordneten Eigenschaften der obersten Ebene unter spec. Entweder endpoint oder connectionStringReference muss angegeben werden.

Name BESCHREIBUNG Erforderlich Typ
endpoint Der Endpunkt von Azure App Configuration, von dem Sie die Schlüsselwerte abrufen möchten. Alternative Zeichenfolge
connectionStringReference Der Name des Kubernetes-Geheimnisses, das die Verbindungszeichenfolge für Azure App Configuration enthält. Alternative Zeichenfolge
replicaDiscoveryEnabled Die Einstellung, die bestimmt, ob Replikate der Azure-App-Konfiguration automatisch erkannt und für failover verwendet werden. Wenn die Eigenschaft nicht vorhanden ist, wird ein Standardwert true verwendet. false bool
target Das Ziel der abgerufenen Schlüsselwerte in Kubernetes. true Objekt (object)
auth Die Authentifizierungsmethode für den Zugriff auf Azure App Configuration. false Objekt
Konfiguration Die Einstellungen zum Abfragen und Verarbeiten von Schlüsselwerten in Azure App Configuration. false Objekt
secret Die Einstellungen für Key Vault-Verweise in der Azure App Configuration. Bedingte Objekt
featureFlag Die Einstellungen für Featurekennzeichnungen in Azure-App Konfiguration. false Objekt (object)

Die spec.target-Eigenschaft verfügt über die folgende untergeordnete Eigenschaft.

name BESCHREIBUNG Erforderlich Typ
configMapName Der Name der ConfigMap, die erstellt werden soll. true Zeichenfolge
configMapData Die Einstellung, die angibt, wie die abgerufenen Daten in der generierten ConfigMap aufgefüllt werden sollen. false Objekt

Wenn die spec.target.configMapData Eigenschaft nicht festgelegt ist, wird die generierte ConfigMap mit der Liste der Schlüsselwerte gefüllt, die aus Azure-App Configuration abgerufen werden, wodurch die ConfigMap als Umgebungsvariablen verwendet werden kann. Aktualisieren Sie diese Eigenschaft, wenn Sie die ConfigMap als bereitgestellte Datei verwenden möchten. Diese Eigenschaft verfügt über die folgenden untergeordneten Eigenschaften.

Name BESCHREIBUNG Erforderlich Typ
Typ Die Einstellung, die angibt, wie die abgerufenen Daten in der generierten ConfigMap erstellt werden. Zulässige Werte: default, json, yaml und properties. optional Zeichenfolge
Schlüssel Der Schlüsselname der abgerufenen Daten, wenn typeauf json, yaml oder propertiesfestgelegt ist. Legen Sie dies auf den Dateinamen fest, wenn die ConfigMap für die Nutzung als eingebundene Datei eingerichtet ist. Bedingte Zeichenfolge
Trennzeichen Das Trennzeichen, das zum Ausgeben der ConfigMap-Daten im hierarchischen Format verwendet wird, wenn der Typ auf json oder yaml. Das Trennzeichen ist standardmäßig leer, und die generierte ConfigMap enthält Schlüsselwerte in ihrer ursprünglichen Form. Konfigurieren Sie diese Einstellung nur, wenn das in Ihrer Anwendung verwendete Konfigurationsdateiladeprogramm Schlüsselwerte nicht laden kann, ohne sie in das hierarchische Format zu konvertieren. optional Zeichenfolge

Die Eigenschaft spec.auth ist nicht erforderlich, wenn die Verbindungszeichenfolge Ihres App Configuration-Speichers durch Festlegen der Eigenschaft spec.connectionStringReference angegeben wird. Andernfalls wird eine der Identitäten, dienstprinzipal, Workloadidentität oder verwaltete Identität für die Authentifizierung verwendet. spec.auth verfügt über die folgenden untergeordneten Eigenschaften. Es sollte nur einer dieser Werte angegeben werden. Wenn keine davon festgelegt ist, wird die vom System zugewiesene verwaltete Identität des Skalierungssatzes für virtuelle Computer verwendet.

Name BESCHREIBUNG Erforderlich Typ
servicePrincipalReference Der Name des Kubernetes-Geheimnisses, das die Anmeldeinformationen eines Dienstprinzipals enthält. Der geheime Schlüssel muss sich im selben Namespace wie der Kubernetes-Anbieter befinden. false Zeichenfolge
workloadIdentity Die Einstellungen für die Verwendung der Workloadidentität. false Objekt
managedIdentityClientId Die Client-ID der vom Benutzer zugewiesenen verwalteten Identität eines Skalierungssatzes für virtuelle Computer. false Zeichenfolge

Die spec.auth.workloadIdentity-Eigenschaft verfügt über die folgenden untergeordneten Eigenschaften. Eine davon muss angegeben werden.

Name BESCHREIBUNG Erforderlich Typ
managedIdentityClientId Die Client-ID der vom Benutzer zugewiesenen verwalteten Identität, die der Workload-Identität zugeordnet ist. Alternative Zeichenfolge
managedIdentityClientIdReference Die Client-ID der vom Benutzer zugewiesenen verwalteten Identität kann aus einer ConfigMap abgerufen werden. Die ConfigMap muss sich im selben Namespace wie der Kubernetes-Anbieter befinden. Alternative Objekt

Die spec.auth.workloadIdentity.managedIdentityClientIdReference-Eigenschaft verfügt über die folgenden untergeordneten Eigenschaften.

name BESCHREIBUNG Erforderlich type
configMap Der Name der ConfigMap, in der die Client-ID einer vom Benutzer zugewiesenen verwalteten Identität gefunden werden kann. true Zeichenfolge
Schlüssel Der Schlüsselname, der den Wert für die Client-ID einer vom Benutzer zugewiesenen verwalteten Identität enthält. true Zeichenfolge

spec.configuration verfügt über die folgenden untergeordneten Eigenschaften.

Name BESCHREIBUNG Erforderlich Typ
Selektoren Die Liste der Selektoren für die Filterung der Schlüsselwerte. false Objektarray
trimKeyPrefixes Die Liste der Schlüsselpräfixe, die gekürzt werden sollen. false Zeichenfolgenarray
Aktualisieren Die Einstellungen zum Aktualisieren von Schlüsselwerten aus Azure-App-Konfiguration. Wenn die Eigenschaft nicht vorhanden ist, werden Schlüsselwerte aus Azure-App Configuration nicht aktualisiert. false Objekt

Wenn die spec.configuration.selectors Eigenschaft nicht festgelegt ist, werden alle Schlüsselwerte ohne Bezeichnung heruntergeladen. Es enthält ein Array von Selektorobjekten, die die folgenden untergeordneten Eigenschaften aufweisen. Beachten Sie, dass die Schlüsselwerte der letzten Auswahl Vorrang haben und alle überlappenden Schlüssel aus den vorherigen Selektoren außer Kraft setzen.

Name BESCHREIBUNG Erforderlich Typ
keyFilter Der Schlüsselfilter zum Abfragen von Schlüsselwerten. Diese Eigenschaft und die snapshotName Eigenschaft sollten nicht gleichzeitig festgelegt werden. Alternative Zeichenfolge
labelFilter Der Bezeichnungsfilter zum Abfragen von Schlüsselwerten. Diese Eigenschaft und die snapshotName Eigenschaft sollten nicht gleichzeitig festgelegt werden. false Zeichenfolge
Momentaufnahme Name Der Name eines Momentaufnahme, aus dem Schlüsselwerte geladen werden. Diese Eigenschaft sollte nicht in Verbindung mit anderen Eigenschaften verwendet werden. Alternative Zeichenfolge

Die spec.configuration.refresh-Eigenschaft verfügt über die folgenden untergeordneten Eigenschaften.

name BESCHREIBUNG Erforderlich Typ
enabled Die Einstellung, die bestimmt, ob Schlüsselwerte aus Azure-App Konfiguration automatisch aktualisiert werden. Wenn die Eigenschaft nicht vorhanden ist, wird ein Standardwert false verwendet. false bool
Überwachung Die Schlüsselwerte, die für die Änderungserkennung überwacht werden, auch als Sentinelschlüssel bezeichnet. Die Schlüsselwerte aus Azure-App Konfiguration werden nur aktualisiert, wenn mindestens einer der überwachten Schlüsselwerte geändert wird. true Objekt
interval Das Intervall, in dem die Schlüsselwerte aus Azure-App Konfiguration aktualisiert werden. Es muss mindestens 1 Sekunde betragen. Wenn die Eigenschaft nicht vorhanden ist, wird ein Standardwert von 30 Sekunden verwendet. false Zeichenfolge für die Dauer

spec.configuration.refresh.monitoring.keyValues enthält ein Array von Objekten, die die folgenden untergeordneten Eigenschaften aufweisen.

Name BESCHREIBUNG Erforderlich Typ
Schlüssel Der Schlüssel eines Schlüsselwerts. true Zeichenfolge
label Die Bezeichnung eines Schlüsselwerts. false Zeichenfolge

Die spec.secret-Eigenschaft verfügt über die folgenden untergeordneten Eigenschaften. Dies ist erforderlich, wenn Key Vault-Verweise heruntergeladen werden sollen. Weitere Informationen zur Unterstützung der integrierten Kubernetes-Typen geheimer Schlüssel finden Sie unter "Geheime Typen".

Name BESCHREIBUNG Erforderlich Typ
target Das Ziel der abgerufenen Geheimnisse in Kubernetes. true Objekt (object)
auth Die Authentifizierungsmethode für den Zugriff auf Schlüsseltresore. false Objekt
Aktualisieren Die Einstellungen zum Aktualisieren von Daten aus Schlüsseltresoren. Wenn die Eigenschaft nicht vorhanden ist, werden Daten aus Key Vaults nicht aktualisiert, es sei denn, die entsprechenden Key Vault-Verweise werden neu geladen. false Objekt (object)

Die spec.secret.target-Eigenschaft verfügt über die folgende untergeordnete Eigenschaft.

name BESCHREIBUNG Erforderlich Typ
secretName Name des Kubernetes-Geheimnisses, das erstellt werden soll. true Zeichenfolge

Wenn die spec.secret.auth-Eigenschaft nicht festgelegt ist, wird die systemseitig zugewiesene verwaltete Identität verwendet. Sie verfügt über die folgenden untergeordneten Eigenschaften.

name BESCHREIBUNG Erforderlich Typ
servicePrincipalReference Der Name des Kubernetes-Geheimnisses mit den Anmeldeinformationen eines Dienstprinzipals, der für die Authentifizierung mit Tresoren verwendet wird, für die keine einzelnen Authentifizierungsmethoden angegeben sind. false Zeichenfolge
workloadIdentity Die Einstellungen der Workloadidentität für die Authentifizierung mit Schlüsseltresoren, für die keine einzelnen Authentifizierungsmethoden angegeben sind. Sie weist die gleichen untergeordneten Eigenschaften wie spec.auth.workloadIdentity auf. false Objekt
managedIdentityClientId Die Client-ID der benutzerseitig zugewiesenen verwalteten Identität einer VM-Skalierungsgruppe für die Authentifizierung mit Schlüsseltresoren, für die keine einzelnen Authentifizierungsmethoden angegeben sind. false Zeichenfolge
keyVaults Die Authentifizierungsmethoden für einzelne Schlüsseltresore. false Objektarray

Die Authentifizierungsmethode jedes Schlüsseltresors kann mit den folgenden Eigenschaften angegeben werden. Einer der Werte managedIdentityClientId, servicePrincipalReference oder workloadIdentity muss bereitgestellt werden.

Name BESCHREIBUNG Erforderlich Typ
uri Der URI eines Schlüsseltresors. true Zeichenfolge
servicePrincipalReference Der Name des Kubernetes-Geheimnisses mit den Anmeldeinformationen eines Dienstprinzipals, der für die Authentifizierung bei einem Schlüsseltresor verwendet wird. false Zeichenfolge
workloadIdentity Die Einstellungen der Workloadidentität für die Authentifizierung mit einem Schlüsseltresor. Sie weist die gleichen untergeordneten Eigenschaften wie spec.auth.workloadIdentity auf. false Objekt
managedIdentityClientId Die Client-ID der benutzerseitig zugewiesenen verwalteten Identität einer VM-Skalierungsgruppe für die Authentifizierung mit einem Schlüsseltresor. false Zeichenfolge

Die spec.secret.refresh-Eigenschaft verfügt über die folgenden untergeordneten Eigenschaften.

name BESCHREIBUNG Erforderlich Typ
enabled Die Einstellung, die festlegt, ob Daten aus Schlüsseltresoren automatisch aktualisiert werden. Wenn die Eigenschaft nicht vorhanden ist, wird ein Standardwert false verwendet. false bool
interval Das Intervall, in dem die Daten aus Dem Key Vault aktualisiert werden. Es muss mindestens 1 Minute betragen. Die Key Vault-Aktualisierung ist unabhängig von der über spec.configuration.refresh konfigurierten App Configuration-Aktualisierung. true Zeichenfolge für die Dauer

Die spec.featureFlag-Eigenschaft verfügt über die folgenden untergeordneten Eigenschaften. Es ist erforderlich, wenn feature flags erwartet werden, dass sie heruntergeladen werden.

Name BESCHREIBUNG Erforderlich Typ
Selektoren Die Liste der Selektoren für die Featurekennzeichnungsfilterung. false Objektarray
Aktualisieren Die Einstellungen zum Aktualisieren von Featurekennzeichnungen aus Azure-App-Konfiguration. Wenn die Eigenschaft nicht vorhanden ist, werden Featurekennzeichnungen aus Azure-App Configuration nicht aktualisiert. false Objekt

Wenn die spec.featureFlag.selectors Eigenschaft nicht festgelegt ist, werden Featurekennzeichnungen nicht heruntergeladen. Es enthält ein Array von Selektorobjekten, die die folgenden untergeordneten Eigenschaften aufweisen. Beachten Sie, dass die Featurekennzeichnungen der letzten Auswahl Vorrang haben und alle überlappenden Tasten aus den vorherigen Selektoren außer Kraft setzen.

Name BESCHREIBUNG Erforderlich Typ
keyFilter Der Schlüsselfilter zum Abfragen von Featurekennzeichnungen. Diese Eigenschaft und die snapshotName Eigenschaft sollten nicht gleichzeitig festgelegt werden. Alternative Zeichenfolge
labelFilter Der Bezeichnungsfilter zum Abfragen von Featurekennzeichnungen. Diese Eigenschaft und die snapshotName Eigenschaft sollten nicht gleichzeitig festgelegt werden. false Zeichenfolge
Momentaufnahme Name Der Name eines Momentaufnahme, aus dem Featurekennzeichnungen geladen werden. Diese Eigenschaft sollte nicht in Verbindung mit anderen Eigenschaften verwendet werden. Alternative Zeichenfolge

Die spec.featureFlag.refresh-Eigenschaft verfügt über die folgenden untergeordneten Eigenschaften.

name BESCHREIBUNG Erforderlich Typ
enabled Die Einstellung, die bestimmt, ob Featurekennzeichnungen aus Azure-App Konfiguration automatisch aktualisiert werden. Wenn die Eigenschaft nicht vorhanden ist, wird ein Standardwert false verwendet. false bool
interval Das Intervall, in dem die Featurekennzeichnungen aus Azure-App-Konfiguration aktualisiert werden. Es muss mindestens 1 Sekunde betragen. Wenn die Eigenschaft nicht vorhanden ist, wird ein Standardwert von 30 Sekunden verwendet. false Zeichenfolge für die Dauer

Installation

Verwenden Sie den folgenden helm install Befehl, um den Azure-App Konfigurations kubernetes-Anbieter zu installieren. Die vollständige Liste der Parameter und deren Standardwerte finden Sie unter helm-values.yaml . Sie können die Standardwerte überschreiben, indem Sie das --set Flag an den Befehl übergeben.

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

Automatische Skalierung

Standardmäßig ist automatische Skalierung deaktiviert. Wenn Sie jedoch über mehrere Ressourcen verfügen, um mehrere AzureAppConfigurationProvider Config Karten/Secrets zu erzeugen, können Sie die automatische Skalierung horizontaler Pods aktivieren, indem Sie diese Einstellung festlegen autoscaling.enabledtrue.

Beispiele

Authentifizierung

Verwenden der systemseitig zugewiesenen verwalteten Identität einer VM-Skalierungsgruppe

  1. Aktivieren Sie die systemseitig zugewiesene verwaltete Identität in der VM-Skalierungsgruppe, die vom Azure Kubernetes Service(AKS)-Cluster verwendet wird.

  2. Erteilen Sie der systemseitig zugewiesenen verwalteten Identität die Rolle App Configuration-Datenleser in Azure App Configuration.

  3. Stellen Sie die folgende Beispielressource AzureAppConfigurationProvider im AKS-Cluster bereit.

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

Verwenden der benutzerseitig zugewiesenen verwalteten Identität einer VM-Skalierungsgruppe

  1. Erstellen Sie eine benutzerseitig zugewiesene verwaltete Identität, und notieren Sie sich nach der Erstellung die Client-ID.

  2. Weisen Sie der VM-Skalierungsgruppe die systemseitig zugewiesene verwaltete Identität zu, die vom Azure Kubernetes Service(AKS)-Cluster verwendet wird.

  3. Erteilen Sie der benutzerseitig zugewiesenen verwalteten Identität die Rolle App Configuration-Datenleser in Azure App Configuration.

  4. Legen Sie die spec.auth.managedIdentityClientId-Eigenschaft in der folgenden Beispielressource AzureAppConfigurationProvider auf die Client-ID der benutzerseitig zugewiesenen verwalteten Identität fest, und stellen Sie sie im AKS-Cluster bereit.

    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>
    

Verwenden des Dienstprinzipals

  1. Erstellen eines Dienstprinzipals

  2. Erteilen Sie dem Dienstprinzipal die Rolle App Configuration-Datenleser in Azure App Configuration.

  3. Erstellen Sie ein Kubernetes-Geheimnis im selben Namespace wie die Ressource AzureAppConfigurationProvider, und fügen Sie dem Geheimnis azure_client_id, azure_client_secret und azure_tenant_id des Dienstprinzipals hinzu.

  4. Legen Sie die spec.auth.servicePrincipalReference-Eigenschaft in der folgenden Beispielressource AzureAppConfigurationProvider auf den Namen des Geheimnisses fest, und stellen Sie sie im Kubernetes-Cluster bereit.

    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>
    

Verwenden der Workloadidentität

  1. Aktivieren Sie die Workloadidentität im Azure Kubernetes Service-Cluster (AKS).

  2. Rufen Sie die OIDC-Aussteller-URL des AKS-Clusters ab.

  3. Erstellen Sie eine benutzerseitig zugewiesene verwaltete Identität, und notieren Sie sich nach der Erstellung die Client-ID.

  4. Erstellen Sie die Anmeldeinformationen der Verbundidentität zwischen verwalteter Identität, OICD-Aussteller und Antragsteller mithilfe der Azure CLI.

    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:azappconfig-system:az-appconfig-k8s-provider --audience api://AzureADTokenExchange
    
  5. Erteilen Sie der benutzerseitig zugewiesenen verwalteten Identität die Rolle App Configuration-Datenleser in Azure App Configuration.

  6. Legen Sie die spec.auth.workloadIdentity.managedIdentityClientId-Eigenschaft in der folgenden Beispielressource AzureAppConfigurationProvider auf die Client-ID der benutzerseitig zugewiesenen verwalteten Identität fest, und stellen Sie sie im AKS-Cluster bereit.

    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:
          managedIdentityClientId: <your-managed-identity-client-id>
    

Verbindungszeichenfolge verwenden

  1. Erstellen Sie ein Kubernetes-Geheimnis im gleichen Namespace wie die AzureAppConfigurationProvider-Ressource, und fügen Sie Verbindungszeichenfolge für Azure App Configuration mit dem Schlüssel azure_app_configuration_connection_string im Geheimnis hinzu.

  2. Legen Sie die spec.connectionStringReference-Eigenschaft in der folgenden Beispielressource AzureAppConfigurationProvider auf den Namen des Geheimnisses fest, und stellen Sie sie im Kubernetes-Cluster bereit.

    apiVersion: azconfig.io/v1
    kind: AzureAppConfigurationProvider
    metadata:
      name: appconfigurationprovider-sample
    spec:
      connectionStringReference: <your-connection-string-secret-name>
      target:
        configMapName: configmap-created-by-appconfig-provider
    

Auswahl des Schlüsselwerts

Verwenden Sie die selectors-Eigenschaft, um die Schlüsselwerte zu filtern, die aus Azure App Configuration heruntergeladen werden sollen.

Im folgenden Beispiel werden alle Schlüsselwerte ohne Bezeichnung heruntergeladen.

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

Im folgenden Beispiel werden zwei Selektoren verwendet, um zwei Sätze von Schlüsselwerten abzurufen, die jeweils eindeutige Bezeichnungen aufweisen. Es ist wichtig zu beachten, dass die Werte des letzten Selektors Vorrang haben und alle überlappenden Schlüssel der vorherigen Selektoren überschreiben.

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

Ein Momentaufnahme kann allein oder zusammen mit anderen Schlüsselwertselektoren verwendet werden. Im folgenden Beispiel laden Sie Schlüsselwerte der allgemeinen Konfiguration aus einem Momentaufnahme und überschreiben dann einige davon mit Schlüsselwerten für die Entwicklung.

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

Kürzen von Schlüsselpräfixen

Im folgenden Beispiel wird die trimKeyPrefixes-Eigenschaft verwendet, um zwei Präfixe von Schlüsselnamen zu kürzen, bevor sie der generierten ConfigMap hinzugefügt werden.

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]

Konfigurationsaktualisierung

Wenn Sie Änderungen an Ihren Daten in Azure App Configuration vornehmen, sollen diese Änderungen möglicherweise automatisch in Ihrem Kubernetes-Cluster aktualisiert werden. Es ist üblich, mehrere Schlüsselwerte zu aktualisieren, aber Sie möchten nicht, dass der Cluster während der Aktualisierung eine Änderung übernimmt. Um die Konfigurationskonsistenz zu gewährleisten, können Sie über einen Schlüsselwert den Abschluss Ihres Updates signalisieren. Dieser Schlüsselwert wird als Sentinelschlüssel bezeichnet. Der Kubernetes-Anbieter kann diesen Schlüsselwert überwachen, und die ConfigMap und das Geheimnis werden erst dann mit aktualisierten Daten neu generiert, wenn eine Änderung im Sentinelschlüssel erkannt wird.

Im folgenden Beispiel wird jede Minute ein Schlüsselwert mit dem Namen app1_sentinel abgefragt, und die Konfiguration wird aktualisiert, wenn Änderungen im Sentinelschlüssel erkannt werden.

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-Verweise

Authentifizierung

Im folgenden Beispiel wird ein Schlüsseltresor mit einem Dienstprinzipal authentifiziert, während alle anderen Schlüsseltresore mit einer benutzerseitig zugewiesenen verwalteten Identität authentifiziert werden.

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>

Geheime Typen

Zwei integrierte Kubernetes-Typen von Geheimschlüsseln, Opaque und TLS werden derzeit unterstützt. Schlüssel, die aus Key Vault-Verweisen aufgelöst wurden, werden standardmäßig als Opaque Secret-Typ gespeichert. Wenn Sie über einen Key Vault-Verweis auf ein Zertifikat verfügen und es als TLS Secret-Typ speichern möchten, können Sie dem Key Vault-Verweis in Azure-App Configuration ein Tag mit dem folgenden Namen und Wert hinzufügen. Dazu wird ein Geheimer Schlüssel mit dem kubernetes.io/tls Typ generiert und nach dem Schlüssel des Key Vault-Verweises benannt.

Name Wert
.kubernetes.secret.type kubernetes.io/tls

Aktualisieren von Geheimnissen aus Key Vault

Das Aktualisieren von Geheimnissen aus Schlüsseltresoren erfordert in der Regel das erneute Laden der entsprechenden Key Vault-Verweise aus Azure App Configuration. Mit der spec.secret.refresh-Eigenschaft können Sie jedoch die Geheimnisse aus Key Vault unabhängig aktualisieren. Dies ist besonders nützlich, um sicherzustellen, dass Ihre Workload während der Geheimnisrotation automatisch alle aktualisierten Geheimnisse aus Key Vault übernimmt. Beachten Sie, dass der Key Vault-Verweis kein Geheimnis mit Versionsangabe sein darf, um die neueste Version eines Geheimnisses zu laden.

Im folgenden Beispiel werden alle Geheimnisse ohne Versionsangabe stündlich aus Key Vault aktualisiert.

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

Featurekennzeichnungen

Im folgenden Beispiel werden Featurekennzeichnungen mit Schlüsseln beginnend mit app1 bezeichnungen common heruntergeladen und alle 10 Minuten aktualisiert.

apiVersion: azconfig.io/v1
kind: AzureAppConfigurationProvider
metadata:
  name: appconfigurationprovider-sample
spec:
  endpoint: <your-app-configuration-store-endpoint>
  target:
    configMapName: configmap-created-by-appconfig-provider
  featureFlag:
    selectors:
      - keyFilter: app1*
        labelFilter: common
    refresh:
      enabled: true
      interval: 10m

ConfigMap-Verbrauch

Anwendungen, die in Kubernetes ausgeführt werden, nutzen die ConfigMap in der Regel entweder als Umgebungsvariable oder als Konfigurationsdatei. Wenn die Eigenschaft configMapData.type nicht vorhanden oder auf „default“ festgelegt ist, wird die ConfigMap mit der aufgeschlüsselten Liste der von Azure App Configuration abgerufenen Daten aufgefüllt – so kann die ConfigMap problemlos als Umgebungsvariablen verwendet werden. Wenn die Eigenschaft configMapData.type auf „json“, „yaml“ oder „properties“ festgelegt ist, werden die von Azure App Configuration abgerufenen Daten zu einem Element gruppiert, wobei der Schlüsselname durch die Eigenschaft configMapData.key in der generierten ConfigMap angegeben wird – so kann die ConfigMap als eingebundene Datei verwendet werden.

Die folgenden Beispiele zeigen, wie die Daten in der generierten ConfigMap mit unterschiedlichen Einstellungen der Eigenschaft configMapData.type aufgefüllt werden.

Nehmen Sie an, ein App Configuration-Speicher enthält die folgenden Schlüsselwerte:

Schlüssel value
key1 value1
schlüssel2 value2
key3 value3

Und die configMapData.type Eigenschaft ist nicht vorhanden oder auf 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

Die generierte ConfigMap wird mit den folgenden Daten aufgefüllt:

data:
  key1: value1
  key2: value2
  key3: value3