Поддерживаемые параметры GitOps (Flux версии 2)
Azure предоставляет возможность автоматического развертывания приложений с помощью GitOps, которая работает с кластерами Kubernetes с поддержкой Служба Azure Kubernetes (AKS) и 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 |
flag | Приостанавливает все исходные и 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 с сертификатом ЦС 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 без протокола TLS. Если он не указан, предполагается значение false; Если задано, предполагается значение true. |
аргументы источника учетной записи Хранилище BLOB-объектов Azure
Если используется azblob
источник, ниже приведены аргументы команды, относящиеся к большому двоичному объекту.
Параметр | Форматировать | Примечания. |
---|---|---|
--url -u |
Строка URL-адреса | URL-адрес для azblob . |
--container-name |
Строка | Имя контейнера Хранилище BLOB-объектов Azure для синхронизации |
--sp_client_id |
Строка | Идентификатор клиента для проверки подлинности субъекта-службы с помощью BLOB-объектов Azure, необходимый для этого метода проверки подлинности. |
--sp_tenant_id |
Строка | Идентификатор клиента для проверки подлинности субъекта-службы с помощью BLOB-объектов Azure, необходимый для этого метода проверки подлинности. |
--sp_client_secret |
Строка | Секрет клиента для проверки подлинности субъекта-службы с помощью BLOB-объекта Azure |
--sp_client_cert |
Строка | Сертификат клиента в кодировке Base64 для проверки подлинности субъекта-службы с помощью BLOB-объекта Azure |
--sp_client_cert_password |
Строка | Пароль сертификата клиента, используемого для проверки подлинности субъекта-службы с помощью BLOB-объекта Azure |
--sp_client_cert_send_chain |
Строка | Указывает, следует ли включать заголовок x5c в утверждения клиента при получении маркера для включения проверки подлинности субъекта или издателя для сертификата клиента. |
--account_key |
Строка | Общий ключ BLOB-объектов Azure для проверки подлинности |
--sas_token |
Строка | Маркер SAS BLOB-объектов Azure для проверки подлинности |
--managed-identity-client-id |
Строка | Идентификатор клиента управляемого удостоверения для проверки подлинности с помощью BLOB-объекта Azure |
Внимание
При использовании проверки подлинности управляемого удостоверения для кластеров 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 с этими методами проверки подлинности:
- Проверка подлинности HTTPS репозитория Git
- Самозаверяющий сертификат HTTPS репозитория Git
- Проверка подлинности SSH репозитория Git
- Статическая проверка подлинности в контейнере
Примечание.
Если вам нужен Flux для доступа к источнику через прокси-сервер, необходимо обновить агенты Azure Arc с параметрами прокси-сервера. Дополнительные сведения см. в разделе Подключение с использованием исходящего прокси-сервера.
Реализация Git
Для поддержки различных поставщиков репозитория, реализующих Git, Flux можно настроить для использования одной из двух библиотек Git: go-git
или libgit2
. Дополнительные сведения см. в документации flux.
Реализация GitOps Flux версии 2 автоматически определяет, какую библиотеку следует использовать для общедоступных репозиториев облака:
- Для репозиториев GitHub, GitLab и BitBucket используется
go-git
Flux. - Для Azure DevOps и всех остальных репозиториев используется Flux
libgit2
.
Для локальных репозиториев используется Flux libgit2
.
Kustomization
Kustomization — это параметр, созданный для конфигураций Flux, который позволяет выбрать определенный путь в исходном репозитории, который согласен с кластером. Вам не нужно создать файл kustomization.yaml в указанном пути. По умолчанию все манифесты в этом пути согласованы. Однако если вы хотите наложить kustomize на приложения, доступные по этому пути репозитория, необходимо создать файлы Kustomize в git для конфигурации Flux, чтобы использовать их.
С помощью az k8s-configuration flux kustomization create
можно создать одну или несколько kustomizations во время настройки.
Параметр | Форматировать | Примечания. |
---|---|---|
--kustomization |
Нет значения | Начало строки параметров, которые настраивают kustomization. Его можно использовать несколько раз для создания нескольких kustomizations. |
name |
Строка | Уникальное имя для этой kustomization. |
path |
Строка | Путь в репозитории Git для согласования с кластером. По умолчанию используется верхний уровень ветви. |
prune |
Логический | По умолчанию — false . Установите для prune=true обеспечения того, чтобы объекты, развернутые в кластере Flux, были удалены, если они удалены из репозитория, или если конфигурация Flux или kustomizations удаляются. Использование prune=true важно для сред, где пользователи не имеют доступа к кластерам и могут вносить изменения только через репозиторий Git. |
depends_on |
Строка | Имя одного или нескольких kustomizations (в этой конфигурации), которое должно примириться до того, как эта kustomization может примириться. Например: 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.
Следующие шаги
- Дополнительные сведения о развертываниях приложений с помощью GitOps (Flux версии 2) для AKS и Kubernetes с поддержкой Azure Arc.
- Используйте наш учебник, чтобы узнать , как включить GitOps в кластерах Kubernetes с поддержкой AKS или Azure Arc.
- Сведения о рабочем процессе CI/CD с помощью GitOps.