Поделиться через


Справочник по поставщику kubernetes Конфигурация приложений Azure

В следующей ссылке описаны свойства, поддерживаемые поставщиком v2.1.0Kubernetes Конфигурация приложений Azure. Дополнительные сведения об изменении см . в заметках о выпуске.

Свойства

Ресурс AzureAppConfigurationProvider содержит следующие дочерние свойства верхнего уровня в разделе spec. Необходимо endpoint указать либо connectionStringReference .

Имя Описание Обязательное поле Тип
конечная точка Конечная точка Конфигурация приложений Azure, из которой вы хотите получить значения ключей. альтернатива строка
connectionStringReference Имя секрета Kubernetes, содержащего Конфигурация приложений Azure строка подключения. альтернатива строка
replicaDiscoveryEnabled Параметр, определяющий, обнаруживаются ли реплики Конфигурация приложений Azure автоматически и используются для отработки отказа. Если свойство отсутствует, используется значение true по умолчанию. false bool
loadBalancingEnabled Параметр, позволяющий рабочей нагрузке распространять запросы на Конфигурация приложений во всех доступных репликах. Если свойство отсутствует, используется значение false по умолчанию. false bool
целевой объект Назначение полученных значений ключей в Kubernetes. true объект
auth Метод проверки подлинности для доступа к Конфигурация приложений Azure. false объект
настройка Параметры запроса и обработки значений ключей в Конфигурация приложений Azure. false объект
secret Параметры ссылок Key Vault в Конфигурация приложений Azure. conditional объект
featureFlag Параметры флагов компонентов в Конфигурация приложений Azure. false объект

Свойство имеет следующее дочернее spec.target свойство.

Имя Описание Обязательное поле Тип
configMapName Имя создаваемого ConfigMap. true строка
configMapData Параметр, указывающий, как должны заполняться извлеченные данные в созданном ConfigMap. false объект

spec.target.configMapData Если свойство не задано, созданный ConfigMap заполняется списком значений ключей, полученных из Конфигурация приложений Azure, что позволяет использовать ConfigMap в качестве переменных среды. Обновите это свойство, если вы хотите использовать ConfigMap в качестве подключенного файла. Это свойство имеет следующие дочерние свойства.

Имя Описание Обязательное поле Тип
type Параметр, указывающий, как извлекаемые данные создаются в созданном ConfigMap. Допустимые значения включают default, jsonyaml и properties. необязательно строка
key Имя ключа извлеченных данных, если type задано значение json, yaml или properties. Присвойте ему имя файла, если ConfigMap настроен для использования в качестве подключенного файла. conditional строка
separator Разделитель, используемый для вывода данных ConfigMap в иерархическом формате, если для типа задано json значение или yaml. Разделитель по умолчанию пуст, а созданный ConfigMap содержит значения ключей в исходной форме. Настройте этот параметр, только если загрузчик файла конфигурации, используемый в приложении, не может загружать значения ключей, не преобразовывая их в иерархический формат. необязательно строка

Свойство spec.auth не требуется, если строка подключения хранилища Конфигурация приложений предоставляется путем задания spec.connectionStringReference свойства. В противном случае для проверки подлинности используется одно из удостоверений, субъекта-службы, удостоверения рабочей нагрузки или управляемого удостоверения. У spec.auth него есть следующие дочерние свойства. Следует указать только одно из них. Если ни один из них не задан, используется управляемое удостоверение, назначаемое системой масштабируемого набора виртуальных машин.

Имя Описание Обязательное поле Тип
servicePrincipalReference Имя секрета Kubernetes, содержащего учетные данные субъекта-службы. Секрет должен находиться в том же пространстве имен, что и поставщик Kubernetes. false строка
workloadIdentity Параметры для использования удостоверения рабочей нагрузки. false объект
managedIdentityClientId Идентификатор клиента управляемого удостоверения, назначаемого пользователем, масштабируемого набора виртуальных машин. false строка

