Bagikan melalui


Menyebarkan Bagan Helm menggunakan GitOps pada kluster Kube dengan Azure Arc aktif

Penting

Artikel ini untuk GitOps dengan Flux v1. GitOps dengan Flux v2 sekarang tersedia untuk kluster Kubernetes dan Azure Kubernetes Service (AKS) dengan dukungan Azure Arc; buka tutorial untuk GitOps dengan Flux v2. Sebaiknya migrasi ke Flux v2 sesegera mungkin.

Dukungan untuk sumber daya konfigurasi kluster berbasis Flux v1 yang dibuat sebelum 1 Januari 2024 akan berakhir pada 24 Mei 2025. Mulai 1 Januari 2024, Anda tidak akan dapat membuat sumber daya konfigurasi kluster berbasis Flux v1 baru. Helm adalah alat pengemasan sumber terbuka yang membantu Anda memasang dan mengelola siklus hidup aplikasi Kubernetes. Mirip dengan manajer paket Linux seperti APT dan Yum, Helm digunakan untuk mengelola bagan Kube, yang merupakan paket sumber daya Kube yang telah dikonfigurasi sebelumnya.

Artikel ini menunjukkan cara mengonfigurasi dan menggunakan Helm bersama Kube dengan Azure Arc aktif.

Prasyarat

Gambaran umum penggunaan GitOps dan Helm bersama Kube dengan Azure Arc aktif

Operator Helm menyediakan ekstensi untuk Flux yang mengotomatiskan rilis Bagan Helm. Rilis Bagan Helm dijelaskan melalui sumber daya kustom Kube bernama HelmRelease. Flux menyinkronkan sumber daya ini dari Git ke kluster, sementara operator Helm memastikan Bagan Helm dirilis seperti yang ditentukan dalam sumber daya.

Contoh repositori yang digunakan dalam artikel ini disusun dengan cara berikut:

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

Dalam repo Git kami memiliki dua direktori: satu berisi Bagan Helm dan satu berisi konfigurasi rilis. Dalam direktori releases, app.yaml yang berisi konfigurasi HelmRelease, ditunjukkan di bawah ini:

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

Konfigurasi rilis Helm berisi bidang berikut:

Bidang Deskripsi
metadata.name Bidang wajib. Perlu mengikuti konvensi penamaan Kube.
metadata.namespace Bidang opsional. Menentukan tempat rilis dibuat.
spec.releaseName Bidang opsional. Jika tidak diberikan, nama rilis akan menjadi $namespace-$name.
spec.chart.path Direktori yang berisi bagan (bergantung pada terhadap akar repositori).
spec.values Kustomisasi pengguna nilai parameter default dari Bagan itu sendiri.

Opsi yang ditentukan dalam HelmRelease spec.values akan menggantikan opsi yang ditentukan di values.yaml dari sumber Bagan.

Anda dapat mempelajari lebih lanjut tentang HelmRelease dalam dokumentasi Operator Helm resmi.

Membuat profil konfigurasi

Menggunakan ekstensi CLI Azure untuk k8s-configuration, tautkan kluster tersambung Anda ke repositori Git contoh. Beri nama konfigurasi ini azure-arc-sample dan sebarkan operator Flux di namespace 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

Parameter konfigurasi

Untuk menyesuaikan pembuatan konfigurasi, pelajari tentang parameter tambahan.

Memvalidasi konfigurasi

Menggunakan Azure CLI, pastikan bahwa konfigurasi berhasil dibuat.

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

Sumber daya konfigurasi diperbarui dengan status kepatuhan, pesan, dan informasi penelusuran kesalahan.

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

Memvalidasi aplikasi

Jalankan perintah berikut dan buka localhost:8080 di browser Anda untuk memastikan bahwa aplikasi sedang berjalan.

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

Langkah berikutnya

Menerapkan konfigurasi kluster dalam skala besar menggunakan Azure Policy.