Azure App Configuration-Kubernetes-Anbieterreferenz
In der folgenden Referenz werden die eigenschaften beschrieben, die vom Azure-App Configuration Kubernetes Provider v2.1.0
unterstü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 |
loadBalancingEnabled | Die Einstellung, mit der Ihre Workload Anforderungen an die App-Konfiguration über alle verfügbaren Replikate verteilen kann. Wenn die Eigenschaft nicht vorhanden ist, wird ein Standardwert false 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 type auf json , yaml oder properties festgelegt 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 folgende untergeordnete Eigenschaft.
name | BESCHREIBUNG | Erforderlich | type |
---|---|---|---|
serviceAccountName | Der Name des Dienstkontos, das der Workload-Identität zugeordnet ist. | 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 |
snapshotName | Der Name einer Momentaufnahme, aus der 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. Wenn diese Eigenschaft nicht vorhanden ist, werden alle ausgewählten Schlüsselwerte auf die Aktualisierung überwacht. | false | 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 hat dieselbe untergeordnete Eigenschaft wie spec.auth.workloadIdentity . |
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 hat dieselbe untergeordnete Eigenschaft wie spec.auth.workloadIdentity . |
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 |
snapshotName | Der Name einer Momentaufnahme, aus der 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
ConfigMaps/Secrets zu erzeugen, können Sie die horizontale Pod-AutomatischesCaling aktivieren, indem Sie diese Einstellung festlegen autoscaling.enabled
true
.
helm install azureappconfiguration.kubernetesprovider \
oci://mcr.microsoft.com/azure-app-configuration/helmchart/kubernetes-provider \
--namespace azappconfig-system \
--create-namespace
--set autoscaling.enabled=true
Datensammlung
Die Software kann Informationen über Sie und Ihre Nutzung der Software sammeln und an Microsoft senden. Microsoft kann diese Informationen verwenden, um unsere Produkte und Dienste bereitzustellen und zu verbessern. Sie können die Telemetrie deaktivieren, indem Sie beim Installieren des Azure-App Konfigurations kubernetes-Anbieters festlegenrequestTracing.enabled=false
. Es gibt auch einige Features in der Software, mit denen Sie und Microsoft Daten von Benutzern Ihrer Anwendungen sammeln können. Wenn Sie diese Features verwenden, müssen Sie das geltende Recht einhalten, einschließlich der Bereitstellung geeigneter Hinweise für Benutzer Ihrer Anwendungen zusammen mit einer Kopie der Datenschutzbestimmungen von Microsoft. Unsere Datenschutzerklärung finden Sie unter https://go.microsoft.com/fwlink/?LinkID=824704. Weitere Informationen zur Datensammlung und -verwendung finden Sie in der Hilfedokumentation und in unseren Datenschutzbestimmungen. Durch die Nutzung der Software erklären Sie sich mit diesen Praktiken einverstanden.
Beispiele
Authentifizierung
Verwenden der systemseitig zugewiesenen verwalteten Identität einer VM-Skalierungsgruppe
Aktivieren Sie die systemseitig zugewiesene verwaltete Identität in der VM-Skalierungsgruppe, die vom Azure Kubernetes Service(AKS)-Cluster verwendet wird.
Erteilen Sie der systemseitig zugewiesenen verwalteten Identität die Rolle App Configuration-Datenleser in Azure App Configuration.
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
Erstellen Sie eine benutzerseitig zugewiesene verwaltete Identität, und notieren Sie sich nach der Erstellung die Client-ID.
Weisen Sie der VM-Skalierungsgruppe die systemseitig zugewiesene verwaltete Identität zu, die vom Azure Kubernetes Service(AKS)-Cluster verwendet wird.
Erteilen Sie der benutzerseitig zugewiesenen verwalteten Identität die Rolle App Configuration-Datenleser in Azure App Configuration.
Legen Sie die
spec.auth.managedIdentityClientId
-Eigenschaft in der folgenden BeispielressourceAzureAppConfigurationProvider
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
Erteilen Sie dem Dienstprinzipal die Rolle App Configuration-Datenleser in Azure App Configuration.
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.Legen Sie die
spec.auth.servicePrincipalReference
-Eigenschaft in der folgenden BeispielressourceAzureAppConfigurationProvider
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
Aktivieren Sie die Workloadidentität im Azure Kubernetes Service-Cluster (AKS).
Rufen Sie die OIDC-Aussteller-URL des AKS-Clusters ab.
Erstellen Sie eine vom Benutzer zugewiesene verwaltete Identität , und notieren Sie sich die Client-ID, die Mandanten-ID, den Namen und die Ressourcengruppe.
Erteilen Sie der benutzerseitig zugewiesenen verwalteten Identität die Rolle App Configuration-Datenleser in Azure App Configuration.
Erstellen Sie ein Dienstkonto, indem Sie eine YAML-Datei (z. B. serviceAccount.yaml) mit dem folgenden Inhalt zum Verzeichnis hinzufügen, das Ihre AKS-Bereitstellungsdateien enthält. Das Dienstkonto wird erstellt, wenn Sie alle Bereitstellungsänderungen auf Ihren AKS-Cluster anwenden (z. B. verwenden
kubectl apply
). Ersetzen Sie diese durch<your-managed-identity-client-id>
die Client-ID und<your-managed-identity-tenant-id>
durch die Mandanten-ID der soeben erstellten, vom Benutzer zugewiesenen verwalteten Identität. Ersetzen Sie sie<your-service-account-name>
durch Ihren bevorzugten Namen.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>
Erstellen Sie eine Verbundidentitäts-Anmeldeinformationen für die vom Benutzer zugewiesene verwaltete Identität mithilfe der Azure CLI. Ersetzen Sie den
<user-assigned-identity-name>
Namen und<resource-group>
die Ressourcengruppe der neu erstellten, vom Benutzer zugewiesenen verwalteten Identität. Ersetzen Sie die<aks-oidc-issuer>
OIDC-Aussteller-URL des AKS-Clusters. Ersetzen Sie den<your-service-account-name>
Namen des neu erstellten Dienstkontos. Ersetzen Sie den<federated-identity-credential-name>
bevorzugten Namen für die Verbundidentitätsanmeldeinformationen.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
Beachten Sie, dass der Betreff der Verbundidentitätsanmeldeinformationen folgendem Format entsprechen sollte:
system:serviceaccount:<service-account-namespace>:<service-account-name>
Legen Sie die
spec.auth.workloadIdentity.serviceAccountName
Eigenschaft auf den Namen des Dienstkontos in der folgenden BeispielressourceAzureAppConfigurationProvider
fest. Stellen Sie sicher, dass sich dieAzureAppConfigurationProvider
Ressource und das Dienstkonto im selben Namespace befinden.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>
Verbindungszeichenfolge verwenden
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.Legen Sie die
spec.connectionStringReference
-Eigenschaft in der folgenden BeispielressourceAzureAppConfigurationProvider
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
Eine Momentaufnahme kann allein oder zusammen mit anderen Schlüsselwertselektoren verwendet werden. Im folgenden Beispiel laden Sie Schlüsselwerte der allgemeinen Konfiguration aus einer 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 |
Die folgenden Beispiele zeigen, wie die Daten in den generierten Geheimnissen mit unterschiedlichen Typen aufgefüllt werden.
Angenommen, ein App-Konfigurationsspeicher weist die folgenden Key Vault-Verweise auf:
Schlüssel | value | tags |
---|---|---|
app1-secret1 | <Key Vault-Referenz 1> | {} |
app1-secret2 | <Key Vault-Referenz 2> | {} |
app1-certificate | <Key Vault-Referenz 3> | {".kubernetes.secret.type": "kubernetes.io/tls"} |
Im folgenden Beispiel werden Geheime Schlüssel von Opaque- und TLS-Typen generiert.
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>
Die generierten geheimen Schlüssel werden mit den folgenden Daten aufgefüllt:
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>
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. Beachten Sie, dass zum Auffüllen von Featurekennzeichnungen in der generierten ConfigMap die configMapData.type
Eigenschaft sein json
muss oder 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-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