Свойство имеет следующее дочернее spec.auth.workloadIdentity свойство.

Имя Описание Обязательное поле Тип
serviceAccountName Имя учетной записи службы, связанной с удостоверением рабочей нагрузки. true строка

У spec.configuration него есть следующие дочерние свойства.

Имя Описание Обязательное поле Тип
Селекторов Список селекторов для фильтрации ключевых значений. false Массив объектов
trimKeyPrefixes Список префиксов ключей, которые необходимо обрезать. false строка массив
refresh Параметры обновления значений ключей из Конфигурация приложений Azure. Если свойство отсутствует, значения ключей из Конфигурация приложений Azure не обновляются. false объект

spec.configuration.selectors Если свойство не задано, все значения ключей без метки скачиваются. Он содержит массив объектов селектора, которые имеют следующие дочерние свойства. Обратите внимание, что значения ключей последнего селектора имеют приоритет и переопределяют все перекрывающиеся ключи из предыдущих селекторов.

Имя Описание Обязательное поле Тип
keyFilter Фильтр ключа для запроса ключевых значений. Это свойство и snapshotName свойство не должны быть заданы одновременно. альтернатива строка
labelFilter Фильтр меток для запроса ключевых значений. Это свойство и snapshotName свойство не должны быть заданы одновременно. false строка
SnapshotName Имя моментального снимка, из которого загружаются значения ключей. Это свойство не должно использоваться в сочетании с другими свойствами. альтернатива строка

Свойство spec.configuration.refresh имеет следующие дочерние свойства.

Имя Описание Обязательное поле Тип
включена Параметр, определяющий, обновляются ли значения ключей из Конфигурация приложений Azure автоматически. Если свойство отсутствует, используется значение false по умолчанию. false bool
мониторинг Ключи-значения, отслеживаемые при обнаружении изменений, ключи aka sentinel. Значения ключей из Конфигурация приложений Azure обновляются только в том случае, если изменяется по крайней мере один из отслеживаемых значений ключей. Если это свойство отсутствует, все выбранные значения ключей будут отслеживаться для обновления. false объект
interval Интервал обновления значений ключей из Конфигурация приложений Azure. Оно должно быть больше или равно 1 секунде. Если свойство отсутствует, используется значение по умолчанию 30 секунд. false строка длительности

Это spec.configuration.refresh.monitoring.keyValues массив объектов, которые имеют следующие дочерние свойства.

Имя Описание Обязательное поле Тип
key Ключ ключа-значения. true строка
label Метка значения ключа. false строка

Свойство spec.secret имеет следующие дочерние свойства. Требуется, если должны быть скачаны ссылки на Key Vault. Дополнительные сведения о поддержке встроенных типов секретов Kubernetes см. в разделе "Типы секретов".

Имя Описание Обязательное поле Тип
целевой объект Назначение извлеченных секретов в Kubernetes. true объект
auth Метод проверки подлинности для доступа к Key Vaults. false объект
refresh Параметры обновления данных из Key Vault. Если свойство отсутствует, данные из Key Vault не обновляются, если соответствующие ссылки Key Vault не будут перезагружены. false объект

Свойство имеет следующее дочернее spec.secret.target свойство.

Имя Описание Обязательное поле Тип
secretName; Имя создаваемого секрета Kubernetes. true строка

spec.secret.auth Если свойство не задано, используется управляемое удостоверение, назначаемое системой. У него есть следующие дочерние свойства.

Имя Описание Обязательное поле Тип
servicePrincipalReference Имя секрета Kubernetes, содержащего учетные данные субъекта-службы, используемого для проверки подлинности с помощью Key Vault, не имеющих отдельных методов проверки подлинности. false строка
workloadIdentity Параметры удостоверения рабочей нагрузки, используемого для проверки подлинности с помощью Key Vault, которые не имеют отдельных методов проверки подлинности. Он имеет то же дочернее свойство, что spec.auth.workloadIdentityи . false объект
managedIdentityClientId Идентификатор клиента управляемого удостоверения, назначаемого пользователем масштабируемого набора виртуальных машин, используемый для проверки подлинности с помощью Key Vault, которые не имеют отдельных методов проверки подлинности. false строка
keyVaults Методы проверки подлинности для отдельных хранилищ ключей. false Массив объектов

