Share via


Distribuire grafici Helm usando GitOps in un cluster Kubernetes abilitato per Azure Arc

Importante

Questo articolo è destinato a GitOps con Flux v1. GitOps con Flux v2 è ora disponibile per i cluster Kubernetes e servizio Azure Kubernetes (AKS) abilitati per Azure Arc; passare all'esercitazione per GitOps con Flux v2. È consigliabile eseguire la migrazione a Flux v2 il prima possibile.

Il supporto per le risorse di configurazione del cluster basate su Flux v1 create prima del 1° gennaio 2024 terminerà il 24 maggio 2025. A partire dal 1° gennaio 2024, non sarà possibile creare nuove risorse di configurazione del cluster basate su Flux v1. Helm è uno strumento open source per la creazione di pacchetti che consente di installare e gestire il ciclo di vita delle applicazioni Kubernetes. Analogamente agli strumenti di gestione pacchetti Linux come APT e Yum, Helm viene usato per gestire i grafici Kubernetes, che sono pacchetti di risorse Kubernetes preconfigurati.

Questo articolo illustra come configurare e usare Helm con Kubernetes abilitato per Azure Arc.

Prerequisiti

  • Un account Azure con una sottoscrizione attiva. Creare un account gratuitamente.

  • Un cluster kubernetes abilitato per Azure Arc esistente.

    • Se non è ancora stato connesso un cluster, vedere la guida introduttiva Connessione un cluster Kubernetes abilitato per Azure Arc.
  • Conoscenza dei vantaggi e dell'architettura di questa funzionalità. Per altre informazioni, vedere l'articolo Configurazioni e GitOps - Kubernetes abilitato per Azure Arc.

  • Installare l'estensione dell'interfaccia k8s-configuration della riga di comando di Azure di versione >= 1.0.0:

    az extension add --name k8s-configuration
    

Panoramica dell'uso di GitOps e Helm con Kubernetes abilitato per Azure Arc

L'operatore Helm fornisce un'estensione a Flux che consente di automatizzare le versioni dei grafici Helm. Una versione di Helm Chart viene descritta tramite una risorsa personalizzata Kubernetes denominata HelmRelease. Flux sincronizza queste risorse da Git al cluster, mentre l'operatore Helm assicura che i grafici Helm vengano rilasciati come specificato nelle risorse.

Il repository di esempio usato in questo articolo è strutturato nel modo seguente:

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

Nel repository Git sono disponibili due directory: una contenente un grafico Helm e una contenente la configurazione delle versioni. releases Nella directory app.yaml contiene la configurazione HelmRelease, illustrata di seguito:

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

La configurazione delle versioni Helm contiene i campi seguenti:

Campo Descrizione
metadata.name Campo obbligatorio. Deve seguire le convenzioni di denominazione di Kubernetes.
metadata.namespace Campo facoltativo. Determina la posizione in cui viene creata la versione.
spec.releaseName Campo facoltativo. Se non viene specificato il nome della versione, sarà $namespace-$name.
spec.chart.path Directory contenente il grafico (relativo alla radice del repository).
spec.values Personalizzazioni utente dei valori dei parametri predefiniti dal grafico stesso.

Le opzioni specificate in HelmRelease spec.values sostituiranno le opzioni specificate in values.yaml dall'origine del grafico.

Per altre informazioni su HelmRelease, vedere la documentazione ufficiale dell'operatore Helm.

Creare una configurazione

Usando l'estensione dell'interfaccia della riga di comando di Azure per k8s-configuration, collegare il cluster connesso al repository Git di esempio. Assegnare a questa configurazione il nome azure-arc-sample e distribuire l'operatore Flux nello spazio dei arc-k8s-demo nomi .

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

Parametri di configurazione

Per personalizzare la creazione della configurazione, vedere altre informazioni sui parametri aggiuntivi.

Convalida della configurazione

Usando l'interfaccia della riga di comando di Azure, verificare che la configurazione sia stata creata correttamente.

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

La risorsa di configurazione viene aggiornata con lo stato di conformità, i messaggi e le informazioni di debug.

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

Convalidare l'applicazione

Eseguire il comando seguente e passare a localhost:8080 nel browser per verificare che l'applicazione sia in esecuzione.

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

Passaggi successivi

Applicare configurazioni del cluster su larga scala usando Criteri di Azure.