Развертывание диаграмм Helm с помощью GitOps в кластере Kubernetes с поддержкой Azure Arc

Важно!

Эта статья предназначена для GitOps с Flux версии 1. GitOps с Flux версии 2 теперь доступен для кластеров Kubernetes с поддержкой Azure Arc и Служба Azure Kubernetes (AKS); Перейдите к руководству по GitOps с Flux версии 2. Мы рекомендуем перейти на Flux версии 2 как можно скорее.

Поддержка ресурсов конфигурации кластера flux версии 1, созданных до 1 января 2024 г., завершится 24 мая 2025 г. Начиная с 1 января 2024 г. вы не сможете создавать новые ресурсы конфигурации кластера Flux версии 1. Средство упаковки с открытым кодом Helm помогает устанавливать приложения Kubernetes и управлять их жизненным циклом. Как и диспетчеры пакетов Linux, например APT и Yum, Helm используется для управления диаграммами Kubernetes, которые представляют собой пакеты предварительно настроенных ресурсов Kubernetes.

В этой статье показано, как настроить и использовать Helm с Kubernetes с поддержкой Azure Arc.

Необходимые компоненты

Общие сведения об использовании GitOps и Helm с Kubernetes с поддержкой Azure Arc

Оператор Helm предоставляет расширение для Flux, которое автоматизирует выпуски Helm Chart. Выпуск диаграмм Хелма описывается через настраиваемый ресурс Kubernetes с именем HelmRelease. Flux синхронизирует эти ресурсы из репозитория Git в кластер, а оператор Helm гарантирует, что диаграммы Хелма будут выпускаться в соответствии с описанием в этих ресурсах.

Пример репозитория, используемый в этой статье, структурирован следующим образом:

├── charts
│   └── azure-arc-sample
│       ├── Chart.yaml
│       ├── templates
│       │   ├── NOTES.txt
│       │   ├── deployment.yaml
│       │   └── service.yaml
│       └── values.yaml
└── releases
    └── app.yaml

В репозитории Git есть два каталога, один из которых содержит диаграмму Хелма, а другой — конфигурацию выпусков. В каталоге releases есть файл app.yaml с представленной ниже конфигурацией HelmRelease:

apiVersion: helm.fluxcd.io/v1
kind: HelmRelease
metadata:
  name: azure-arc-sample
  namespace: arc-k8s-demo
spec:
  releaseName: arc-k8s-demo
  chart:
    git: https://github.com/Azure/arc-helm-demo
    ref: master
    path: charts/azure-arc-sample
  values:
    serviceName: arc-k8s-demo

Конфигурация выпусков Helm содержит следующие поля:

Поле Description
metadata.name Обязательное поле. должно соответствовать соглашению об именовании для Kubernetes.
metadata.namespace Дополнительное поле. Определяет место создания выпуска.
spec.releaseName Дополнительное поле. Если не предоставлено, имя выпуска будет $namespace-$name.
spec.chart.path Каталог, содержащий диаграмму (связан с корнем репозитория).
spec.values Пользовательская перенастройка значений параметров по умолчанию из самой диаграммы.

Параметры, указанные в файле HelmRelease spec.values, переопределят параметры, заданные в values.yaml из источника диаграммы.

Дополнительные сведения о HelmRelease см. в официальной Документации по оператору Helm.

Создание конфигурации

Используя расширение Azure CLI для k8s-configuration, свяжите подключенный кластер с примером репозитория Git. Присвойте этой конфигурации имя azure-arc-sample и разверните оператор Flux в пространстве имен arc-k8s-demo.

az k8s-configuration create --name azure-arc-sample --cluster-name AzureArcTest1 --resource-group AzureArcTest --operator-instance-name flux --operator-namespace arc-k8s-demo --operator-params='--git-readonly --git-path=releases' --enable-helm-operator --helm-operator-chart-version='1.2.0' --helm-operator-params='--set helm.versions=v3' --repository-url https://github.com/Azure/arc-helm-demo.git --scope namespace --cluster-type connectedClusters

Параметры конфигурации

Чтобы настроить создание конфигурации, узнайте о дополнительных параметрах.

Проверка конфигурации

Проверка успешного создания конфигурации выполняется с помощью Azure CLI.

az k8s-configuration show --name azure-arc-sample --cluster-name AzureArcTest1 --resource-group AzureArcTest --cluster-type connectedClusters

В ресурс конфигурации будет записываться актуальная информация о состоянии соответствия, сообщения и отладочные сведения.

{
  "complianceStatus": {
    "complianceState": "Installed",
    "lastConfigApplied": "2019-12-05T05:34:41.481000",
    "message": "{\"OperatorMessage\":null,\"ClusterState\":null}",
    "messageLevel": "3"
  },
  "enableHelmOperator": "True",
  "helmOperatorProperties": {
    "chartValues": "--set helm.versions=v3",
    "chartVersion": "1.2.0"
  },
  "id": "/subscriptions/57ac26cf-a9f0-4908-b300-9a4e9a0fb205/resourceGroups/AzureArcTest/providers/Microsoft.Kubernetes/connectedClusters/AzureArcTest1/providers/Microsoft.KubernetesConfiguration/sourceControlConfigurations/azure-arc-sample",
  "name": "azure-arc-sample",
  "operatorInstanceName": "flux",
  "operatorNamespace": "arc-k8s-demo",
  "operatorParams": "--git-readonly --git-path=releases",
  "operatorScope": "namespace",
  "operatorType": "Flux",
  "provisioningState": "Succeeded",
  "repositoryPublicKey": "",
  "repositoryUrl": "https://github.com/Azure/arc-helm-demo.git",
  "resourceGroup": "AzureArcTest",
  "type": "Microsoft.KubernetesConfiguration/sourceControlConfigurations"
}

Проверка приложения

Выполните следующую команду и перейдите к localhost:8080 в браузере, чтобы убедиться, что приложение запущено.

kubectl port-forward -n arc-k8s-demo svc/arc-k8s-demo 8080:8080

Следующие шаги

Использование Политики Azure для применения конфигураций кластера в требуемом масштабе.