Развертывание диаграмм 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.
Необходимые компоненты
Учетная запись Azure с активной подпиской. Создайте учетную запись бесплатно .
Существующий подключенный кластер Kubernetes с поддержкой Azure Arc.
- Если вы еще не подключили кластер, выполните инструкции из пошагового руководства Подключение кластера Kubernetes с поддержкой Azure Arc.
Понимание преимуществ и архитектуры этой возможности. Дополнительные сведения см. в статье Конфигурации и GitOps — Kubernetes с поддержкой Azure Arc.
k8s-configuration
Установите расширение Azure CLI версии >= 1.0.0:az extension add --name k8s-configuration
Общие сведения об использовании 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 для применения конфигураций кластера в требуемом масштабе.