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


Поддерживаемые параметры GitOps (Flux версии 2)

Azure предоставляет возможность автоматического развертывания приложений с помощью GitOps, которая работает с кластерами Kubernetes в Службе Azure Kubernetes (AKS) и кластерами Kubernetes с поддержкой Azure Arc. GitOps с Flux версии 2 позволяет использовать репозиторий Git в качестве источника истины для конфигурации кластера и развертывания приложений. Дополнительные сведения см. в статьях о развертываниях приложений с помощью GitOps (Flux версии 2) и учебнике. Развертывание приложений с помощью GitOps с Flux версии 2.

GitOps в Kubernetes с поддержкой Azure Arc или Службе Azure Kubernetes использует Flux, популярный набор средств с открытым кодом, который поддерживает множество параметров для включения различных сценариев. Описание всех параметров, поддерживаемых Flux, см. в официальной документации Flux.

Чтобы просмотреть все параметры, поддерживаемые Flux в Azure, см az k8s-configuration . документацию. Эта реализация в настоящее время не поддерживает каждый параметр, поддерживаемый Flux. Сообщите нам, отсутствует ли нужный параметр из реализации Azure.

В этой статье описываются некоторые параметры и аргументы, доступные для az k8s-configuration flux create команды. Вы также можете просмотреть полный список параметров для этого az k8s-configuration flux с помощью -h параметра в Azure CLI (например, az k8s-configuration flux -h или az k8s-configuration flux create -h).

Подсказка

Решением для развертывания ресурсов Flux с не поддерживаемыми параметрами является определение необходимых пользовательских ресурсов Flux (например , GitRepository или Kustomization) в репозитории Git. Разверните эти ресурсы с помощью az k8s-configuration flux create команды. Затем вы по-прежнему сможете получить доступ к ресурсам Flux через пользовательский интерфейс Azure Arc.

Общие аргументы конфигурации

Параметр Формат Примечания.
--cluster-name -c Струна Имя ресурса кластера в Azure.
--cluster-type -t Допустимые значения: connectedClusters, managedClusters Используйте connectedClusters для кластеров Kubernetes с поддержкой Azure Arc или managedClusters для кластеров AKS.
--resource-group -g Струна Имя группы ресурсов Azure, содержащей ресурс кластера.
--name -n Струна Имя конфигурации Flux в Azure.
--namespace --ns Струна Имя пространства имен для развертывания конфигурации. По умолчанию: default.
--scope -s Струна Область разрешений для операторов. Возможные значения: cluster (полный доступ) или namespace (ограниченный доступ). По умолчанию: cluster.
--suspend флаг Приостанавливает все выверки исходного кода и Kustomize, определенные в этой конфигурации Flux. Сверки, оставшиеся активными на момент приостановки, будут продолжаться.

Исходные общие аргументы

Параметр Формат Примечания.
--kind Струна Тип источника для согласования. Допустимые значения: bucket, git, azblob. По умолчанию: git.
--timeout Формат длительности в Golang Максимальное время для попытки согласования источника перед истечением времени ожидания. По умолчанию: 10m.
--sync-interval --interval Формат длительности в Golang Временной интервал между сверками данных в кластере. По умолчанию: 10m.

Аргументы ссылок на источник репозитория Git

Параметр Формат Примечания.
--branch Струна Ветвь в репозитории Git для синхронизации с кластером. По умолчанию: master. Более новые репозитории могут иметь корневую ветвь с именем main, в этом случае необходимо задать --branch=main.
--tag Струна Тег в источнике Git для синхронизации с кластером. Пример: --tag=3.2.0.
--semver Струна Диапазон тегов semver Git в репозитории Git для синхронизации с кластером. Пример: --semver=">=3.1.0-rc.1 <3.2.0".
--commit Струна Git фиксация SHA в источнике Git для синхронизации с кластером. Пример: --commit=363a6a8fe6a7f13e05d34c163b0ef02a777da20a.

Дополнительные сведения см. в документации Flux по стратегиям получения файлов из репозитория Git.

Общедоступный репозиторий Git

Параметр Формат Примечания.
--url -u http[s]://server/repo[.git] URL-адрес источника репозитория Git для согласования с кластером.

Частный репозиторий Git с SSH

Это важно

Azure DevOps объявила об отмене SSH-RSA в качестве поддерживаемого метода шифрования для подключения к репозиториям Azure с помощью SSH. При использовании ключей SSH для подключения к репозиториям Azure в конфигурациях Flux рекомендуется перейти к более безопасным ключам RSA-SHA2-256 или RSA-SHA2-512. Дополнительные сведения см. в статье Об устаревании SSH-RSA в Azure DevOps.

Частный репозиторий Git с ключами, созданными SSH и Flux

Добавьте открытый ключ, созданный с помощью Flux, в учетную запись пользователя в поставщике службы Git.

