Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В этом руководстве описывается, как использовать GitOps в кластере Kubernetes. GitOps с Flux версии 2 — это расширение кластера для кластеров Kubernetes с поддержкой Azure Arc или кластеров Службы Azure Kubernetes (AKS). После установки microsoft.flux расширения кластера, вы можете создать один или несколько fluxConfigurations ресурсов, которые синхронизируют источники Git-репозитория с кластером и привести кластер в нужное состояние. Используя GitOps, вы можете использовать репозиторий Git в качестве источника истины для конфигурации кластера и развертывания приложений.
В этом руководстве вы используете пример конфигурации GitOps с двумя kustomizations, чтобы увидеть, как одна kustomization может иметь зависимость от другого. При необходимости можно добавить дополнительные параметры kustomizations и зависимостей в зависимости от вашего сценария.
Прежде чем погрузиться в изучение, узнайте, как GitOps с Flux работает концептуально.
Подсказка
Хотя источник в этом руководстве является репозиторием Git, Flux также предоставляет поддержку других распространенных источников файлов, таких как репозитории Helm, Контейнеры и Хранилище BLOB-объектов Azure.
Вы также можете создавать конфигурации Flux с помощью Bicep, шаблонов ARM или поставщика Terraform AzAPI. Дополнительные сведения см. в статье Microsoft.KubernetesConfiguration fluxConfigurations.
Попробуйте использовать новое расширение Microsoft GitOps ArgoCD. Argo CD — это популярное средство GitOps с открытым исходным кодом, которое предоставляет другой набор функций и возможностей по сравнению с Flux версии 2.
Предпосылки
Чтобы развернуть приложения с помощью GitOps, используя Flux версии 2, вам потребуется:
Кластеры Kubernetes с поддержкой Azure Arc
Запущенный подключенный кластер Kubernetes с поддержкой Azure Arc. Кластеры на основе Arm64 поддерживаются начиная с
microsoft.fluxверсии 1.7.0.Узнайте, как подключить кластер Kubernetes к Azure Arc. Если необходимо подключиться через исходящий прокси-сервер, установите агенты Arc с параметрами прокси-сервера.
Разрешения на чтение и запись для типа ресурса
Microsoft.Kubernetes/connectedClusters.
Кластеры Службы Azure Kubernetes
Запущенный кластер AKS на основе MSI.
Внимание
Убедитесь, что кластер AKS создан с помощью MSI (а не SPN), так как расширение
microsoft.fluxне работает с кластерами AKS на основе учетных записей службы. Для новых кластеров AKS, созданных с помощьюaz aks create, кластер по умолчанию основан на MSI. Чтобы преобразовать SPN-кластеры в MSI, выполните командуaz aks update -g $RESOURCE_GROUP -n $CLUSTER_NAME --enable-managed-identity. Для получения дополнительной информации см. статью об использовании управляемой идентичности в AKS.Разрешения на чтение и запись для типа ресурса
Microsoft.ContainerService/managedClusters.
Общие для обоих типов кластеров
Разрешения на чтение и запись для этих типов ресурсов:
Microsoft.KubernetesConfiguration/extensionsMicrosoft.KubernetesConfiguration/fluxConfigurations
Azure CLI 2.15 или более поздней версии. Установите Azure CLI или используйте следующие команды для обновления до последней версии:
az version az upgradeКлиент командной строки Kubernetes, kubectl. Если вы используете Azure Cloud Shell,
kubectlуже установлен.Установите
kubectlлокально с помощьюaz aks install-cliкоманды:az aks install-cliРегистрация следующих поставщиков ресурсов Azure:
az provider register --namespace Microsoft.Kubernetes az provider register --namespace Microsoft.ContainerService az provider register --namespace Microsoft.KubernetesConfigurationРегистрация — это асинхронный процесс, который должен завершиться в течение 10 минут. Чтобы отслеживать процесс регистрации, используйте следующую команду:
az provider show -n Microsoft.KubernetesConfiguration -o table Namespace RegistrationPolicy RegistrationState --------------------------------- -------------------- ------------------- Microsoft.KubernetesConfiguration RegistrationRequired Registered
Поддержка версий и регионов
В настоящее время GitOps поддерживается во всех регионах, поддерживаемых Kubernetes с поддержкой Azure Arc. В настоящее время GitOps доступна в некоторых регионах, поддерживаемых AKS. Служба GitOps добавляет новые поддерживаемые регионы на регулярной основе.
Поддерживается последняя версия расширения Flux версии 2 и две предыдущие версии (N-2). Как правило, рекомендуется использовать последнюю версию расширения.
Требования к сети
Для работы агентов GitOps требуется исходящее TCP-подключение (исходящий трафик) к источнику репозитория через порт 22 (SSH) или 443 (HTTPS). Агенты также требуют доступа к следующим исходящим URL-адресам:
| Конечная точка (DNS) | Описание |
|---|---|
https://management.azure.com |
Требуется для взаимодействия агента со службой конфигурации Kubernetes. |
https://<region>.dp.kubernetesconfiguration.azure.com |
Конечная точка плоскости данных, через которую агент будет отправлять сведения о состоянии и извлекать сведения о конфигурации. Зависит от <region> (поддерживаемых регионов, упомянутых ранее). |
https://login.microsoftonline.com |
Требуется для извлечения и обновления токенов Azure Resource Manager. |
https://mcr.microsoft.com |
Требуется контроллерам Flux для извлечения образов контейнеров. |
Включение расширений CLI
Установите последние пакеты расширений k8s-configuration и k8s-extension для CLI.
az extension add -n k8s-configuration
az extension add -n k8s-extension
Чтобы обновить эти пакеты до последних версий:
az extension update -n k8s-configuration
az extension update -n k8s-extension
Чтобы просмотреть список всех установленных расширений Azure CLI и их версий, выполните следующую команду:
az extension list -o table
Experimental ExtensionType Name Path Preview Version
------------- -------------- ----------------- ----------------------------------------------------- -------- --------
False whl connectedk8s C:\Users\somename\.azure\cliextensions\connectedk8s False 1.2.7
False whl k8s-configuration C:\Users\somename\.azure\cliextensions\k8s-configuration False 1.5.0
False whl k8s-extension C:\Users\somename\.azure\cliextensions\k8s-extension False 1.1.0
Подсказка
Сведения об устранении ошибок см. в разделе GitOps (Flux версии 2) в разделе "Устранение неполадок с расширением для кластеров Kubernetes с поддержкой Azure Arc".
Применение конфигурации Flux
k8s-configuration Используйте расширение Azure CLI или портал Azure, чтобы включить GitOps в кластере Kubernetes с поддержкой AKS или Arc. Для демонстрации используйте общедоступный репозиторий gitops-flux2-kustomize-helm-mt .
Внимание
Демонстрационный репозиторий предназначен для упрощения использования этого руководства и иллюстрации ключевых принципов. Чтобы поддерживать репозиторий в актуальном состоянии, поддерживающие могут иногда внедрять критические изменения в результате обновлений версий. Эти изменения не влияют на новое использование этого руководства, только предыдущие приложения. Дополнительные сведения см. в заявлении об отказе от критических изменений.
В следующем примере команда используется az k8s-configuration flux create для применения конфигурации Flux к кластеру с помощью следующих значений и параметров:
- Группа ресурсов, содержащая кластер
flux-demo-rg. - Имя кластера Azure Arc
flux-demo-arc. - Тип кластера — Azure Arc (
-t connectedClusters), но этот пример также работает с AKS (-t managedClusters). - Имя конфигурации Flux —
cluster-config. - Пространство имен для установки конфигурации
cluster-config. - URL-адрес общедоступного репозитория
https://github.com/Azure/gitops-flux2-kustomize-helm-mtGit. - Ветвь репозитория Git —
main. - Область действия конфигурации
cluster. Эта область предоставляет операторам разрешения на внесение изменений в кластер. Чтобы использовать областьnamespaceс этим руководством, ознакомьтесь с необходимыми изменениями. - Два настройки указаны с именами
infraиapps. Каждый из них связан с путем к файлу в репозитории. - Зависимость
appsкастомизации отinfraкастомизации. (Кастомизацияinfraдолжна завершиться доappsзапуска кастомизации.) - Задайте
prune=trueдля обоих настроек. Этот параметр гарантирует, что объекты, развернутые Flux в кластере, очищаются, если они удалены из репозитория, или если удаляются конфигурация Flux или кастомизации.
az k8s-configuration flux create -g flux-demo-rg \
-c flux-demo-arc \
-n cluster-config \
--namespace cluster-config \
-t connectedClusters \
--scope cluster \
-u https://github.com/Azure/gitops-flux2-kustomize-helm-mt \
--branch main \
--kustomization name=infra path=./infrastructure prune=true \
--kustomization name=apps path=./apps/staging prune=true dependsOn=\["infra"\]
Расширение microsoft.flux устанавливается в кластере (если оно еще не было установлено в предыдущем развертывании GitOps).
Подсказка
Команда az k8s-configuration flux create развертывает microsoft.flux расширение в кластере и создает конфигурацию. В некоторых сценариях может потребоваться создать экземпляр расширения flux отдельно перед созданием ресурсов конфигурации. Для этого используйте az k8s-extension create команду для создания экземпляра расширения в кластере.
При первой установке конфигурации flux начальное состояние соответствия может быть Pending или Non-compliant потому, что выверка по-прежнему продолжается. Через минуту запросите конфигурацию еще раз, чтобы увидеть окончательное состояние соответствия.
az k8s-configuration flux show -g flux-demo-rg -c flux-demo-arc -n cluster-config -t connectedClusters
Чтобы убедиться, что развертывание выполнено успешно, выполните следующую команду:
az k8s-configuration flux show -g flux-demo-rg -c flux-demo-arc -n cluster-config -t connectedClusters
При успешном развертывании создаются следующие пространства имен:
-
flux-system: содержит контроллеры расширений Flux. -
cluster-config: содержит объекты конфигурации Flux. -
nginx,podinfo,redis: пространства имён, содержащие рабочие нагрузки, указанные в манифестах репозитория Git.
Чтобы подтвердить пространства имен, выполните следующую команду:
kubectl get namespaces
Пространство имен flux-system включает расширения объектов Flux:
- Контроллеры Azure Flux:
fluxconfig-agentfluxconfig-controller - Контроллеры Flux OSS:
source-controller,kustomize-controller,helm-controller,notification-controller
Агент Flux и модули pod контроллера должны находиться в состоянии выполнения. Подтвердите это с помощью следующей команды:
kubectl get pods -n flux-system
NAME READY STATUS RESTARTS AGE
fluxconfig-agent-9554ffb65-jqm8g 2/2 Running 0 21m
fluxconfig-controller-9d99c54c8-nztg8 2/2 Running 0 21m
helm-controller-59cc74dbc5-77772 1/1 Running 0 21m
kustomize-controller-5fb7d7b9d5-cjdhx 1/1 Running 0 21m
notification-controller-7d45678bc-fvlvr 1/1 Running 0 21m
source-controller-df7dc97cd-4drh2 1/1 Running 0 21m
Пространство имен cluster-config содержит объекты конфигурации Flux.
kubectl get crds
NAME CREATED AT
alerts.notification.toolkit.fluxcd.io 2022-04-06T17:15:48Z
arccertificates.clusterconfig.azure.com 2022-03-28T21:45:19Z
azureclusteridentityrequests.clusterconfig.azure.com 2022-03-28T21:45:19Z
azureextensionidentities.clusterconfig.azure.com 2022-03-28T21:45:19Z
buckets.source.toolkit.fluxcd.io 2022-04-06T17:15:48Z
connectedclusters.arc.azure.com 2022-03-28T21:45:19Z
customlocationsettings.clusterconfig.azure.com 2022-03-28T21:45:19Z
extensionconfigs.clusterconfig.azure.com 2022-03-28T21:45:19Z
fluxconfigs.clusterconfig.azure.com 2022-04-06T17:15:48Z
gitconfigs.clusterconfig.azure.com 2022-03-28T21:45:19Z
gitrepositories.source.toolkit.fluxcd.io 2022-04-06T17:15:48Z
helmcharts.source.toolkit.fluxcd.io 2022-04-06T17:15:48Z
helmreleases.helm.toolkit.fluxcd.io 2022-04-06T17:15:48Z
helmrepositories.source.toolkit.fluxcd.io 2022-04-06T17:15:48Z
imagepolicies.image.toolkit.fluxcd.io 2022-04-06T17:15:48Z
imagerepositories.image.toolkit.fluxcd.io 2022-04-06T17:15:48Z
imageupdateautomations.image.toolkit.fluxcd.io 2022-04-06T17:15:48Z
kustomizations.kustomize.toolkit.fluxcd.io 2022-04-06T17:15:48Z
providers.notification.toolkit.fluxcd.io 2022-04-06T17:15:48Z
receivers.notification.toolkit.fluxcd.io 2022-04-06T17:15:48Z
volumesnapshotclasses.snapshot.storage.k8s.io 2022-03-28T21:06:12Z
volumesnapshotcontents.snapshot.storage.k8s.io 2022-03-28T21:06:12Z
volumesnapshots.snapshot.storage.k8s.io 2022-03-28T21:06:12Z
websites.extensions.example.com 2022-03-30T23:42:32Z
Подтвердите другие сведения о конфигурации с помощью следующих команд.
kubectl get fluxconfigs -A
NAMESPACE NAME SCOPE URL PROVISION AGE
cluster-config cluster-config cluster https://github.com/Azure/gitops-flux2-kustomize-helm-mt Succeeded 44m
kubectl get gitrepositories -A
NAMESPACE NAME URL READY STATUS AGE
cluster-config cluster-config https://github.com/Azure/gitops-flux2-kustomize-helm-mt True Fetched revision: main/4f1bdad4d0a54b939a5e3d52c51464f67e474fcf 45m
kubectl get helmreleases -A
NAMESPACE NAME READY STATUS AGE
cluster-config nginx True Release reconciliation succeeded 66m
cluster-config podinfo True Release reconciliation succeeded 66m
cluster-config redis True Release reconciliation succeeded 66m
kubectl get kustomizations -A
NAMESPACE NAME READY STATUS AGE
cluster-config cluster-config-apps True Applied revision: main/4f1bdad4d0a54b939a5e3d52c51464f67e474fcf 65m
cluster-config cluster-config-infra True Applied revision: main/4f1bdad4d0a54b939a5e3d52c51464f67e474fcf 65m
Рабочие нагрузки развертываются из манифестов в репозитории Git.
kubectl get deploy -n nginx
NAME READY UP-TO-DATE AVAILABLE AGE
nginx-ingress-controller 1/1 1 1 67m
nginx-ingress-controller-default-backend 1/1 1 1 67m
kubectl get deploy -n podinfo
NAME READY UP-TO-DATE AVAILABLE AGE
podinfo 1/1 1 1 68m
kubectl get all -n redis
NAME READY STATUS RESTARTS AGE
pod/redis-master-0 1/1 Running 0 68m
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
service/redis-headless ClusterIP None <none> 6379/TCP 68m
service/redis-master ClusterIP 10.0.13.182 <none> 6379/TCP 68m
NAME READY AGE
statefulset.apps/redis-master 1/1 68m
Управление развертыванием контроллеров с помощью расширения кластера Flux
Для некоторых сценариев может потребоваться изменить, какие контроллеры Flux устанавливаются с помощью расширения кластера Flux.
Процесс установки по умолчанию включает source, helm, kustomize и notification контроллеры Flux. Необходимо явно включить image-automation и image-reflector контроллеры, которые обновляют репозиторий Git при наличии новых образов контейнеров.
Для изменения параметров по умолчанию можно использовать k8s-extension команду:
-
--config source-controller.enabled=<true/false>(по умолчаниюtrue) -
--config helm-controller.enabled=<true/false>(по умолчаниюtrue) -
--config kustomize-controller.enabled=<true/false>(по умолчаниюtrue) -
--config notification-controller.enabled=<true/false>(по умолчаниюtrue) -
--config image-automation-controller.enabled=<true/false>(по умолчаниюfalse) -
--config image-reflector-controller.enabled=<true/false>(по умолчаниюfalse)
Например, установите notification-controller.enabled, чтобы изменить его на false и отключить уведомления.
Следующая команда устанавливает image-reflector и image-automation контроллеры. При автоматическом создании расширения Flux при создании конфигурации Flux имя расширения — flux.
az k8s-extension create -g <cluster_resource_group> -c <cluster_name> -t <connectedClusters or managedClusters or provisionedClusters> --name flux --extension-type microsoft.flux --config image-automation-controller.enabled=true image-reflector-controller.enabled=true
Использование удостоверения Kubelet в качестве метода проверки подлинности для кластеров AKS
Для кластеров AKS один из вариантов проверки подлинности — удостоверение kubelet. По умолчанию AKS создает собственное удостоверение kubelet в управляемой группе ресурсов. Если вы предпочитаете, можно использовать управляемое удостоверение kubelet, созданное заранее. Чтобы использовать эту идентификацию, добавьте параметр --config useKubeletIdentity=true при установке расширения Flux.
az k8s-extension create --resource-group <resource-group> --cluster-name <cluster-name> --cluster-type managedClusters --name flux --extension-type microsoft.flux --config useKubeletIdentity=true
Руководство по подключению Red Hat OpenShift
Для контроллеров Flux требуется некорневоеограничение контекста безопасности для правильного развертывания подов в кластере. Добавьте эти ограничения в кластер перед развертыванием microsoft.flux расширения.
NS="flux-system"
oc adm policy add-scc-to-user nonroot system:serviceaccount:$NS:kustomize-controller
oc adm policy add-scc-to-user nonroot system:serviceaccount:$NS:helm-controller
oc adm policy add-scc-to-user nonroot system:serviceaccount:$NS:source-controller
oc adm policy add-scc-to-user nonroot system:serviceaccount:$NS:notification-controller
oc adm policy add-scc-to-user nonroot system:serviceaccount:$NS:image-automation-controller
oc adm policy add-scc-to-user nonroot system:serviceaccount:$NS:image-reflector-controller
Дополнительные сведения об использовании OpenShift для подключения Flux см. в документации по Flux.
Работа с параметрами
Flux поддерживает множество параметров для включения различных сценариев. Описание всех параметров, поддерживаемых Flux, см. в официальной документации Flux. Flux в Azure пока не поддерживает все параметры. Оставьте отзыв, чтобы сообщить нам, отсутствует ли нужный параметр в реализации Azure.
Сведения о доступных параметрах и их использовании см. в поддерживаемых параметрах GitOps (Flux версии 2).
Справочник по локальной проверке подлинности секретов
Чтобы использовать ссылку на локальную проверку подлинности учетных данных, секрет должен существовать в том же пространстве имен, где вы развертываете fluxConfiguration. Секрет также должен содержать все параметры проверки подлинности, необходимые для источника.
Сведения о создании секретов для различных fluxConfiguration источников см. в разделе "Локальный секрет" для проверки подлинности с помощью источника.
Управление конфигурацией кластера с помощью контроллера Flux Kustomize
Контроллер Flux Kustomize устанавливается как часть microsoft.flux расширения кластера. Он позволяет декларативному управлению конфигурацией кластера и развертыванием приложений с помощью манифестов Kubernetes, синхронизированных с репозиторием Git. Эти манифесты Kubernetes могут дополнительно включать файл kustomize.yaml .
Дополнительные сведения об использовании см. в следующих ресурсах:
- Контроллер Flux Kustomize
- Справочные материалы по Kustomize
- Файл "kustomization"
- Проект Kustomize
- Руководства Kustomize
Управление выпусками диаграмм Helm с помощью контроллера Flux Helm
Контроллер Helm Flux устанавливается в составе расширения кластера microsoft.flux. Он декларативно управляет выпусками диаграмм Helm с помощью манифестов Kubernetes, которые вы храните в репозитории Git.
Дополнительные сведения об использовании см. в следующих ресурсах:
Подсказка
Из-за того, как Helm обрабатывает файлы индексов, обработка диаграмм Helm является дорогой операцией и может иметь высокий объем памяти. В результате согласование большого количества диаграмм Helm одновременно может привести к резким увеличениям использования памяти и OOMKilled ошибкам. По умолчанию контроллер устанавливает ограничение памяти на 1Gi и запросы памяти на 64Mi. Чтобы увеличить это ограничение и запросы из-за большого количества больших сверок диаграмм Helm, выполните следующую команду после установки расширения microsoft.flux:
az k8s-extension update -g <resource-group> -c <cluster-name> -n flux -t connectedClusters --config source-controller.resources.limits.memory=2Gi source-controller.resources.requests.memory=300Mi
Использование источника GitRepository для диаграмм Helm
Если вы храните Helm-диаграммы в источнике, настраиваемом вами как часть ресурса fluxConfigurations, можно указать, что настроенный источник должен использоваться в качестве источника Helm-диаграмм, добавив clusterconfig.azure.com/use-managed-source: "true" в HelmRelease.yaml файл, как показано в следующем примере:
---
apiVersion: helm.toolkit.fluxcd.io/v2
kind: HelmRelease
metadata:
name: somename
namespace: somenamespace
annotations:
clusterconfig.azure.com/use-managed-source: "true"
spec:
...
При использовании этой аннотации развернутый HelmRelease обновлен ссылкой на настроенный источник. В настоящее время поддерживается только GitRepository источник.
Обнаружение смещения Helm
Обнаружение дрейфа для выпусков Helm не включено по умолчанию. Начиная с microsoft.flux версии 1.7.5, можно включить обнаружение смещения Helm, выполнив следующую команду:
az k8s-extension update --resource-group <resource-group> --cluster-name <cluster-name> --name flux --cluster-type <cluster-type> --config helm-controller.detectDrift=true
Строгая замена переменных после сборки.
Строгая подстановка переменных после сборки доступна начиная с microsoft.flux версии 1.13.1.
Чтобы создать расширение Flux с поддержкой строгой политики подстановки, выполните следующую команду:
az k8s-extension create --resource-group <resource-group> --cluster-name <cluster-name> --cluster-type <cluster-type> --name flux --extension-type microsoft.flux --config kustomize-controller.strict-substitution-mode=true
Чтобы обновить существующее расширение Flux для активации строгой политики замены, выполните следующую команду:
az k8s-extension update --resource-group <resource-group> --cluster-name <cluster-name> --cluster-type <cluster-type> --name flux --config kustomize-controller.strict-substitution-mode=true
Вертикальное масштабирование
Поддержка вертикального масштабирования доступна начиная с microsoft.flux версии 1.12.0. В настоящее время поддерживаются только определенные параметры, описанные в документации по вертикальному масштабированию Flux. Вы можете вручную применить к кластеру другие параметры.
Чтобы увеличить ограничения ресурсов на контроллерах за пределами текущих ограничений, выполните следующую команду. Измените конкретный тип ресурса и значение по мере необходимости:
az k8s-extension update --resource-group <resource-group> --cluster-name <cluster-name> --cluster-type <cluster-type> --name flux --config kustomize-controller.resources.limits.memory=2Gi kustomize-controller.resources.limits.cpu=2000m
Чтобы увеличить количество выверок, которые могут выполняться параллельно, выполните следующую команду:
az k8s-extension update --resource-group <resource-group> --cluster-name <cluster-name> --cluster-type <cluster-type> --name flux --config kustomize-controller.concurrent=6 kustomize-controller.requeue-dependency=50s
Чтобы включить сборку в памяти, выполните следующую команду:
az k8s-extension update --resource-group <resource-group> --cluster-name <cluster-name> --cluster-type <cluster-type> --name flux --config kustomize-controller.enable-in-memory-build=true
Часы Helm OOM
Начиная с microsoft.flux версии 1.7.5, вы можете включить часы Helm OOM. Дополнительные сведения см. в разделе «Включение Helm для обнаружения OOM».
При включении этой функции просмотрите потенциальные стратегии исправления и примените их по мере необходимости.
Чтобы включить часы OOM, выполните следующую команду:
az k8s-extension update --resource-group <resource-group> --cluster-name <cluster-name> --name flux --cluster-type <cluster-type> --config helm-controller.outOfMemoryWatch.enabled=true helm-controller.outOfMemoryWatch.memoryThreshold=70 helm-controller.outOfMemoryWatch.interval=700ms
Если значения memoryThreshold не заданы и outOfMemoryWatchпорог памяти по умолчанию равен 95%, а интервал для проверки использования памяти составляет 500 мс.
Настраиваемые параметры уровня журнала
По умолчанию log-level для контроллеров Flux задано значение info. Начиная с microsoft.flux версии 1.8.3, эти параметры по умолчанию можно изменить с помощью k8s-extension команды следующим образом:
--config helm-controller.log-level=<info/error/debug>
--config source-controller.log-level=<info/error/debug>
--config kustomize-controller.log-level=<info/error/debug>
--config notification-controller.log-level=<info/error/debug>
--config image-automation-controller.log-level=<info/error/debug>
--config image-reflector-controller.log-level=<info/error/debug>
Допустимые значения: debug, info или error. Например, чтобы изменить log-level для source-controller и kustomize-controller, используйте следующую команду:
az k8s-extension update --resource-group <resource-group> --cluster-name <cluster-name> --cluster-type <cluster-type> --name flux --config source-controller.log-level=error kustomize-controller.log-level=error
Начиная с microsoft.flux версии 1.9.1, fluxconfig-agent и fluxconfig-controller поддерживают уровни журналов info и error (но не debug). Чтобы изменить эти параметры, используйте k8s-extension команду:
--config fluxconfig-agent.log-level=<info/error>
--config fluxconfig-controller.log-level=<info/error>
Например, следующая команда изменяется log-level на error:
az k8s-extension update --resource-group <resource-group> --cluster-name <cluster-name> --cluster-type <cluster-type> --name flux --config fluxconfig-agent.log-level=error fluxconfig-controller.log-level=error
Настройка аннотаций на подах расширений Flux
При настройке решения, отличного от брандмауэра Azure, для кластера AKS требуются правила сети и FQDN/приложения. Начиная с microsoft.flux версии 1.11.1, pod'ы контроллера Flux могут задавать аннотацию kubernetes.azure.com/set-kube-service-host-fqdn в своих спецификациях pod. Эта аннотация позволяет направлять трафик к доменному имени сервера API, даже если присутствует сетевой экран уровня 7, что упрощает процесс развертывания во время установки расширения. Чтобы настроить эту заметку при использовании расширения Flux, используйте следующие команды.
# Create flux extension with annotation
az k8s-extension create --resource-group <resource-group> --cluster-name <cluster-name> --cluster-type <cluster-type> --name flux --extension-type microsoft.flux --config setKubeServiceHostFqdn=true
# Update flux extension with annotation
az k8s-extension update --resource-group <resource-group> --cluster-name <cluster-name> --cluster-type <cluster-type> --name flux --config setKubeServiceHostFqdn=true
Идентификация рабочей нагрузки в кластерах Kubernetes с поддержкой Arc и кластерах AKS
Конфигурации Flux можно создавать в кластерах с включенной идентификацией рабочей нагрузки. Начиная с microsoft.flux версии 1.8.0 решение поддерживает конфигурации Flux в кластерах AKS с включенным удостоверением рабочей нагрузки. Начиная с microsoft.flux версии 1.15.1, решение поддерживает конфигурации Flux в кластерах с поддержкой Azure Arc и рабочей идентификации.
Чтобы создать конфигурации Flux в кластерах с включенной идентификацией рабочей нагрузки, измените расширение, как показано в следующих шагах:
Получите URL-адрес издателя OIDC для кластера AKS или кластера Kubernetes с поддержкой Arc.
Создайте управляемое удостоверение и запишите его идентификатор клиента и идентификатор клиента-арендатора.
Создайте расширение flux в кластере с помощью следующей команды:
az k8s-extension create --resource-group <resource_group_name> --cluster-name <aks_cluster_name> --cluster-type managedClusters --name flux --extension-type microsoft.flux --config workloadIdentity.enable=true workloadIdentity.azureClientId=<user_assigned_client_id> workloadIdentity.azureTenantId=<tenant_id>Создайте учетные данные федеративного удостоверения для кластера AKS или кластера Kubernetes с поддержкой Arc. Например:
# For source-controller az identity federated-credential create --name ${FEDERATED_IDENTITY_CREDENTIAL_NAME} --identity-name "${USER_ASSIGNED_IDENTITY_NAME}" --resource-group "${RESOURCE_GROUP}" --issuer "${OIDC_ISSUER}" --subject system:serviceaccount:"flux-system":"source-controller" --audience api://AzureADTokenExchange # For image-reflector controller if you plan to enable it during extension creation, it is not deployed by default az identity federated-credential create --name ${FEDERATED_IDENTITY_CREDENTIAL_NAME} --identity-name "${USER_ASSIGNED_IDENTITY_NAME}" --resource-group "${RESOURCE_GROUP}" --issuer "${OIDC_ISSUER}" --subject system:serviceaccount:"flux-system":"image-reflector-controller" --audience api://AzureADTokenExchange # For image-automation controller if you plan to enable it during extension creation, it is not deployed by default az identity federated-credential create --name ${FEDERATED_IDENTITY_CREDENTIAL_NAME} --identity-name "${USER_ASSIGNED_IDENTITY_NAME}" --resource-group "${RESOURCE_GROUP}" --issuer "${OIDC_ISSUER}" --subject system:serviceaccount:"flux-system":"image-automation-controller" --audience api://AzureADTokenExchange # For kustomize-controller az identity federated-credential create --name ${FEDERATED_IDENTITY_CREDENTIAL_NAME} --identity-name "${USER_ASSIGNED_IDENTITY_NAME}" --resource-group "${RESOURCE_GROUP}" --issuer "${OIDC_ISSUER}" --subject system:serviceaccount:"flux-system":"kustomize-controller" --audience api://AzureADTokenExchangeУбедитесь, что настраиваемый ресурс, который должен использовать удостоверение рабочей нагрузки, устанавливает значение
.spec.providerвazureв манифесте. Например:apiVersion: source.toolkit.fluxcd.io/v1 kind: HelmRepository metadata: name: acrrepo spec: interval: 10m0s type: <helm_repository_type> url: <helm_repository_link> provider: azureНе забудьте предоставить соответствующие разрешения для удостоверения рабочей нагрузки для ресурса, который требуется извлечь из исходного контроллера или контроллера отражателя изображений. Например, если используется реестр контейнеров Azure, убедитесь, что
Container Registry Repository Readerназначены (для реестров с поддержкой ABAC) илиAcrPull(для реестров, отличных от ABAC).
Использование идентификации рабочей нагрузки в Azure DevOps
Чтобы использовать удостоверение рабочей нагрузки с Azure DevOps, выполните следующие предварительные требования:
- Убедитесь, что ваша организация Azure DevOps подключена к Microsoft Entra.
- Убедитесь, что удостоверение рабочей нагрузки правильно настроено в кластере, для этого используйте инструкции для кластеров AKS или кластеров Kubernetes с поддержкой Arc.
- Создайте управляемое удостоверение и федеративные учетные данные и включите поддержку удостоверений рабочих нагрузок в модулях контроллера flux, как описано ранее в этом разделе.
- Добавьте управляемое удостоверение в организацию Azure DevOps в качестве пользователя, чтобы гарантировать, что у него есть необходимые разрешения для доступа к репозиторию Azure DevOps. Для подробных шагов см. использование субъектов-служб и управляемых удостоверений в Azure DevOps.
Затем задайте для поставщика конфигурации gitRepository flux значение Azure, чтобы включить проверку подлинности без учетных данных. Этот параметр можно настроить с помощью Bicep, шаблонов ARM или Azure CLI. Чтобы задать поставщика с помощью Azure CLI, выполните следующую команду:
az k8s-configuration flux update --cluster-name <cluster-name> --resource-group <resource-group> --cluster-type <cluster-type> --name flux --provider "azure"
Отмена использования SSH-RSA в Azure DevOps
Azure DevOps объявила об отмене SSH-RSA в качестве поддерживаемого метода шифрования для подключения к репозиториям Azure с помощью SSH. Если вы используете ключи SSH для подключения к репозиториям Azure в конфигурациях Flux, перейдите к более безопасным ключам RSA-SHA2-256 или RSA-SHA2-512.
При согласовании конфигураций Flux может появиться сообщение об ошибке, указывающее, что ssh-rsa не рекомендуется или не поддерживается. В этом случае обновите алгоритм ключа узла, используемый для установления подключений SSH к репозиториям Azure DevOps из Flux source-controller и image-automation-controller (если включен) с помощью az k8s-extension update команды. Например:
az k8s-extension update --cluster-name <cluster-name> --resource-group <resource-group> --cluster-type <cluster-type> --name flux --config source-controller.ssh-host-key-args="--ssh-hostkey-algos=rsa-sha2-512,rsa-sha2-256"
az k8s-extension update --cluster-name <cluster-name> --resource-group <resource-group> --cluster-type <cluster-type> --name flux --config image-automation-controller.ssh-host-key-args="--ssh-hostkey-algos=rsa-sha2-512,rsa-sha2-256"
Дополнительные сведения о прекращении SSH-RSA Azure DevOps см. в Окончание SSH-RSA поддержки Azure Repos.
Удаление конфигурации и расширения Flux
Используйте следующие команды, чтобы удалить конфигурации Flux и, если требуется, само расширение Flux.
Удалите конфигурации Flux
Следующая команда удаляет fluxConfigurations ресурс в Azure и объекты конфигурации Flux в кластере. Так как конфигурация Flux была изначально создана с помощью prune=true параметра kustomization, все объекты, созданные в кластере на основе манифестов в репозитории Git, удаляются вместе с конфигурацией Flux. Однако эта команда не удаляет само расширение Flux.
az k8s-configuration flux delete -g flux-demo-rg -c flux-demo-arc -n cluster-config -t connectedClusters --yes
Удаление расширения кластера Flux
Когда вы удаляете расширение Flux, команда удаляет как ресурс расширения в Azure, так и объекты расширения Flux в кластере.
Внимание
Перед удалением расширения Flux обязательно удалите все конфигурации Flux в кластере. Удаление расширения без предварительного удаления конфигураций Flux может оставить кластер в нестабильном состоянии.
Если расширение Flux было создано автоматически при создании конфигурации Flux, имя расширения — flux.
az k8s-extension delete -g flux-demo-rg -c flux-demo-arc -n flux -t connectedClusters --yes
Подсказка
Эти команды используют -t connectedClusters, что является подходящим для кластера Kubernetes с поддержкой Azure Arc. Вместо этого используйте -t managedClusters кластер AKS.
Следующие шаги
- Дополнительные сведения о конфигурациях и GitOps.
- Узнайте, как использовать политику Azure для принудительного применения GitOps в масштабе.
- Сведения о состоянии и активности GitOps (Flux версии 2).