Метод проверки подлинности каждого Key Vault можно указать со следующими свойствами. Одно из managedIdentityClientIdних servicePrincipalReference или workloadIdentity должно быть предоставлено.

Имя Описание Обязательное поле Тип
uri Универсальный код ресурса (URI) хранилища ключей. true строка
servicePrincipalReference Имя секрета Kubernetes, содержащего учетные данные субъекта-службы, используемого для проверки подлинности с помощью Key Vault. false строка
workloadIdentity Параметры удостоверения рабочей нагрузки, используемого для проверки подлинности с помощью Key Vault. Он имеет то же дочернее свойство, что spec.auth.workloadIdentityи . false объект
managedIdentityClientId Идентификатор клиента управляемого удостоверения, назначаемого пользователем, масштабируемого набора виртуальных машин, используемый для проверки подлинности с помощью Key Vault. false строка

Свойство spec.secret.refresh имеет следующие дочерние свойства.

Имя Описание Обязательное поле Тип
включена Параметр, определяющий, обновляются ли данные из Key Vaults автоматически. Если свойство отсутствует, используется значение false по умолчанию. false bool
interval Интервал обновления данных из Key Vault. Оно должно быть больше или равно 1 минуте. Обновление Key Vault не зависит от Конфигурация приложений обновления, настроенного с помощьюspec.configuration.refresh. true строка длительности

Свойство spec.featureFlag имеет следующие дочерние свойства. Требуется, если ожидается, что скачиваются флаги компонентов.

Имя Описание Обязательное поле Тип
Селекторов Список селекторов для фильтрации флагов компонентов. false Массив объектов
refresh Параметры для обновления флагов компонентов из Конфигурация приложений Azure. Если свойство отсутствует, флаги компонентов из Конфигурация приложений Azure не обновляются. false объект

spec.featureFlag.selectors Если свойство не задано, флаги компонентов не скачиваются. Он содержит массив объектов селектора, которые имеют следующие дочерние свойства. Обратите внимание, что флаги функций последнего селектора имеют приоритет и переопределяют все перекрывающиеся ключи из предыдущих селекторов.

Имя Описание Обязательное поле Тип
keyFilter Фильтр ключей для запросов флагов компонентов. Это свойство и snapshotName свойство не должны быть заданы одновременно. альтернатива строка
labelFilter Фильтр меток для запросов флагов компонентов. Это свойство и snapshotName свойство не должны быть заданы одновременно. false строка
SnapshotName Имя моментального снимка, из которого загружаются флаги компонентов. Это свойство не должно использоваться в сочетании с другими свойствами. альтернатива строка

Свойство spec.featureFlag.refresh имеет следующие дочерние свойства.

Имя Описание Обязательное поле Тип
включена Параметр, определяющий, обновляются ли флаги компонентов из Конфигурация приложений Azure автоматически. Если свойство отсутствует, используется значение false по умолчанию. false bool
interval Интервал обновления флагов компонентов с Конфигурация приложений Azure. Оно должно быть больше или равно 1 секунде. Если свойство отсутствует, используется значение по умолчанию 30 секунд. false строка длительности

Установка

Используйте следующую 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, установив для trueпараметра autoscaling.enabled значение .

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. Дополнительные сведения о сборе и использовании данных см. в документации справки и нашем заявлении о конфиденциальности. Использование вами данного программного обеспечения означает ваше согласие с этими принципами.

Примеры

Проверка подлинности