Параметр Формат Примечания.
--url -u ssh://user@server/repo[.git] git@ следует заменить user@ , если открытый ключ связан с репозиторием вместо учетной записи пользователя.

Частный репозиторий Git с ключами SSH и пользовательскими ключами

Используйте собственный закрытый ключ непосредственно или из файла. Ключ должен быть в формате PEM и заканчиваться новой строкой (\n).

Добавьте связанный открытый ключ в учетную запись пользователя в поставщике службы Git.

Параметр Формат Примечания.
--url -u ssh://user@server/repo[.git] git@ следует заменить user@ , если открытый ключ связан с репозиторием вместо учетной записи пользователя.
--ssh-private-key Ключ Base64 в формате PEM Укажите ключ напрямую.
--ssh-private-key-file Полный путь к локальному файлу Укажите полный путь к локальному файлу, который содержит ключ формата PEM.

Частный Git-хост с SSH и известными пользователю узлами.

Оператор Flux поддерживает список распространенных узлов Git в файле known_hosts . Flux использует эти сведения для проверки подлинности репозитория Git перед установкой подключения SSH. Если вы используете необычный репозиторий Git или собственный узел Git, вы можете указать ключ узла, чтобы Flux идентифицировать репозиторий.

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

Параметр Формат Примечания.
--url -u ssh://user@server/repo[.git] git@ может заменить user@.
--known-hosts Строка Base64 Предоставьте known_hosts содержимое напрямую.
--known-hosts-file Полный путь к локальному файлу Предоставьте known_hosts содержимое в локальный файл.

Частный репозиторий Git с пользователем и ключом HTTPS

Параметр Формат Примечания.
--url -u https://server/repo[.git] HTTPS с базовой проверкой подлинности.
--https-user Необработанная строка Имя пользователя HTTPS.
--https-key Необработанная строка HTTPS персональный токен доступа или пароль.

Частный репозиторий Git с сертификатом центра сертификации (CA) для HTTPS

Параметр Формат Примечания.
--url -u https://server/repo[.git] HTTPS с базовой проверкой подлинности.
--https-ca-cert Строка Base64 Сертификат удостоверяющего центра для TLS связи.
--https-ca-cert-file Полный путь к локальному файлу Укажите содержимое сертификата ЦС в локальном файле.

Аргументы источника контейнера

Если используется bucket источник, ниже приведены аргументы команды для конкретного контейнера.

Параметр Формат Примечания.
--url -u Строка URL-адреса URL-адрес для bucket. Поддерживаемые форматы: http://, https://.
--bucket-name Струна Имя bucket для синхронизации.
--bucket-access-key Струна Идентификатор ключа доступа, используемый для аутентификации с помощью bucket.
--bucket-secret-key Струна Секретный ключ, используемый для проверки подлинности с помощью bucket.
--bucket-insecure булевый Связь с bucket без использования TLS. Если он не указан, предполагается значение false; Если задано, предполагается значение true.

Исходные аргументы учетной записи BLOB-хранилища Azure

Если вы используете источник azblob, ниже указаны аргументы команд, специфичные для BLOB.

Параметр Формат Примечания.
--url -u Строка URL-адреса URL-адрес для azblob.
--container-name Струна Имя контейнера хранилища BLOB-объектов Azure для синхронизации
--sp_client_id Струна Идентификатор клиента для аутентификации учетной записи службы в Azure Blob, необходимый для этого метода аутентификации.
--sp_tenant_id Струна Идентификатор арендатора для аутентификации служебного главного компонента с помощью хранилища Azure Blob, необходимый для данного метода проверки подлинности.
--sp_client_secret Струна Секрет клиента для проверки подлинности субъекта-службы с помощью BLOB-объекта Azure
--sp_client_cert Струна Сертификат клиента в кодировке Base64 для аутентификации сервисного объекта в Azure Blob
--sp_client_cert_password Струна Пароль сертификата клиента, используемого для аутентификации сервисного принципала в Azure Blob
--sp_client_cert_send_chain Струна Указывает, следует ли включать заголовок x5c в утверждения клиента при получении токена для активации аутентификации на основе имени субъекта и издателя для клиентского сертификата.
--account_key Струна Общий ключ Azure Blob для проверки подлинности
--sas_token Струна Токен SAS для BLOB-объектов Azure для аутентификации
--managed-identity-client-id Струна Идентификатор клиента для управляемого удостоверения при аутентификации с Хранилищем объектов Azure (Azure Blob Storage).

Это важно

При использовании аутентификации с управляемой идентичностью для кластеров AKS и azblob источника управляемой идентичности, ей должно быть назначено как минимум роль читателя данных хранилища BLOB. Проверка подлинности с помощью управляемого удостоверения пока недоступна для кластеров Kubernetes с поддержкой Azure Arc.

Локальный секрет для аутентификации с источником

