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.