Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В этом руководстве описывается, как использовать 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 v2, вам потребуется:
Кластеры 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/extensions
Microsoft.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-mt
Git. - Ветвь репозитория 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-agent
fluxconfig-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 charts с помощью манифестов 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 хранятся в источнике, который настроен в качестве ресурса GitRepository
, вы можете указать, что этот источник нужно использовать для диаграмм Helm, добавив fluxConfigurations
в ваш файл HelmRelease.yaml, как показано в следующем примере:
---
apiVersion: helm.toolkit.fluxcd.io/v2beta1
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, сетевые правила и правила для FQDN/приложений требуются для кластера AKS. Начиная с microsoft.flux
версии 1.11.1, контроллер Flux теперь может задавать аннотацию kubernetes.azure.com/set-kube-service-host-fqdn
в спецификациях своих подов. Эта аннотация позволяет направлять трафик к доменному имени сервера 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 можно создавать в кластерах с включенной идентификацией рабочей нагрузки. Конфигурации Flux в кластерах AKS с включенным удостоверением рабочей нагрузки поддерживаются начиная с microsoft.flux
версии 1.8.0 и в кластерах с поддержкой Azure Arc с включенным удостоверением рабочей нагрузки , начиная с microsoft.flux
версии 1.15.1.
Чтобы создать конфигурации 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/v1beta2 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).