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


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

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

Примеры

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

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

  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. В следующем примере поставщик 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