Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В этом руководстве описывается использование GitOps с Argo CD в кластерах Kubernetes с поддержкой Azure Arc или кластерах Службы Azure Kubernetes (AKS). GitOps с Argo CD включен как расширение кластера , которое позволяет использовать репозиторий Git в качестве источника истины для конфигурации кластера и развертывания приложений. Argo CD также поддерживает другие распространенные источники файлов, такие как Helm и Open Container Initiative (OCI).
Замечание
Начиная с версии 1.0.0-preview расширение Argo CD использует диаграмму Helm сообщества. Это критическое изменение по мере изменения ключей конфигурации. Если вы установили предыдущую версию (0.0.x) расширения, удалите расширение и переустановите последнюю версию с обновленными ключами конфигурации.
Это важно
GitOps с Argo CD в настоящее время находится в предварительной версии. Смотрите Дополнительные условия использования для предварительных версий Microsoft Azure, которые содержат юридические положения, применимые к функциям Azure, находящимся в бета-версии, предварительной версии или еще не представленным для всеобщего пользования.
Предпосылки
Для развертывания приложений с помощью GitOps требуется кластер Kubernetes с поддержкой Azure Arc или кластер AKS.
Кластеры Kubernetes с поддержкой Azure Arc
Кластер Kubernetes, подключенный через Azure Arc, который активен и работает.
Узнайте, как подключить кластер Kubernetes к Azure Arc. Если необходимо подключиться через исходящий прокси-сервер, убедитесь, что агенты Arc устанавливаются с параметрами прокси-сервера.
Разрешения на чтение и запись для типа ресурса
Microsoft.Kubernetes/connectedClusters.
Кластеры Службы Azure Kubernetes
Кластер AKS на основе MSI, который введён в эксплуатацию.
Это важно
Кластер AKS должен быть создан с использованием управляемого удостоверения службы (MSI), а не служебного принципала (SPN), чтобы это расширение могло работать. Для новых кластеров 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
Azure CLI 2.15 или более поздней версии. Установите Azure CLI или используйте следующие команды для обновления до последней версии:
az version az upgradeКлиент командной строки Kubernetes, kubectl.
kubectlуже установлен, если вы используете Azure Cloud Shell.Установите
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
Подсказка
Хотя источник в этом руководстве является репозиторием Git, Argo CD поддерживает другие распространенные источники файлов, такие как Helm и Open Container Initiative (OCI).
Поддержка версий и регионов
В настоящее время GitOps поддерживается в общедоступных регионах.
Требования к сети
Для работы агентов 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 |
Требуется для загрузки образов контейнеров для контроллеров. |
Включение расширений 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.10.7
False whl k8s-configuration C:\Users\somename\.azure\cliextensions\k8s-configuration False 2.2.0
False whl k8s-extension C:\Users\somename\.azure\cliextensions\k8s-extension False 1.6.4
Создание расширения GitOps (Argo CD) (простая установка)
Установка GitOps Argo CD поддерживает многотенантность в режиме высокой доступности и поддерживает идентификацию рабочих нагрузок.
Это важно
Режим HA является конфигурацией по умолчанию и требует наличия четырех узлов в кластере для установки. Команда ниже добавляет --config "redis-ha.enabled=false" для установки расширения на одном узле.
Эта команда создает простую конфигурацию, устанавливая компоненты Argo CD в новое argocd пространство имен с доступом на уровне кластера. Доступ на уровне кластера позволяет обнаруживать определения приложений Argo CD в любом пространстве имен, указанном в конфигурации configmap Argo CD в кластере. Например: namespace1,namespace2
az k8s-extension create --resource-group <resource-group> \
--cluster-name <cluster-name> \
--cluster-type managedClusters \
--name argocd \
--extension-type Microsoft.ArgoCD \
--config "redis-ha.enabled=false" \
--config "configs.params.application\.namespaces=namespace1,namespace2"
Эта команда установки создает новое пространство имен <namespace> и устанавливает компоненты Argo CD в <namespace>. Определения приложений Argo CD в этой конфигурации работают только в <namespace> пространстве имен.
Замечание
Дополнительные параметры конфигурации, такие как ограничения ресурсов, см. в разделе values.yaml. Используйте эти конфигурации в команде Azure CLI при настройке расширения.
Создание расширения GitOps (Argo CD) с идентификацией рабочей нагрузки
Альтернативный метод установки, рекомендуемый для использования в рабочей среде, — идентификация рабочей нагрузки. Этот метод использует идентификаторы Microsoft Entra ID для аутентификации при доступе к ресурсам Azure, поэтому вам не нужно управлять секретами и учетными данными в репозитории Git. В этой установке используется аутентификация с использованием идентификатора рабочей нагрузки, доступная в OSS-версии Argo CD 3.0.0-rc2 и более поздних версиях.
Это важно
Режим HA является конфигурацией по умолчанию и требует наличия четырех узлов в кластере для установки. Используется 'redis-ha.enabled': false для установки расширения на одном узле.
Чтобы создать расширение с идентификацией рабочей нагрузки, сначала замените следующие переменные вашими значениями в этом шаблоне Bicep.
var clusterName = '<aks-or-arc-cluster-name>'
var workloadIdentityClientId = 'replace-me##-##-###-###'
var ssoApplicationClientId = 'replace-me##-##-###-###'
var url = 'https://<public-ip-for-argocd-ui>/'
var oidcConfig = '''
name: Azure
issuer: https://login.microsoftonline.com/<your-tenant-id>/v2.0
clientID: <same-value-as-ssoApplicationClientId>
azure:
useWorkloadIdentity: true
requestedIDTokenClaims:
groups:
essential: true
requestedScopes:
- openid
- profile
- email
'''
var defaultPolicy = 'role:readonly'
var policy = '''
p, role:org-admin, applications, *, */*, allow
p, role:org-admin, clusters, get, *, allow
p, role:org-admin, repositories, get, *, allow
p, role:org-admin, repositories, create, *, allow
p, role:org-admin, repositories, update, *, allow
p, role:org-admin, repositories, delete, *, allow
g, replace-me##-argocd-ui-entra-group-admin-id, role:org-admin
'''
resource cluster 'Microsoft.ContainerService/managedClusters@2024-10-01' existing = {
name: clusterName
}
resource extension 'Microsoft.KubernetesConfiguration/extensions@2023-05-01' = {
name: 'argocd'
scope: cluster
properties: {
extensionType: 'Microsoft.ArgoCD'
configurationSettings: {
'redis-ha.enabled': 'true'
'azure.workloadIdentity.enabled': 'true'
'azure.workloadIdentity.clientId': workloadIdentityClientId
'azure.workloadIdentity.entraSSOClientId': ssoApplicationClientId
'configs.cm.oidc\\.config': oidcConfig
'configs.cm.url': url
'configs.rbac.policy\\.default': defaultPolicy
'configs.rbac.policy\\.csv': policy
'configs.params.application\\.namespaces': 'default, argocd'
}
}
}
Создайте шаблон Bicep с помощью следующей команды:
az deployment group create --resource-group <resource-group> --template-file <bicep-file>
Замечание
Дополнительные параметры конфигурации, такие как ограничения ресурсов, см. в разделе values.yaml. Используйте эти конфигурации в шаблоне Bicep при настройке расширения.
Параметры
clusterName — это имя кластера Kubernetes с поддержкой AKS или Arc.
workloadIdentityClientId — это идентификатор клиента управляемого удостоверения, назначаемого пользователем, используемого компонентами Argo CD для удостоверения рабочей нагрузки.
ssoApplicationClientId — это идентификатор приложения (клиента) для регистрации приложения Microsoft Entra, используемого для аутентификации единого входа OIDC в пользовательском интерфейсе Argo CD. Дополнительные сведения об общей настройке и конфигурации ssoApplicationClientIdсм. в разделе Аутентификация регистрации приложений Microsoft Entra ID с помощью OIDC.
url — это общедоступный IP-адрес пользовательского интерфейса Argo CD. В кластере нет общедоступного IP-адреса или доменного имени, если только у кластера уже есть предоставленный клиентом ингресс контроллер. Если это так, вам нужно добавить правило Ingress в веб-интерфейсе Argo CD после развертывания. Для возможности входящего трафика требуется надстройка маршрутизации приложений и поддерживается только для кластеров AKS.
oidcConfig — замените <your-tenant-id> идентификатором клиента идентификатора Microsoft Entra. Замените <same-value-as-ssoApplicationClientId-above> значением того же значения, что ssoApplicationClientId.
policy переменная — это argocd-rbac-cm configmap параметры Argo CD.
g, replace-me##-argocd-ui-entra-group-admin-id — это идентификатор группы Microsoft Entra, предоставляющий администратору доступ к пользовательскому интерфейсу Argo CD. Идентификатор группы Microsoft Entra можно найти на портале Azure в разделе Microsoft Entra ID > Группы >имя_вашей_группы> Свойства. Вместо идентификатора группы Microsoft Entra можно использовать идентификатор пользователя Microsoft Entra. Идентификатор пользователя Microsoft Entra можно найти на портале Azure в разделе Microsoft Entra ID > Users >your-user-name> Properties.
Создание учетных данных идентификации рабочих нагрузок
Чтобы настроить новые учетные данные идентификации рабочей нагрузки, выполните следующие действия.
Получите URL-адрес издателя OIDC для кластера AKS или кластера Kubernetes с поддержкой Arc.
Создайте управляемое удостоверение и запишите его идентификатор клиента и идентификатор арендатора.
Создайте учетные данные федеративной идентичности для кластера 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Не забудьте предоставить надлежащие разрешения для идентичности рабочей нагрузки для ресурса, который требуется для извлечения с помощью argocd или контроллера image-reflector, или argocd-repo-server. Например, если вы используете Реестр контейнеров Azure, убедитесь, что применяется либо
Container Registry Repository Reader(для реестров с поддержкой ABAC), либоAcrPull(для реестров без поддержки ABAC).
Подключитесь к частным реестрам ACR или репозиториям ACR с помощью идентификации рабочей нагрузки
Чтобы использовать частный реестр ACR или репозитории ACR, следуйте инструкциям в официальной документации по Argo CD для подключения к частным реестрам ACR. Назначение меток pod, Создание федеративных учетных данных и Добавление аннотации к учетной записи службы были завершены расширением с развертыванием Bicep и могут быть пропущены.
Миграция с Argo CD OSS в управляемое расширение Argo CD
Выполните следующие действия, чтобы перейти от самостоятельной установки Argo CD в расширение Argo CD, управляемого Azure.
Путь миграции
Используйте следующую последовательность, чтобы избежать конфликтов контроллера и снизить риск миграции.
Просмотрите текущую конфигурацию и список ресурсов Argo CD:
- Приложения
- Наборы приложений
- AppProjects
- Учетные данные и шаблоны репозитория (repocreds)
- Секреты кластера
Масштабируйте самостоятельно управляемые контроллеры Argo CD до нуля реплик, чтобы предотвратить одновременную работу двух контроллеров.
Установите расширение Argo CD в кластере с помощью параметров, соответствующих существующему развертыванию.
Функция Приложения в любом пространстве имён позволяет Argo CD управлять ресурсами, расположенными за пределами его основного пространства имён. Если кластер уже использует этот параметр, вам не нужно перемещать ресурсы в новое пространство имен. Вам нужно лишь настроить новое расширение для отслеживания пространств имён существующего приложения.
Случай A: Если вы уже используете функцию «Приложения в любом пространстве имен»:
- Оставьте все ресурсы Application, ApplicationSet и AppProject в их текущих пространствах имен.
- Настройте новое управляемое расширение для отслеживания этих внешних пространств имен с помощью параметров расширения.
Случай Б. При перемещении ресурсов в новое пространство имен расширения:
- При необходимости перенесите приложения, applicationSets и AppProjects в пространство имен расширения.
Перенесите учетные данные репозитория, секреты кластера и repocreds в пространство имен расширения.
Убедитесь, что приложения синхронизируются и достигают ожидаемого работоспособного состояния.
Удалите старое самостоятельно управляемое развертывание Argo CD после завершения проверки.
Управляемое расширение использует те же API Argo CD и пользовательские определения ресурсов (CRD), чтобы можно было повторно использовать большинство существующих манифестов с минимальными изменениями.
Текущие ограничения
- Прямые обновления для Argo CD ConfigMaps не поддерживаются.
- Используйте API конфигурации расширения и настройки, чтобы применить изменения конфигурации Argo CD.
Настройка мониторинга с помощью Azure Managed Prometheus и Управление Azure для Grafana
Вы можете опубликовать метрики Argo CD для Azure Managed Prometheus и визуализировать их в Управление Azure для Grafana.
Включите Azure Managed Prometheus для кластера. См. раздел "Включить мониторинг" для кластеров Azure Kubernetes Service (AKS).
Обновите конфигурацию расширения, чтобы включить сбор метрик и ServiceMonitor.
var clusterName = '<aks-or-arc-cluster-name>' resource cluster 'Microsoft.ContainerService/managedClusters@2024-10-01' existing = { name: clusterName } resource extension 'Microsoft.KubernetesConfiguration/extensions@2023-05-01' = { name: 'argocd' scope: cluster properties: { extensionType: 'Microsoft.ArgoCD' configurationSettings: { // Keep your existing settings and add these metrics flags. 'controller.metrics.enabled': 'true' 'controller.metrics.serviceMonitor.enabled': 'true' 'server.metrics.enabled': 'true' 'server.metrics.serviceMonitor.enabled': 'true' 'repoServer.metrics.enabled': 'true' 'repoServer.metrics.serviceMonitor.enabled': 'true' 'applicationSet.metrics.enabled': 'true' 'applicationSet.metrics.serviceMonitor.enabled': 'true' 'apiVersionOverrides.monitoring': 'azmonitoring.coreos.com/v1' } } }Импортируйте панель мониторинга Grafana 14584 в экземпляр Управление Azure для Grafana.
Если панели отображают Нет данных, обновите запросы панелей с учётом именования заданий в Azure Managed Prometheus.
В панелях телеметрии контроллера (использование памяти, загрузка ЦП, горутины) измените:
- От
job="argocd-metrics" - К
job=~"argocd.*-metrics"
- От
На панелях repo-server (Используемая память, Goroutines) измените:
- От
job="argocd-repo-server" - Кому
job="argocd-repo-server-metrics"
- От
Сохраните панель мониторинга и проверьте прием метрик.
Включение Argo CD на портале Azure
Вы можете включить argo CD на портале Azure для просмотра состояния приложения и состояния синхронизации, а также для доступа к пользовательскому интерфейсу Argo CD. Чтобы включить Argo CD на портале Azure, выполните следующие действия.
Перейдите в кластер на портале Azure.
В меню службы в разделе "Параметры" выберите GitOps.
Выберите "Включить Argo CD (предварительная версия)".
В разделе "Основные сведения" :
- Задайте пространство имен, в котором запускается Argo CD. По умолчанию пространство имен — это
argocd. - При необходимости включите высокий уровень доступности Redis (HA). Для этого параметра требуется не менее 4 узлов в кластере.
- При необходимости можно добавить дополнительные пространства имён, которые следует отслеживать.
- Только для кластеров AKS включите единый вход (SSO), чтобы пользователи могли войти с помощью Microsoft Entra ID, указав приложение и одну или несколько групп, чтобы разрешить доступ к пользовательскому интерфейсу Argo CD.
- При необходимости включите идентификацию рабочей нагрузки, чтобы Argo CD мог безопасно получать доступ к службам Azure без хранения секретов. Для этого установите флажок Enable Workload Identity и укажите управляемый идентификатор и реестр Реестр контейнеров Azure, из которого нужно получать манифесты приложений или артефакты контейнеров.
- Задайте пространство имен, в котором запускается Argo CD. По умолчанию пространство имен — это
Выберите Далее для продолжения.
Для кластеров AKS, которые включили надстройку маршрутизации приложений, вкладка "Входящий трафик" позволяет создать ресурс входящего трафика для маршрутизации трафика в службу. При необходимости выберите Enable Ingress и введите имя Ingress, сведения о сертификате и доменное имя. Выберите Далее для продолжения.
В разделе "Проверка и развертывание " просмотрите параметры, а затем выберите "Развернуть ", чтобы включить argo CD в кластере.
Доступ к пользовательскому интерфейсу Argo CD
Если для кластера AKS нет существующего контроллера входящего трафика, пользовательский интерфейс Argo CD можно предоставить непосредственно с помощью службы LoadBalancer. Следующая команда предоставляет пользовательский интерфейс Argo CD через порт 80 и 443.
kubectl -n argocd expose service argocd-server --type LoadBalancer --name argocd-server-lb --port 80 --target-port 8080
Чтобы получить доступ к пользовательскому интерфейсу Argo CD на портале Azure, перейдите в кластер. В меню службы в разделе "Параметры" выберите GitOps. Затем выберите ссылку, показанную для пользовательского интерфейса Argo CD.
Развертывание приложения Argo CD
После установки расширения Argo CD можно развернуть приложение с помощью пользовательского интерфейса Argo CD или CLI. В следующем примере используется kubectl apply для развертывания хранилища AKS внутри приложения Argo CD в проекте Argo CD по умолчанию в argocd пространстве имен.
kubectl apply -f - <<EOF
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
name: aks-store-demo
namespace: argocd
spec:
project: default
source:
repoURL: https://github.com/Azure-Samples/aks-store-demo.git
targetRevision: HEAD
path: kustomize/overlays/dev
syncPolicy:
automated: {}
destination:
namespace: argocd
server: https://kubernetes.default.svc
EOF
Демонстрационное приложение магазина AKS устанавливается в пространство имен argocd. Чтобы просмотреть веб-страницу приложения, следуйте этим инструкциям. Обязательно перейдите по IP-адресу, используя http, а не https.
Обновление конфигурации расширения
Конфигурации Argo CD можно обновить после установки и других параметров конфигурации расширения с помощью следующей команды:
az k8s-extension update --resource-group <resource-group> \
--cluster-name <cluster-name> \
--cluster-type <cluster-type> \
--name argocd \
--config "configs.cm.url='https://<public-ip-for-argocd-ui>/auth/callback'"
Обновите конфигурацию Argo CD через расширение, чтобы параметры не были перезаписаны. Применение шаблона Bicep — это альтернативный метод использования Azure CLI для обновления конфигурации.
Удаление расширения
Чтобы удалить расширение, используйте следующие команды.
az k8s-extension delete -g <resource-group> -c <cluster-name> -n argocd -t managedClusters --yes
Дальнейшие шаги
- Проблемы с файлами и запросы функций в репозитории Azure/AKS. Не забудьте включить слово ArgoCD в описание или заголовок.
- Изучите пример кода проектирования AKS-Platform, который развертывает OSS Argo CD с помощью Backstage и API-поставщика кластера для Azure (CAPZ) или Crossplane.