Déployer des charts Helm à l’aide de GitOps sur un cluster Kubernetes avec Azure Arc

Important

Cet article est destiné à GitOps avec Flux v1. GitOps avec Flux v2 est désormais disponible pour les clusters AKS (Azure Kubernetes Service) et Kubernetes avec Azure Arc. Accédez au tutoriel pour GitOps avec Flux v2. Nous vous recommandons d’effectuer une migration vers Flux v2 dès que possible.

La prise en charge des ressources de configuration du cluster basées sur Flux v1, créées avant le 1er janvier 2024, s’achève le 24 mai 2025. À compter du 1er janvier 2024, vous ne pouvez plus créer de ressources de configuration de cluster basées sur Flux v1. Helm est un outil d’empaquetage open source qui vous aide à installer et à gérer le cycle de vie d’applications Kubernetes. À l'instar de gestionnaires de package Linux tels qu'APT et Yum, Helm sert à gérer les charts Kubernetes, qui sont des packages de ressources Kubernetes préconfigurées.

Cet article vous montre comment configurer et utiliser Helm à l’aide de Kubernetes avec Azure Arc.

Prérequis

Présentation de l’utilisation de GitOps et Helm à l’aide de Kubernetes avec Azure Arc

L’opérateur Helm fournit une extension à Flux qui automatise les versions Chart Helm. Une version du chart Helm est décrite par le biais d’une ressource personnalisée Kubernetes nommée HelmRelease. Flux synchronise ces ressources de Git au cluster, tandis que l’opérateur Helm vérifie que les charts Helm sont publiés comme spécifié dans les ressources.

L'exemple de référentiel utilisé dans cet article est structuré comme suit :

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

Dans le référentiel Git, nous avons deux répertoires, l’un contenant un chart Helm et l’autre le fichier config des versions. Dans le répertoire releases, le app.yaml contient le fichier config HelmRelease indiqué ci-dessous :

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

Le fichier config de la version Helm contient les champs suivants :

Champ Description
metadata.name Champ obligatoire. Doit respecter les conventions d’affectation de noms de Kubernetes.
metadata.namespace Champ facultatif. Détermine où la version est créée.
spec.releaseName Champ facultatif. S’il n’est pas indiqué, le nom de la version sera $namespace-$name.
spec.chart.path Répertoire contenant le chart (par rapport à la racine du dépôt).
spec.values Personnalisations par l’utilisateur de valeurs de paramètres par défaut provenant du chart lui-même.

Les options spécifiées dans spec.values HelmRelease remplacent les options spécifiées dans values.yaml de la source du chart.

Vous pouvez en savoir plus sur le HelmRelease dans la documentation officielle de l’opérateur Helm.

Créer une configuration

À l’aide de l’extension Azure CLI pour k8s-configuration, liez votre cluster connecté à un exemple de référentiel Git. Nous donnerons à cette configuration le nom azure-arc-sample et déploierons l’opérateur Flux dans l’espace de noms 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

Paramètres de configuration

Pour personnaliser la création de la configuration, découvrez les paramètres supplémentaires.

Valider la configuration

À l’aide d’Azure CLI, vérifiez si la configuration a été correctement créée.

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

La ressource de configuration est mise à jour avec l’état de conformité, les messages et les informations de débogage.

{
  "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"
}

Valider l’application

Exécutez la commande suivante et accédez à localhost:8080 sur votre navigateur pour vérifier que l’application est en cours d’exécution.

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

Étapes suivantes

Appliquer des configurations de cluster à grande échelle à l’aide d’Azure Policy.