Руководство по развертыванию приложений с помощью GitOps с Flux версии 2
В этом руководстве описывается, как использовать 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.flux
выпустило основную версию 1.0.0. Это включает функцию многотенантности. Если у вас есть конфигурации GitOps Flux версии 2, которые используют предыдущую версию microsoft.flux
расширения, можно обновить до последней версии вручную с помощью Azure CLI: az k8s-extension create -g <RESOURCE_GROUP> -c <CLUSTER_NAME> -n flux --extension-type microsoft.flux -t <CLUSTER_TYPE>
(используйте -t connectedClusters
для кластеров Arc и -t managedClusters
для кластеров AKS).
Необходимые компоненты
Чтобы развернуть приложения с помощью 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. Для уже созданных кластеров на основе имени субъекта-службы, которые необходимо преобразовать в 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
пакеты расширений CLI:k8s-extension
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
. - Имя кластера
flux-demo-arc
Azure 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
области с этим руководством см. в необходимых изменениях. - Два kustomizations указываются с именами
infra
иapps
. Каждый из них связан с путем в репозитории. - Kustomization
apps
зависит отinfra
kustomization. (Kustomizationinfra
должно завершиться доapps
запуска kustomization.) - Задайте
prune=true
для обоих kustomizations. Этот параметр гарантирует, что объекты, развернутые в кластере Flux, удаляются, если они удалены из репозитория, или если конфигурация Flux или kustomizations удаляются.
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 требуется ограничение контекста безопасности, отличное отroot, для правильной подготовки модулей pod в кластере. Эти ограничения необходимо добавить в кластер перед развертыванием 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
Контроллер Flux Helm устанавливается в составе microsoft.flux
расширения кластера. Он позволяет декларативно управлять выпусками диаграмм Helm с манифестами Kubernetes, которые вы поддерживаете в репозитории Git.
Дополнительные сведения об использовании см. в следующих ресурсах:
- Flux для пользователей Helm
- Управление выпусками Helm
- Миграция на Flux версии 2 Helm из Flux v1 Helm
- Контроллер Flux Helm
Совет
Из-за того, как 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
рамках fluxConfigurations
ресурса, можно указать, что настроенный источник должен использоваться в качестве источника диаграмм Helm, добавив clusterconfig.azure.com/use-managed-source: "true"
в файл 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
уровней поддержки info
и error
fluxconfig-controller
журналов (но не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
Отмена использования 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".
Настройка заметки в модулях pod расширений Flux
При настройке решения, отличного от Брандмауэр Azure, правила сети и полного доменного имени или приложения требуются для кластера AKS. Начиная с 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
Удостоверение рабочей нагрузки в кластерах AKS
Начиная с microsoft.flux
версии 1.8.0, можно создать конфигурации Flux в кластерах AKS с включенным удостоверением рабочей нагрузки. Для этого измените расширение flux, как показано на следующих шагах.
Получите URL-адрес издателя OIDC для кластера.
Создайте управляемое удостоверение и запишите его идентификатор клиента.
Создайте расширение 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>
Установите учетные данные федеративного удостоверения. Например:
# For source-controller az identity federated-credential create --name ${FEDERATED_IDENTITY_CREDENTIAL_NAME} --identity-name "${USER_ASSIGNED_IDENTITY_NAME}" --resource-group "${RESOURCE_GROUP}" --issuer "${AKS_OIDC_ISSUER}" --subject system:serviceaccount:"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 "${AKS_OIDC_ISSUER}" --subject system:serviceaccount:"flux-system":"image-reflector-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 "${AKS_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
AcrPull
требуются разрешения.
Удаление конфигурации и расширения 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, так microsoft.flux
и объекты расширения 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).