Вы можете использовать локальный секрет Kubernetes для проверки подлинности с источником git, bucket или azBlob. Локальный секрет должен содержать все параметры проверки подлинности, необходимые для источника, и их необходимо создать в том же пространстве имен, что и конфигурация Flux.

Параметр Формат Примечания.
--local-auth-ref --local-ref Струна Локальная ссылка на секрет Kubernetes в пространстве имен конфигурации Flux для проверки подлинности с источником.

Для проверки подлинности HTTPS создается секрет с username и password.

kubectl create ns flux-config
kubectl create secret generic -n flux-config my-custom-secret --from-literal=username=<my-username> --from-literal=password=<my-password-or-key>

Для проверки подлинности SSH создайте секрет с полямиidentity:known_hosts

kubectl create ns flux-config
kubectl create secret generic -n flux-config my-custom-secret --from-file=identity=./id_rsa --from-file=known_hosts=./known_hosts

Это важно

Azure DevOps объявила об отмене SSH-RSA в качестве поддерживаемого метода шифрования для подключения к репозиториям Azure с помощью SSH. При использовании ключей SSH для подключения к репозиториям Azure в конфигурациях Flux рекомендуется перейти к более безопасным ключам RSA-SHA2-256 или RSA-SHA2-512. Дополнительные сведения см. в статье Об устаревании SSH-RSA в Azure DevOps.

В обоих случаях при создании конфигурации Flux используйте --local-auth-ref my-custom-secret вместо других параметров проверки подлинности:

az k8s-configuration flux create -g <cluster_resource_group> -c <cluster_name> -n <config_name> -t connectedClusters --scope cluster --namespace flux-config -u <git-repo-url> --kustomization name=kustomization1 --local-auth-ref my-custom-secret

Узнайте больше об использовании локального секрета Kubernetes с этими методами проверки подлинности.

Примечание.

Если вам нужен Flux для доступа к источнику через прокси-сервер, необходимо обновить агенты Azure Arc с параметрами прокси-сервера. Дополнительные сведения см. в разделе Подключение с использованием исходящего прокси-сервера.

Внедрение Git

Для поддержки различных поставщиков репозитория, реализующих Git, Flux можно настроить для использования одной из двух библиотек Git: go-git или libgit2. Подробности см. в документации Flux.

Реализация GitOps Flux версии 2 автоматически определяет, какую библиотеку следует использовать для общедоступных репозиториев облака:

  • Для репозиториев GitHub, GitLab и BitBucket Flux используется go-git.
  • Для Azure DevOps и всех остальных репозиториев Flux использует libgit2.

Для локальных репозиториев используется Flux libgit2.

Кастомизация

Kustomization — это параметр, созданный для конфигураций Flux, который позволяет выбрать определенный путь в исходном репозитории, который согласен с кластером. Вам не нужно создать файл kustomization.yaml в указанном пути. По умолчанию все манифесты в указанном пути синхронизируются. Однако, если вы хотите создать оверлей Kustomize для приложений, доступных на этом пути репозитория, вам следует создать файлы Kustomize в git для конфигурации Flux, чтобы их использовать.

С помощью az k8s-configuration flux kustomization createможно создать одну или несколько kustomizations во время настройки.

Параметр Формат Примечания.
--kustomization Нет значения Начало строки параметров, которые конфигурируют кастомизацию. Его можно использовать несколько раз для создания различных настроек.
name Струна Уникальное имя для этой настройки.
path Струна Путь в репозитории Git для согласования с кластером. По умолчанию используется верхний уровень ветви.
prune булевый По умолчанию — false. Настройте prune=true, чтобы гарантировать, что объекты, развернутые Flux в кластере, удаляются, если они удаляются из репозитория, или если конфигурация Flux или настройки kustomizations удаляются. Использование prune=true важно для сред, где пользователи не имеют доступа к кластерам и могут вносить изменения только через репозиторий Git.
depends_on Струна Имя одной или нескольких кaстомизаций (в этой конфигурации), которые должны согласоваться до того, как эта кастомизация может согласоваться. Например: depends_on=["kustomization1","kustomization2"]. Если удалить kustomization, которая имеет зависимые kustomizations, состояние этих зависимых kustomizations становится DependencyNotReady, и сверка останавливается.
timeout Формат длительности в Golang По умолчанию: 10m.
sync_interval Формат длительности в Golang По умолчанию: 10m.
retry_interval Формат длительности в Golang По умолчанию: 10m.
validation Струна Значения: none, client, server. По умолчанию: none. Для получения дополнительных сведений см. документацию Flux.
force булевый По умолчанию: false. Задайте force=true, чтобы указать контроллеру kustomize повторно создавать ресурсы, если исправление не удалось из-за изменения неизменяемого поля.

Вы также можете использовать az k8s-configuration flux kustomization для обновления, перечисления, отображения и удаления kustomizations в конфигурации Flux.

Дальнейшие действия