You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
@@ -31,16 +31,31 @@ The `spec.target` property has the following child property.
31
31
|Name|Description|Required|Type|
32
32
|---|---|---|---|
33
33
|configMapName|The name of the ConfigMap to be created|true|string|
34
+
|configMapData|The setting that specifies how the retrieved data should be populated in the generated ConfigMap|false|object|
34
35
35
-
If the `spec.auth` property isn't set, the system-assigned managed identity is used. It has the following child properties. Only one authentication method should be set.
36
+
If the `spec.target.configMapData` property is not set, the generated ConfigMap will be populated with the list of key-values retrieved from Azure App Configuration, which allows the ConfigMap to be consumed as environment variables. Update this property if you wish to consume the ConfigMap as a mounted file. This property has the following child properties.
37
+
38
+
|Name|Description|Required|Type|
39
+
|---|---|---|---|
40
+
|type|The setting that indicates how the retrieved data is constructed in the generated ConfigMap. The allowed values include `default`, `json`, `yaml` and `properties`|optional|string|
41
+
|key|The key name of the retrieved data when the `type` is set to `json`, `yaml` or `properties`. Set it to the file name if the ConfigMap is set up to be consumed as a mounted file|conditional|string|
42
+
43
+
The `spec.auth` property isn't required if the connection string of your App Configuration store is provided by setting the `spec.connectionStringReference` property. Otherwise, one of the identities, service principal, workload identity, or managed identity, will be used for authentication. The `spec.auth` has the following child properties. Only one of them should be specified. If none of them are set, the system-assigned managed identity of the virtual machine scale set will be used.
36
44
37
45
|Name|Description|Required|Type|
38
46
|---|---|---|---|
39
-
|managedIdentityClientId|The Client ID of user-assigned managed identity|false|string|
40
47
|servicePrincipalReference|The name of the Kubernetes Secret that contains the credentials of a service principal|false|string|
48
+
|workloadIdentity|The settings for using workload identity|false|object|
49
+
|managedIdentityClientId|The Client ID of user-assigned managed identity of virtual machine scale set|false|string|
41
50
42
-
The `spec.keyValues`has the following child properties. The `spec.keyValues.keyVaults`property is required if any Key Vault references are expected to be downloaded.
51
+
The `spec.auth.workloadIdentity` property has the following child property.
43
52
53
+
|Name|Description|Required|Type|
54
+
|---|---|---|---|
55
+
|managedIdentityClientId|The Client ID of the user-assigned managed identity associated with the workload identity|true|string|
56
+
57
+
The `spec.keyValues` has the following child properties. The `spec.keyValues.keyVaults` property is required if any Key Vault references are expected to be downloaded.
58
+
44
59
|Name|Description|Required|Type|
45
60
|---|---|---|---|
46
61
|selectors|The list of selectors for key-value filtering|false|object array|
@@ -72,17 +87,19 @@ If the `spec.keyValues.keyVaults.auth` property isn't set, the system-assigned m
72
87
73
88
|Name|Description|Required|Type|
74
89
|---|---|---|---|
75
-
|managedIdentityClientId|The client ID of a user-assigned managed identity used for authentication with vaults that don't have individual authentication methods specified|false|string|
76
90
|servicePrincipalReference|The name of the Kubernetes Secret that contains the credentials of a service principal used for authentication with vaults that don't have individual authentication methods specified|false|string|
91
+
|workloadIdentity|The settings of the workload identity used for authentication with vaults that don't have individual authentication methods specified. It has the same child properties as `spec.auth.workloadIdentity`|false|object|
92
+
|managedIdentityClientId|The client ID of a user-assigned managed identity of virtual machine scale set used for authentication with vaults that don't have individual authentication methods specified|false|string|
77
93
|vaults|The authentication methods for individual vaults|false|object array|
78
94
79
-
The authentication method of each *vault* can be specified with the following properties. One of `managedIdentityClientId` and `servicePrincipalReference` must be provided.
95
+
The authentication method of each *vault* can be specified with the following properties. One of `managedIdentityClientId`, `servicePrincipalReference` or `workloadIdentity` must be provided.
80
96
81
97
|Name|Description|Required|Type|
82
98
|---|---|---|---|
83
99
|uri|The URI of a vault|true|string|
84
-
|managedIdentityClientId|The client ID of a user-assigned managed identity used for authentication with a vault|false|string|
85
100
|servicePrincipalReference|The name of the Kubernetes Secret that contains the credentials of a service principal used for authentication with a vault|false|string|
101
+
|workloadIdentity|The settings of the workload identity used for authentication with a vault. It has the same child properties as `spec.auth.workloadIdentity`|false|object|
102
+
|managedIdentityClientId|The client ID of a user-assigned managed identity of virtual machine scale set used for authentication with a vault|false|string|
86
103
87
104
The `spec.keyValues.refresh` property has the following child properties.
88
105
@@ -102,10 +119,12 @@ The `spec.keyValues.refresh.monitoring.keyValues` is an array of objects, which
102
119
103
120
### Authentication
104
121
105
-
#### Use System-Assigned Managed Identity
122
+
#### Use system-assigned managed identity of virtual machine scale set
106
123
107
124
1.[Enable the system-assigned managed identity in the virtual machine scale set](/azure/active-directory/managed-identities-azure-resources/qs-configure-portal-windows-vmss#enable-system-assigned-managed-identity-on-an-existing-virtual-machine-scale-set) used by the Azure Kubernetes Service (AKS) cluster.
125
+
108
126
1.[Grant the system-assigned managed identity **App Configuration Data Reader** role](/azure/azure-app-configuration/howto-integrate-azure-managed-service-identity#grant-access-to-app-configuration) in Azure App Configuration.
127
+
109
128
1. Deploy the following sample `AzureAppConfigurationProvider` resource to the AKS cluster.
110
129
111
130
```yaml
@@ -119,11 +138,14 @@ The `spec.keyValues.refresh.monitoring.keyValues` is an array of objects, which
#### Use user-assigned managed identity of virtual machine scale set
123
142
124
143
1. [Create a user-assigned managed identity](/azure/active-directory/managed-identities-azure-resources/how-manage-user-assigned-managed-identities#create-a-user-assigned-managed-identity) and note down its client ID after creation.
144
+
125
145
1. [Assign the user-assigned managed identity to the virtual machine scale set](/azure/active-directory/managed-identities-azure-resources/qs-configure-portal-windows-vmss#user-assigned-managed-identity) used by the Azure Kubernetes Service (AKS) cluster.
146
+
126
147
1. [Grant the user-assigned managed identity **App Configuration Data Reader** role](/azure/active-directory/managed-identities-azure-resources/qs-configure-portal-windows-vmss#user-assigned-managed-identity) in Azure App Configuration.
148
+
127
149
1. Set the `spec.auth.managedIdentityClientId` property to the client ID of the user-assigned managed identity in the following sample `AzureAppConfigurationProvider` resource and deploy it to the AKS cluster.
128
150
129
151
``` yaml
@@ -139,11 +161,14 @@ The `spec.keyValues.refresh.monitoring.keyValues` is an array of objects, which
1. [Create a Service Principal](/azure/active-directory/develop/howto-create-service-principal-portal)
167
+
145
168
1. [Grant the service principal **App Configuration Data Reader** role](/azure/azure-app-configuration/howto-integrate-azure-managed-service-identity#grant-access-to-app-configuration) in Azure App Configuration.
169
+
146
170
1. Create a Kubernetes Secret in the same namespace as the `AzureAppConfigurationProvider` resource and add *azure_client_id*, *azure_client_secret*, and *azure_tenant_id* of the service principal to the Secret.
171
+
147
172
1. Set the `spec.auth.servicePrincipalReference` property to the name of the Secret in the following sample `AzureAppConfigurationProvider` resource and deploy it to the Kubernetes cluster.
148
173
149
174
``` yaml
@@ -159,9 +184,42 @@ The `spec.keyValues.refresh.monitoring.keyValues` is an array of objects, which
1. [Enable Workload Identity](/azure/aks/workload-identity-deploy-cluster#update-an-existing-aks-cluster) on the Azure Kubernetes Service (AKS) cluster.
190
+
191
+
1. [Get the OIDC issuer URL](/azure/aks/workload-identity-deploy-cluster#retrieve-the-oidc-issuer-url) of the AKS cluster.
192
+
193
+
1. [Create a user-assigned managed identity](/azure/active-directory/managed-identities-azure-resources/how-manage-user-assigned-managed-identities#create-a-user-assigned-managed-identity) and note down its client ID after creation.
194
+
195
+
1. Create the federated identity credential between the managed identity, OIDC issuer, and subject using the Azure CLI.
1. [Grant the user-assigned managed identity **App Configuration Data Reader** role](/azure/active-directory/managed-identities-azure-resources/qs-configure-portal-windows-vmss#user-assigned-managed-identity) in Azure App Configuration.
202
+
203
+
1. Set the `spec.auth.workloadIdentity.managedIdentityClientId` property to the client ID of the user-assigned managed identity in the following sample `AzureAppConfigurationProvider` resource and deploy it to the AKS cluster.
1. Create a Kubernetes Secret in the same namespace as the `AzureAppConfigurationProvider` resource and add Azure App Configuration connection string with key *azure_app_configuration_connection_string* in the Secret.
222
+
165
223
1. Set the `spec.connectionStringReference` property to the name of the Secret in the following sample `AzureAppConfigurationProvider` resource and deploy it to the Kubernetes cluster.
166
224
167
225
``` yaml
@@ -174,6 +232,7 @@ The `spec.keyValues.refresh.monitoring.keyValues` is an array of objects, which
Use the `selectors` property to filter the key-values to be downloaded from Azure App Configuration.
@@ -282,4 +341,124 @@ spec:
282
341
label: common
283
342
- key: sentinelKey
284
343
label: development
344
+
```
345
+
346
+
### Consume ConfigMap
347
+
348
+
Applications running in Kubernetes typically consume the ConfigMap either as environment variables or as configuration files. If the `configMapData.type` property is absent or is set to default, the ConfigMap is populated with the itemized list of data retrieved from Azure App Configuration, which can be easily consumed as environment variables. If the `configMapData.type` property is set to json, yaml or properties, data retrieved from Azure App Configuration is grouped into one item with key name specified by the `configMapData.key` property in the generated ConfigMap, which can be consumed as a mounted file.
349
+
350
+
The following examples show how the data is populated in the generated ConfigMap with different settings of the `configMapData.type` property.
351
+
352
+
Assuming an App Configuration store has these key-values:
353
+
354
+
|key|value|
355
+
|---|---|
356
+
|key1|value1|
357
+
|key2|value2|
358
+
|key3|value3|
359
+
360
+
#### [default](#tab/default)
361
+
362
+
and the `configMapData.type` property is absent or set to `default`,
0 commit comments