Использование управляемого удостоверения, назначаемого системой масштабируемого набора виртуальных машин

  1. Включите управляемое удостоверение, назначаемое системой, в масштабируемом наборе виртуальных машин, используемом кластером Служба Azure Kubernetes (AKS).

  2. Предоставьте управляемому удостоверению, назначаемого системой, Конфигурация приложений роль средства чтения данных в Конфигурация приложений Azure.

  3. Разверните следующий пример 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
    

Использование управляемого удостоверения, назначаемого пользователем масштабируемого набора виртуальных машин

  1. Создайте управляемое удостоверение , назначаемое пользователем, и запишите его идентификатор клиента после создания.

  2. Назначьте управляемому удостоверению, назначенному пользователем, масштабируемый набор виртуальных машин, используемый кластером Служба Azure Kubernetes (AKS).

  3. Предоставьте управляемому удостоверению, назначаемого пользователем, Конфигурация приложений роль средства чтения данных в Конфигурация приложений Azure.

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

Использование субъекта-службы

  1. Создание субъект-службы

  2. Предоставьте субъекту-службе роль средства чтения данных Конфигурация приложений в Конфигурация приложений Azure.

  3. Создайте секрет Kubernetes в том же пространстве имен, что AzureAppConfigurationProvider и ресурс, и добавьте azure_client_id, azure_client_secret и azure_tenant_id субъекта-службы в секрет.

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

Использование удостоверения рабочей нагрузки

  1. Включите удостоверение рабочей нагрузки в кластере Служба Azure Kubernetes (AKS).

  2. Получите URL-адрес издателя OIDC кластера AKS.

  3. Создайте управляемое удостоверение , назначаемое пользователем, и запишите его идентификатор клиента, идентификатор клиента, имя и группу ресурсов.

  4. Предоставьте управляемому удостоверению, назначаемого пользователем, Конфигурация приложений роль средства чтения данных в Конфигурация приложений Azure.

  5. Создайте учетную запись службы, добавив файл 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>
    
  6. Создайте учетные данные федеративного удостоверения для управляемого удостоверения, назначаемого пользователем, с помощью 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>

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

Использование строка подключения

  1. Создайте секрет Kubernetes в том же пространстве имен, что AzureAppConfigurationProvider и ресурс, и добавьте Конфигурация приложений Azure строка подключения с ключом azure_app_configuration_connection_string в секрете.

  2. 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. Обычно для обновления нескольких ключевых значений не требуется, чтобы кластер взял изменение в середине обновления. Чтобы обеспечить согласованность конфигурации, можно использовать значение ключа для сигнала о завершении обновления. Это значение ключа называется ключом sentinel. Поставщик Kubernetes может отслеживать это значение ключа, а ConfigMap и Secret будут повторно созданы только с обновленными данными после обнаружения изменения в ключе sentinel.

В следующем примере имя ключа с именем " app1_sentinel ключ- значение" будет опрашивать каждую минуту, и конфигурация обновляется всякий раз, когда изменения обнаруживаются в ключе sentinel.

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

Проверка подлинности

В следующем примере один 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:

key значение tags
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

Использование ConfigMap

Приложения, работающие в Kubernetes, обычно используют ConfigMap как переменные среды или как файлы конфигурации. configMapData.type Если свойство отсутствует или имеет значение по умолчанию, ConfigMap заполняется элементизованным списком данных, извлеченных из Конфигурация приложений Azure, которые можно легко использовать в качестве переменных среды. configMapData.type Если для свойства задано значение json, yaml или properties, данные, полученные из Конфигурация приложений Azure, группируются в один элемент с именем ключа, указанным configMapData.key свойством в созданном ConfigMap, который можно использовать в качестве подключенного файла.

В следующих примерах показано, как данные заполняются в созданном ConfigMap с разными параметрами configMapData.type свойства.

Если хранилище Конфигурация приложений имеет следующие ключевые значения:

key значение
key1 value1
key2 value2
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