Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В следующем справочнике описаны свойства, поддерживаемые поставщиком v2.3.0 Kubernetes конфигурации приложений Azure или более поздней версии. Дополнительные сведения об изменении см . в заметках о выпуске.
Свойства
Ресурс AzureAppConfigurationProvider содержит следующие дочерние свойства верхнего уровня в разделе spec. Необходимо endpoint указать либо connectionStringReference .
| Имя | Описание | Обязательное поле | Тип |
|---|---|---|---|
| конечная точка | Конечная точка Конфигурация приложений Azure, из которой вы хотите получить значения ключей. | альтернатива | строка |
| connectionStringReference | Имя секрета Kubernetes, содержащего Конфигурация приложений Azure строка подключения. | альтернатива | строка |
| replicaDiscoveryEnabled | Параметр, определяющий, обнаруживаются ли реплики Конфигурация приложений Azure автоматически и используются для отработки отказа. Если свойство отсутствует, используется значение true по умолчанию. |
неправда | булевая переменная (bool) |
| loadBalancingEnabled | Параметр, позволяющий рабочей нагрузке распространять запросы на Конфигурация приложений во всех доступных репликах. Если свойство отсутствует, используется значение false по умолчанию. |
неправда | булевая переменная (bool) |
| целевой объект | Назначение полученных значений ключей в Kubernetes. | правда | объект |
| авторизация | Метод проверки подлинности для доступа к Конфигурация приложений Azure. | неправда | объект |
| настройка | Параметры запроса и обработки значений ключей в Конфигурация приложений Azure. | неправда | объект |
| секрет | Параметры ссылок Key Vault в Конфигурация приложений Azure. | условный | объект |
| featureFlag | Параметры флагов компонентов в Конфигурация приложений Azure. | неправда | объект |
Свойство имеет следующее дочернее spec.target свойство.
| Имя | Описание | Обязательное поле | Тип |
|---|---|---|---|
| configMapName | Имя создаваемого ConfigMap. | правда | строка |
| configMapData | Параметр, указывающий, как должны заполняться извлеченные данные в созданном ConfigMap. | неправда | объект |
spec.target.configMapData Если свойство не задано, созданный ConfigMap заполняется списком значений ключей, полученных из Конфигурация приложений Azure, что позволяет использовать ConfigMap в качестве переменных среды. Обновите это свойство, если вы хотите использовать ConfigMap в качестве подключенного файла. Это свойство имеет следующие дочерние свойства.
| Имя | Описание | Обязательное поле | Тип |
|---|---|---|---|
| тип | Параметр, указывающий, как извлекаемые данные создаются в созданном ConfigMap. Допустимые значения включают default, jsonyaml и properties. |
необязательно | строка |
| ключ | Имя ключа извлеченных данных, если type задано значение json, yaml или properties. Присвойте ему имя файла, если ConfigMap настроен для использования в качестве подключенного файла. |
условный | строка |
| разделитель | Разделитель, используемый для вывода данных ConfigMap в иерархическом формате, если для типа задано json значение или yaml. Разделитель по умолчанию пуст, а созданный ConfigMap содержит значения ключей в исходной форме. Настройте этот параметр, только если загрузчик файла конфигурации, используемый в приложении, не может загружать значения ключей, не преобразовывая их в иерархический формат. |
необязательно | строка |
Свойство spec.auth не требуется, если строка подключения хранилища Конфигурация приложений предоставляется путем задания spec.connectionStringReference свойства. В противном случае для проверки подлинности используется одно из удостоверений, субъекта-службы, удостоверения рабочей нагрузки или управляемого удостоверения. У spec.auth него есть следующие дочерние свойства. Следует указать только одно из них. Если ни один из них не задан, используется управляемое удостоверение, назначаемое системой масштабируемого набора виртуальных машин.
| Имя | Описание | Обязательное поле | Тип |
|---|---|---|---|
| servicePrincipalReference | Имя секрета Kubernetes, содержащего учетные данные субъекта-службы. Секрет должен находиться в том же пространстве имен, что и поставщик Kubernetes. | неправда | строка |
| workloadIdentity | Параметры для использования удостоверения рабочей нагрузки. | неправда | объект |
| managedIdentityClientId | Идентификатор клиента управляемого удостоверения, назначаемого пользователем, масштабируемого набора виртуальных машин. | неправда | строка |
Свойство имеет следующее дочернее spec.auth.workloadIdentity свойство.
| Имя | Описание | Обязательное поле | Тип |
|---|---|---|---|
| serviceAccountName | Имя учетной записи службы, связанной с удостоверением рабочей нагрузки. | правда | строка |
У spec.configuration него есть следующие дочерние свойства.
| Имя | Описание | Обязательное поле | Тип |
|---|---|---|---|
| Селекторов | Список селекторов для фильтрации ключевых значений. | неправда | Массив объектов |
| trimKeyPrefixes | Список префиксов ключей, которые необходимо обрезать. | неправда | строка массив |
| освежать | Параметры обновления значений ключей из Конфигурация приложений Azure. Если свойство отсутствует, значения ключей из Конфигурация приложений Azure не обновляются. | неправда | объект |
spec.configuration.selectors Если свойство не задано, все значения ключей без метки скачиваются. Он содержит массив объектов селектора, которые имеют следующие дочерние свойства. Обратите внимание, что значения ключей последнего селектора имеют приоритет и переопределяют все перекрывающиеся ключи из предыдущих селекторов.
| Имя | Описание | Обязательное поле | Тип |
|---|---|---|---|
| keyFilter | Фильтр ключа для запроса ключевых значений. Это свойство и snapshotName свойство не должны быть заданы одновременно. |
альтернатива | строка |
| labelFilter | Фильтр меток для запроса ключевых значений. Это свойство и snapshotName свойство не должны быть заданы одновременно. |
неправда | строка |
| SnapshotName | Имя моментального снимка, из которого загружаются значения ключей. Это свойство не должно использоваться в сочетании с другими свойствами. | альтернатива | строка |
Свойство spec.configuration.refresh имеет следующие дочерние свойства.
| Имя | Описание | Обязательное поле | Тип |
|---|---|---|---|
| включена | Параметр, определяющий, обновляются ли значения ключей из Конфигурация приложений Azure автоматически. Если свойство отсутствует, используется значение false по умолчанию. |
неправда | булевая переменная (bool) |
| мониторинг | Ключи-значения, отслеживаемые при обнаружении изменений, ключи aka sentinel. Значения ключей из Конфигурация приложений Azure обновляются только в том случае, если изменяется по крайней мере один из отслеживаемых значений ключей. Если это свойство отсутствует, все выбранные значения ключей будут отслеживаться для обновления. | неправда | объект |
| интервал | Интервал обновления значений ключей из Конфигурация приложений Azure. Оно должно быть больше или равно 1 секунде. Если свойство отсутствует, используется значение по умолчанию 30 секунд. | неправда | строка длительности |
Это spec.configuration.refresh.monitoring.keyValues массив объектов, которые имеют следующие дочерние свойства.
| Имя | Описание | Обязательное поле | Тип |
|---|---|---|---|
| ключ | Ключ ключа-значения. | правда | строка |
| этикетка | Метка значения ключа. | неправда | строка |
Свойство spec.secret имеет следующие дочерние свойства. Требуется, если должны быть скачаны ссылки на Key Vault. Дополнительные сведения о поддержке встроенных типов секретов Kubernetes см. в разделе "Типы секретов".
| Имя | Описание | Обязательное поле | Тип |
|---|---|---|---|
| целевой объект | Назначение извлеченных секретов в Kubernetes. | правда | объект |
| авторизация | Метод проверки подлинности для доступа к Key Vaults. | неправда | объект |
| освежать | Параметры обновления данных из Key Vault. Если свойство отсутствует, данные из Key Vault не обновляются, если соответствующие ссылки Key Vault не будут перезагружены. | неправда | объект |
Свойство имеет следующее дочернее spec.secret.target свойство.
| Имя | Описание | Обязательное поле | Тип |
|---|---|---|---|
| secretName; | Имя создаваемого секрета Kubernetes. | правда | строка |
| secretData | Параметр, указывающий, как извлекаемые данные должны быть заполнены в созданном секрете. | правда | строка |
spec.secret.target.secretData Если свойство не задано, созданный секрет заполняется списком значений ключей, полученных из Key Vault, что позволяет использовать секрет в качестве переменных среды. Обновите это свойство, если вы хотите использовать секрет в качестве подключенного файла. Это свойство имеет следующие дочерние свойства.
| Имя | Описание | Обязательное поле | Тип |
|---|---|---|---|
| тип | Параметр, указывающий, как извлеченные данные создаются в созданном секрете. Допустимые значения включают default, jsonyaml и properties. |
необязательно | строка |
| ключ | Имя ключа извлеченных данных, если type задано значение json, yaml или properties. Присвойте ему имя файла, если секрет настроен для использования в качестве подключенного файла. |
условный | строка |
| разделитель | Разделитель, используемый для вывода данных Секрета в иерархическом формате, если для типа задано json значение или yaml. Разделитель по умолчанию пуст, а созданный секрет содержит значения ключей в исходной форме. Настройте этот параметр, только если загрузчик файла конфигурации, используемый в приложении, не может загружать значения ключей, не преобразовывая их в иерархический формат. |
необязательно | строка |
spec.secret.auth Если свойство не задано, используется управляемое удостоверение, назначаемое системой. У него есть следующие дочерние свойства.
| Имя | Описание | Обязательное поле | Тип |
|---|---|---|---|
| servicePrincipalReference | Имя секрета Kubernetes, содержащего учетные данные субъекта-службы, используемого для проверки подлинности с помощью Key Vault, не имеющих отдельных методов проверки подлинности. | неправда | строка |
| workloadIdentity | Параметры удостоверения рабочей нагрузки, используемого для проверки подлинности с помощью Key Vault, которые не имеют отдельных методов проверки подлинности. Он имеет то же дочернее свойство, что spec.auth.workloadIdentityи . |
неправда | объект |
| managedIdentityClientId | Идентификатор клиента управляемого удостоверения, назначаемого пользователем масштабируемого набора виртуальных машин, используемый для проверки подлинности с помощью Key Vault, которые не имеют отдельных методов проверки подлинности. | неправда | строка |
| Хранилища ключей | Методы проверки подлинности для отдельных хранилищ ключей. | неправда | Массив объектов |
Метод проверки подлинности каждого Key Vault можно указать со следующими свойствами. Одно из managedIdentityClientIdних servicePrincipalReference или workloadIdentity должно быть предоставлено.
| Имя | Описание | Обязательное поле | Тип |
|---|---|---|---|
| УРИ | Универсальный код ресурса (URI) хранилища ключей. | правда | строка |
| servicePrincipalReference | Имя секрета Kubernetes, содержащего учетные данные субъекта-службы, используемого для проверки подлинности с помощью Key Vault. | неправда | строка |
| workloadIdentity | Параметры удостоверения рабочей нагрузки, используемого для проверки подлинности с помощью Key Vault. Он имеет то же дочернее свойство, что spec.auth.workloadIdentityи . |
неправда | объект |
| managedIdentityClientId | Идентификатор клиента управляемого удостоверения, назначаемого пользователем, масштабируемого набора виртуальных машин, используемый для проверки подлинности с помощью Key Vault. | неправда | строка |
Свойство spec.secret.refresh имеет следующие дочерние свойства.
| Имя | Описание | Обязательное поле | Тип |
|---|---|---|---|
| включена | Параметр, определяющий, обновляются ли данные из Key Vaults автоматически. Если свойство отсутствует, используется значение false по умолчанию. |
неправда | булевая переменная (bool) |
| интервал | Интервал обновления данных из Key Vault. Оно должно быть больше или равно 1 минуте. Обновление Key Vault не зависит от Конфигурация приложений обновления, настроенного с помощьюspec.configuration.refresh. |
правда | строка длительности |
Свойство spec.featureFlag имеет следующие дочерние свойства. Требуется, если ожидается, что скачиваются флаги компонентов.
| Имя | Описание | Обязательное поле | Тип |
|---|---|---|---|
| Селекторов | Список селекторов для фильтрации флагов компонентов. | неправда | Массив объектов |
| освежать | Параметры для обновления флагов компонентов из Конфигурация приложений Azure. Если свойство отсутствует, флаги компонентов из Конфигурация приложений Azure не обновляются. | неправда | объект |
spec.featureFlag.selectors Если свойство не задано, флаги компонентов не скачиваются. Он содержит массив объектов селектора, которые имеют следующие дочерние свойства. Обратите внимание, что флаги функций последнего селектора имеют приоритет и переопределяют все перекрывающиеся ключи из предыдущих селекторов.
| Имя | Описание | Обязательное поле | Тип |
|---|---|---|---|
| keyFilter | Фильтр ключей для запросов флагов компонентов. Это свойство и snapshotName свойство не должны быть заданы одновременно. |
альтернатива | строка |
| labelFilter | Фильтр меток для запросов флагов компонентов. Это свойство и snapshotName свойство не должны быть заданы одновременно. |
неправда | строка |
| SnapshotName | Имя моментального снимка, из которого загружаются флаги компонентов. Это свойство не должно использоваться в сочетании с другими свойствами. | альтернатива | строка |
Свойство spec.featureFlag.refresh имеет следующие дочерние свойства.
| Имя | Описание | Обязательное поле | Тип |
|---|---|---|---|
| включена | Параметр, определяющий, обновляются ли флаги компонентов из Конфигурация приложений Azure автоматически. Если свойство отсутствует, используется значение false по умолчанию. |
неправда | булевая переменная (bool) |
| интервал | Интервал обновления флагов компонентов с Конфигурация приложений Azure. Оно должно быть больше или равно 1 секунде. Если свойство отсутствует, используется значение по умолчанию 30 секунд. | неправда | строка длительности |
Установка
Используйте следующую helm install команду, чтобы установить поставщик Конфигурация приложений Azure Kubernetes. Полный список параметров и их значения по умолчанию см . в helm-values.yaml . Можно переопределить значения по умолчанию, передав --set флаг в команду.
helm install azureappconfiguration.kubernetesprovider \
oci://mcr.microsoft.com/azure-app-configuration/helmchart/kubernetes-provider \
--namespace azappconfig-system \
--create-namespace
Автомасштабирование
По умолчанию автомасштабирование отключено. Однако при наличии нескольких ресурсов для создания нескольких AzureAppConfigurationProvider конфигураций и секретов можно включить автомасштабирование по горизонтали pod, установив для 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
сбор данных
Программное обеспечение может собирать сведения о вас и использовании программного обеспечения и отправлять его в Корпорацию Майкрософт. Корпорация Microsoft может использовать ее для предоставления услуг и улучшения своих продуктов и служб. Вы можете отключить данные телеметрии, задав requestTracing.enabled=false при установке поставщика Конфигурация приложений Azure Kubernetes. Существуют также некоторые функции программного обеспечения, которые позволяют вам и Корпорации Майкрософт собирать данные от пользователей ваших приложений. Если вы используете эти функции, необходимо соблюдать применимые законы, включая предоставление соответствующих уведомлений пользователям приложений вместе с копией заявления о конфиденциальности Майкрософт. С нашим заявлением о конфиденциальности можно ознакомиться на веб-сайте https://go.microsoft.com/fwlink/?LinkID=824704. Дополнительные сведения о сборе и использовании данных см. в документации справки и нашем заявлении о конфиденциальности. Использование вами данного программного обеспечения означает ваше согласие с этими принципами.
Примеры
Проверка подлинности
Использование управляемого удостоверения, назначаемого системой масштабируемого набора виртуальных машин
Включите управляемое удостоверение, назначаемое системой, в масштабируемом наборе виртуальных машин, используемом кластером Служба Azure Kubernetes (AKS).
Предоставьте управляемому удостоверению, назначаемого системой, Конфигурация приложений роль средства чтения данных в Конфигурация приложений Azure.
Разверните следующий пример
AzureAppConfigurationProviderресурса в кластере AKS.apiVersion: azconfig.io/v1 kind: AzureAppConfigurationProvider metadata: name: appconfigurationprovider-sample spec: endpoint: <your-app-configuration-store-endpoint> target: configMapName: configmap-created-by-appconfig-provider
Использование управляемого удостоверения, назначаемого пользователем масштабируемого набора виртуальных машин
Создайте управляемое удостоверение , назначаемое пользователем, и запишите его идентификатор клиента после создания.
Назначьте управляемому удостоверению, назначенному пользователем, масштабируемый набор виртуальных машин, используемый кластером Служба Azure Kubernetes (AKS).
Предоставьте управляемому удостоверению, назначаемого пользователем, Конфигурация приложений роль средства чтения данных в Конфигурация приложений Azure.
spec.auth.managedIdentityClientIdЗадайте для свойства идентификатор клиента управляемого удостоверения, назначаемого пользователем, в следующем примереAzureAppConfigurationProviderресурса и разверните его в кластере AKS.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>
Использование субъекта-службы
Предоставьте субъекту-службе роль средства чтения данных Конфигурация приложений в Конфигурация приложений Azure.
Создайте секрет Kubernetes в том же пространстве имен, что
AzureAppConfigurationProviderи ресурс, и добавьте azure_client_id, azure_client_secret и azure_tenant_id субъекта-службы в секрет.spec.auth.servicePrincipalReferenceЗадайте свойству имя секрета в следующем примереAzureAppConfigurationProviderресурса и разверните его в кластере Kubernetes.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>
Использование удостоверения рабочей нагрузки
Включите удостоверение рабочей нагрузки в кластере Служба Azure Kubernetes (AKS).
Получите URL-адрес издателя OIDC кластера AKS.
Создайте управляемое удостоверение , назначаемое пользователем, и запишите его идентификатор клиента, идентификатор клиента, имя и группу ресурсов.
Предоставьте управляемому удостоверению, назначаемого пользователем, Конфигурация приложений роль средства чтения данных в Конфигурация приложений Azure.
Создайте учетную запись службы, добавив файл YAML (например, serviceAccount.yaml) со следующим содержимым в каталог, содержащий файлы развертывания AKS. Учетная запись службы будет создана при применении всех изменений развертывания к кластеру AKS (например, с помощью
kubectl apply). Замените<your-managed-identity-client-id>идентификатором клиента и<your-managed-identity-tenant-id>идентификатором клиента управляемого удостоверения, назначаемого пользователем, который только что был создан. Замените<your-service-account-name>предпочитаемым именем.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>Создайте учетные данные федеративного удостоверения для управляемого удостоверения, назначаемого пользователем, с помощью Azure CLI. Замените
<user-assigned-identity-name>именем и<resource-group>группой ресурсов только что созданного управляемого удостоверения, назначаемого пользователем. Замените<aks-oidc-issuer>URL-адрес издателя OIDC кластера AKS. Замените<your-service-account-name>именем только что созданной учетной записи службы. Замените<federated-identity-credential-name>предпочитаемое имя для учетных данных федеративного удостоверения.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Обратите внимание, что субъект федеративных учетных данных удостоверения должен соответствовать этому формату:
system:serviceaccount:<service-account-namespace>:<service-account-name>spec.auth.workloadIdentity.serviceAccountNameЗадайте для свойства имя учетной записи службы в следующем примереAzureAppConfigurationProviderресурса. Убедитесь, чтоAzureAppConfigurationProviderресурс и учетная запись службы находятся в одном пространстве имен.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>
Использование строка подключения
Создайте секрет Kubernetes в том же пространстве имен, что
AzureAppConfigurationProviderи ресурс, и добавьте Конфигурация приложений Azure строка подключения с ключом azure_app_configuration_connection_string в секрете.spec.connectionStringReferenceЗадайте свойству имя секрета в следующем примереAzureAppConfigurationProviderресурса и разверните его в кластере Kubernetes.apiVersion: azconfig.io/v1 kind: AzureAppConfigurationProvider metadata: name: appconfigurationprovider-sample spec: connectionStringReference: <your-connection-string-secret-name> target: configMapName: configmap-created-by-appconfig-provider
Выбор "ключ-значение"
selectors Используйте свойство для фильтрации значений ключей, которые нужно скачать из Конфигурация приложений Azure.
В следующем примере скачиваются все значения ключей без метки.
apiVersion: azconfig.io/v1
kind: AzureAppConfigurationProvider
metadata:
name: appconfigurationprovider-sample
spec:
endpoint: <your-app-configuration-store-endpoint>
target:
configMapName: configmap-created-by-appconfig-provider
В следующем примере два селектора используются для получения двух наборов значений ключей, каждый из которых содержит уникальные метки. Важно отметить, что значения последнего селектора имеют приоритет и переопределяют все перекрывающиеся ключи из предыдущих селекторов.
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
Моментальный снимок можно использовать отдельно или вместе с другими селекторами "ключ-значение". В следующем примере вы загружаете значения ключей общей конфигурации из моментального снимка, а затем переопределяете некоторые из них с ключевыми значениями для разработки.
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
Обрезка префикса ключа
В следующем примере свойство используется trimKeyPrefixes для обрезки двух префиксов из имен ключей перед их добавлением в созданный 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]
Обновление конфигурации
При внесении изменений в данные в Конфигурация приложений Azure может потребоваться, чтобы эти изменения обновлялись автоматически в кластере Kubernetes. В следующем примере поставщик Kubernetes проверяет конфигурацию приложений Azure для обновления каждую минуту. Связанные ConfigMap и Secret создаются повторно только при обнаружении изменений. Дополнительные сведения об изменениях конфигурации мониторинга см. в рекомендациях по обновлению конфигурации.
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
Ссылки на Key Vault
Проверка подлинности
В следующем примере один Key Vault проходит проверку подлинности с помощью субъекта-службы, а все остальные Key Vault проходят проверку подлинности с помощью управляемого удостоверения, назначаемого пользователем.
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>
Типы секретов
В настоящее время поддерживаются два встроенных типа секретов Kubernetes, непрозрачные и TLS. Секреты, разрешенные из ссылок Key Vault, сохраняются в качестве типа непрозрачного секрета по умолчанию. Если у вас есть ссылка на Key Vault на сертификат и хотите сохранить его в качестве типа секрета TLS, можно добавить тег со следующим именем и значением в ссылку Key Vault в Конфигурация приложений Azure. Таким образом, секрет с kubernetes.io/tls типом будет создан и назван в честь ключа ссылки Key Vault.
| Имя | Значение |
|---|---|
| .kubernetes.secret.type | kubernetes.io/tls |
В следующих примерах показано, как данные заполняются в созданных секретах с различными типами.
Если хранилище Конфигурация приложений имеет следующие ссылки на Key Vault:
| ключ | значение | Теги |
|---|---|---|
| app1-secret1 | <Справочник по Key Vault 1> | {} |
| app1-secret2 | <Справочник по Key Vault 2> | {} |
| app1-certificate | <Справочник по Key Vault 3> | {".kubernetes.secret.type": "kubernetes.io/tls"} |
В следующем примере создаются секреты непрозрачных и TLS-типов.
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>
Созданные секреты заполняются следующими данными:
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>
Обновление секретов из Key Vault
Обновление секретов из Key Vault обычно требует перезагрузки соответствующих ссылок Key Vault из Конфигурация приложений Azure. Однако с spec.secret.refresh помощью свойства можно обновить секреты из Key Vault независимо. Это особенно полезно для того, чтобы рабочая нагрузка автоматически взяла все обновленные секреты из Key Vault во время смены секретов. Обратите внимание, что для загрузки последней версии секрета ссылка на Key Vault не должна быть секретом версии.
В следующем примере обновляются все неверсионные секреты из Key Vault каждый час.
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
Флаги компонентов
В следующем примере флаги функций с ключами, начинающийся с app1 и эквивалентные меткам common , загружаются и обновляются каждые 10 минут. Обратите внимание, что для заполнения флагов функций в созданном ConfigMap configMapData.type свойство должно быть json или 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
Обновление по запросу
Хотя вы можете настроить автоматическое обновление данных, иногда может потребоваться активировать обновление по запросу, чтобы получить последние данные из Конфигурация приложений и Key Vault. Это можно сделать, добавив или обновив все заметки в metadata.annotations разделе .AzureAppConfigurationProvider Затем поставщик Kubernetes примирит и обновит ConfigMap и Secret последние данные из хранилища Конфигурация приложений и Key Vault.
В следующем примере AzureAppConfigurationProvider обновляется новая заметка. После изменения примените изменения, использующиеся kubectl apply для активации обновления по запросу.
apiVersion: azconfig.io/v1
kind: AzureAppConfigurationProvider
metadata:
name: appconfigurationprovider-sample
annotations:
key1: value1
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>
Использование ConfigMap
Приложения, работающие в Kubernetes, обычно используют ConfigMap как переменные среды или как файлы конфигурации.
configMapData.type Если свойство отсутствует или имеет значение по умолчанию, ConfigMap заполняется элементизованным списком данных, извлеченных из Конфигурация приложений Azure, которые можно легко использовать в качестве переменных среды.
configMapData.type Если для свойства задано значение json, yaml или properties, данные, полученные из Конфигурация приложений Azure, группируются в один элемент с именем ключа, указанным configMapData.key свойством в созданном ConfigMap, который можно использовать в качестве подключенного файла.
В следующих примерах показано, как данные заполняются в созданном ConfigMap с разными параметрами configMapData.type свойства.
Если хранилище Конфигурация приложений имеет следующие ключевые значения:
| ключ | значение |
|---|---|
| Ключ1 | значение1 |
| Ключ2 | значение2 |
| key3 | value3 |
configMapData.type И свойство отсутствует или задано значение 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
Созданный ConfigMap заполняется следующими данными:
data:
key1: value1
key2: value2
key3: value3