Bereitstellen von Helm-Charts mithilfe von GitOps in einem Kubernetes-Cluster mit Azure Arc-Unterstützung
Wichtig
Dieser Artikel gilt für GitOps mit Flux v1. GitOps mit Flux v2 ist jetzt als Vorschau für Azure Arc-fähige Kubernetes-Cluster und Azure Kubernetes Service (AKS)-Cluster verfügbar. Wechseln Sie zum Tutorial für GitOps mit Flux v2. Es wird empfohlen, so schnell wie möglich zu Flux v2 zu migrieren.
Die Unterstützung für Flux v1-basierte Clusterkonfigurationsressourcen, die vor dem 1. Januar 2024 erstellt wurden, endet am 24. Mai 2025. Ab dem 1. Januar 2024 können Sie keine neuen Flux v1-basierten Clusterkonfigurationsressourcen mehr erstellen. Helm ist ein Open Source-Verpackungstool, das Ihnen dabei hilft, Kubernetes-Anwendungen zu installieren und ihren Lebenszyklus zu verwalten. Ähnlich wie Linux-Paket-Manager (z. B. APT und Yum) wird Helm zur Verwaltung von Kubernetes-Charts verwendet, bei denen es sich um Pakete aus vorkonfigurierten Kubernetes-Ressourcen handelt.
In diesem Artikel wird die Konfiguration und Verwendung von Helm mit Kubernetes mit Azure Arc-Unterstützung veranschaulicht.
Voraussetzungen
Ein Azure-Konto mit einem aktiven Abonnement. Sie können kostenlos ein Konto erstellen.
Ein vorhandener Cluster, der mit Kubernetes mit Azure Arc-Unterstützung verbunden ist
- Wenn Sie noch keine Verbindung mit einem Cluster hergestellt haben, führen Sie unseren Schnellstart zum Verbinden eines Kubernetes-Clusters mit Azure Arc-Unterstützung aus.
Ein grundlegendes Verständnis der Vorteile und der Architektur dieses Features. Weitere Informationen finden Sie im Artikel Konfigurationen und GitOps: Azure Arc-fähiges Kubernetes.
Installieren Sie die Azure CLI-Erweiterung
k8s-configuration
in Version >= 1.0.0:az extension add --name k8s-configuration
Übersicht über die Verwendung von GitOps und Helm mit Kubernetes mit Azure Arc-Unterstützung
Der Helm-Operator stellt eine Erweiterung für Flux bereit, die Helm-Chartreleases automatisiert. Ein Helm-Chart-Release wird von einer benutzerdefinierten Kubernetes-Ressource namens HelmRelease beschrieben. Flux synchronisiert diese Ressourcen zwischen Git und dem Cluster, während der Helm-Operator sicherstellt, dass Helm-Charts wie in den Ressourcen festgelegt veröffentlicht werden.
Das Beispielrepository in diesem Artikel ist wie folgt strukturiert:
├── charts
│ └── azure-arc-sample
│ ├── Chart.yaml
│ ├── templates
│ │ ├── NOTES.txt
│ │ ├── deployment.yaml
│ │ └── service.yaml
│ └── values.yaml
└── releases
└── app.yaml
Im Git-Repository sind zwei Verzeichnisse enthalten. Eines enthält ein Helm-Chart, und das andere enthält die Konfiguration für die Releases. Im Verzeichnis releases
enthält die Datei app.yaml
die HelmRelease-Konfigurationsdatei, wie im Folgenden gezeigt:
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
Die Konfigurationsdatei für das Helm-Release enthält die folgenden Felder:
Feld | Beschreibung |
---|---|
metadata.name |
Pflichtfeld. Muss den Kubernetes-Namenskonventionen entsprechen. |
metadata.namespace |
Optionales Feld. Bestimmt, wo das Release erstellt wird. |
spec.releaseName |
Optionales Feld. Wenn keine Angabe erfolgt, lautet der Releasename $namespace-$name . |
spec.chart.path |
Das Verzeichnis mit dem Chart (relativ zum Stammverzeichnis des Repositorys). |
spec.values |
Benutzerdefinierte Varianten von Standardparameterwerten aus dem Chart selbst. |
Die in der HelmRelease-Datei spec.values
angegebenen Optionen überschreiben die Optionen, die in der Datei values.yaml
der Chart-Quelle angegeben sind.
Weitere Informationen zu HelmRelease finden Sie in der offiziellen Dokumentation für Helm-Operatoren.
Erstellen einer Konfiguration
Mit der Azure CLI-Erweiterung für k8s-configuration
verknüpfen Sie den verbundenen Cluster mit dem Git-Beispielrepository. Geben Sie dieser Konfiguration den Namen azure-arc-sample
, und stellen Sie den Flux-Operator im arc-k8s-demo
-Namespace bereit.
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
Konfigurationsparameter
Erfahren Sie mehr über die zusätzlichen Parameter, mit denen Sie die Erstellung der Konfiguration anpassen können.
Überprüfen der Konfiguration
Vergewissern Sie sich mithilfe der Azure CLI, dass die Konfiguration erfolgreich erstellt wurde.
az k8s-configuration show --name azure-arc-sample --cluster-name AzureArcTest1 --resource-group AzureArcTest --cluster-type connectedClusters
Die Konfigurationsressource wird mit Compliancestatus, Nachrichten und Debuginformationen aktualisiert.
{
"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"
}
Überprüfen der Anwendung
Führen Sie den folgenden Befehl aus, und navigieren Sie in Ihrem Browser zu localhost:8080
, um zu überprüfen, ob die Anwendung ausgeführt wird.
kubectl port-forward -n arc-k8s-demo svc/arc-k8s-demo 8080:8080
Nächste Schritte
Verwenden von Azure Policy zum Anwenden von Clusterkonfigurationen im großen Stil