Tutorial: Menyebarkan aplikasi menggunakan GitOps dengan Flux v2

Tutorial ini menjelaskan cara menggunakan GitOps dalam kluster Kubernetes. GitOps dengan Flux v2 diaktifkan sebagai ekstensi kluster di kluster Kubernetes dengan dukungan Azure Arc atau kluster Azure Kubernetes Service (AKS). microsoft.flux Setelah ekstensi kluster diinstal, Anda dapat membuat satu atau beberapa fluxConfigurations sumber daya yang menyinkronkan sumber repositori Git Anda ke kluster dan mendamaikan kluster ke status yang diinginkan. Dengan GitOps, Anda dapat menggunakan repositori Git sebagai sumber kebenaran untuk konfigurasi kluster dan penyebaran aplikasi.

Dalam tutorial ini, kami menggunakan contoh konfigurasi GitOps dengan dua kustomisasi, sehingga Anda dapat melihat bagaimana satu kustomisasi dapat memiliki dependensi pada yang lain. Anda dapat menambahkan lebih banyak kustomisasi dan dependensi sesuai kebutuhan, tergantung pada skenario Anda.

Sebelum Anda menyelam, luangkan waktu sejenak untuk mempelajari cara kerja GitOps dengan Flux secara konseptual.

Tip

Meskipun sumber dalam tutorial ini adalah repositori Git, Flux juga menyediakan dukungan untuk sumber file umum lainnya seperti repositori Helm, Bucket, dan Azure Blob Storage.

Anda juga dapat membuat konfigurasi Fluks dengan menggunakan Bicep, templat ARM, atau penyedia Terraform AzAPI. Untuk informasi selengkapnya, lihat Microsoft.KubernetesConfiguration fluxConfigurations.

Penting

Ekstensi ini microsoft.flux merilis versi utama 1.0.0. Ini termasuk fitur multi-penyewaan. Jika Anda memiliki konfigurasi GitOps Flux v2 yang menggunakan versi microsoft.flux ekstensi sebelumnya, Anda dapat meningkatkan ke versi terbaru secara manual menggunakan Azure CLI: az k8s-extension create -g <RESOURCE_GROUP> -c <CLUSTER_NAME> -n flux --extension-type microsoft.flux -t <CLUSTER_TYPE> (gunakan -t connectedClusters untuk kluster Arc dan -t managedClusters untuk kluster AKS).

Prasyarat

Untuk menyebarkan aplikasi menggunakan GitOps dengan Flux v2, Anda memerlukan:

Untuk kluster Kubernetes dengan dukungan Azure Arc

Untuk kluster Azure Kubernetes Service

  • Kluster AKS berbasis MSI yang aktif dan berjalan.

    Penting

    Pastikan kluster AKS dibuat dengan MSI (bukan SPN), karena microsoft.flux ekstensi tidak akan berfungsi dengan kluster AKS berbasis SPN. Untuk kluster AKS baru yang dibuat dengan az aks create, kluster akan berbasis MSI secara default. Untuk kluster berbasis SPN yang sudah dibuat yang perlu dikonversi ke MSI, jalankan az aks update -g $RESOURCE_GROUP -n $CLUSTER_NAME --enable-managed-identity. Untuk informasi selengkapnya, lihat Menggunakan identitas terkelola di AKS.

  • Izin baca dan tulis pada jenis sumber daya Microsoft.ContainerService/managedClusters.

Umum untuk kedua jenis kluster

  • Izin baca dan tulis pada jenis sumber daya ini:

    • Microsoft.KubernetesConfiguration/extensions
    • Microsoft.KubernetesConfiguration/fluxConfigurations
  • Azure CLI versi 2.15 atau lebih baru. Instal Azure CLI atau gunakan perintah berikut untuk memperbarui ke versi terbaru:

    az version
    az upgrade
    
  • Klien baris perintah Kubernetes, kubectl. kubectl sudah diinstal jika Anda menggunakan Azure Cloud Shell.

    Pasang kubectl secara lokal menggunakan perintah az aks install-cli:

    az aks install-cli
    
  • Pendaftaran penyedia sumber daya Azure berikut:

    az provider register --namespace Microsoft.Kubernetes
    az provider register --namespace Microsoft.ContainerService
    az provider register --namespace Microsoft.KubernetesConfiguration
    

    Pendaftaran adalah proses asinkron dan harus selesai dalam waktu 10 menit. Untuk memantau proses pendaftaran, gunakan perintah berikut:

    az provider show -n Microsoft.KubernetesConfiguration -o table
    
    Namespace                          RegistrationPolicy    RegistrationState
    ---------------------------------  --------------------  -------------------
    Microsoft.KubernetesConfiguration  RegistrationRequired  Registered
    

Dukungan versi dan wilayah

GitOps saat ini didukung di semua wilayah yang didukung Kubernetes dengan dukungan Azure Arc. GitOps saat ini didukung di subset wilayah yang didukung AKS. Layanan GitOps menambahkan wilayah baru yang didukung pada irama reguler.

Versi terbaru ekstensi Flux v2 dan dua versi sebelumnya (N-2) didukung. Kami umumnya menyarankan Agar Anda menggunakan versi ekstensi terbaru.

Persyaratan jaringan

Agen GitOps memerlukan TCP keluar (keluar) ke sumber repositori di port 22 (SSH) atau port 443 (HTTPS) agar berfungsi. Agen juga memerlukan akses ke URL keluar berikut:

Titik akhir (DNS) Deskripsi
https://management.azure.com Diperlukan agen untuk berkomunikasi dengan layanan Konfigurasi Kubernetes.
https://<region>.dp.kubernetesconfiguration.azure.com Titik akhir sarana data bagi agen untuk mendorong status dan mengambil informasi konfigurasi. Tergantung pada <region> (wilayah yang didukung yang disebutkan sebelumnya).
https://login.microsoftonline.com Diperlukan untuk mengambil dan memperbarui token Azure Resource Manager.
https://mcr.microsoft.com Diperlukan untuk menarik gambar kontainer untuk pengontrol Flux.

Mengaktifkan ekstensi CLI

Instal paket ekstensi terbaru k8s-configuration dan k8s-extension CLI:

az extension add -n k8s-configuration
az extension add -n k8s-extension

Untuk memperbarui paket ini ke versi terbaru:

az extension update -n k8s-configuration
az extension update -n k8s-extension

Untuk melihat daftar semua ekstensi Azure CLI yang diinstal dan versinya, gunakan perintah berikut:

az extension list -o table

Experimental   ExtensionType   Name                   Path                                                       Preview   Version
-------------  --------------  -----------------      -----------------------------------------------------      --------  --------
False          whl             connectedk8s           C:\Users\somename\.azure\cliextensions\connectedk8s         False     1.2.7
False          whl             k8s-configuration      C:\Users\somename\.azure\cliextensions\k8s-configuration    False     1.5.0
False          whl             k8s-extension          C:\Users\somename\.azure\cliextensions\k8s-extension        False     1.1.0

Tip

Untuk bantuan mengatasi kesalahan apa pun, lihat bagian GitOps (Flux v2) dari Memecahkan masalah ekstensi untuk kluster Kubernetes dengan dukungan Azure Arc.

Menerapkan konfigurasi Fluks

k8s-configuration Gunakan ekstensi Azure CLI atau portal Azure untuk mengaktifkan GitOps di kluster Kubernetes dengan dukungan AKS atau Arc. Untuk demonstrasi, gunakan repositori gitops-flux2-kustomize-helm-mt publik.

Penting

Repositori demonstrasi dirancang untuk menyederhanakan penggunaan tutorial ini dan menggambarkan beberapa prinsip utama. Agar tetap terbarui, repositori kadang-kadang bisa mendapatkan perubahan yang melanggar dari peningkatan versi. Perubahan ini tidak akan memengaruhi aplikasi baru tutorial ini, hanya aplikasi tutorial sebelumnya yang belum dihapus. Untuk mempelajari cara menangani perubahan ini, silakan lihat penafian perubahan yang melanggar.

Contoh berikut menggunakan az k8s-configuration create perintah untuk menerapkan konfigurasi Fluks ke kluster, menggunakan nilai dan pengaturan berikut:

  • Grup sumber daya yang berisi kluster adalah flux-demo-rg.
  • Nama kluster Azure Arc adalah flux-demo-arc.
  • Jenis kluster adalah Azure Arc (-t connectedClusters), tetapi contoh ini juga berfungsi dengan AKS (-t managedClusters).
  • Nama konfigurasi Flux adalah cluster-config.
  • Namespace untuk penginstalan konfigurasi adalah cluster-config.
  • URL untuk repositori Git publik adalah https://github.com/Azure/gitops-flux2-kustomize-helm-mt.
  • Cabang repositori Git adalah main.
  • Cakupan konfigurasi adalah cluster. Cakupan ini memberi operator izin untuk membuat perubahan di seluruh kluster. Untuk menggunakan namespace cakupan dengan tutorial ini, lihat perubahan yang diperlukan.
  • Dua kustomisasi ditentukan dengan nama infra dan apps. Masing-masing dikaitkan dengan jalur di repositori.
  • Kustomisasi apps tergantung pada infra kustomisasi. (Kustomisasi infra harus selesai sebelum apps kustomisasi berjalan.)
  • Atur prune=true pada kedua kustomisasi. Pengaturan ini memastikan bahwa objek yang disebarkan Flux ke kluster akan dibersihkan jika dihapus dari repositori, atau jika konfigurasi Flux atau kustomisasi dihapus.
az k8s-configuration flux create -g flux-demo-rg \
-c flux-demo-arc \
-n cluster-config \
--namespace cluster-config \
-t connectedClusters \
--scope cluster \
-u https://github.com/Azure/gitops-flux2-kustomize-helm-mt \
--branch main  \
--kustomization name=infra path=./infrastructure prune=true \
--kustomization name=apps path=./apps/staging prune=true dependsOn=\["infra"\]

microsoft.flux Ekstensi diinstal pada kluster (jika belum diinstal dalam penyebaran GitOps sebelumnya).

Tip

Perintah menyebarkan az k8s-configuration createmicrosoft.flux ekstensi ke kluster dan membuat konfigurasi. Dalam beberapa skenario, Anda mungkin ingin membuat instans ekstensi fluks secara terpisah sebelum membuat sumber daya konfigurasi Anda. Untuk melakukannya, gunakan az k8s-extension create perintah untuk membuat instans ekstensi pada kluster Anda.

Ketika konfigurasi fluks pertama kali diinstal, status kepatuhan awal mungkin Pending atau Non-compliant karena rekonsiliasi masih berlangsung. Setelah satu menit atau lebih, kueri konfigurasi lagi untuk melihat status kepatuhan akhir.

az k8s-configuration flux show -g flux-demo-rg -c flux-demo-arc -n cluster-config -t connectedClusters

Untuk mengonfirmasi bahwa penyebaran berhasil, jalankan perintah berikut:

az k8s-configuration flux show -g flux-demo-rg -c flux-demo-arc -n cluster-config -t connectedClusters

Dengan penyebaran yang berhasil, namespace berikut dibuat:

  • flux-system: Memegang pengontrol ekstensi Flux.
  • cluster-config: Menyimpan objek konfigurasi Fluks.
  • nginx, , podinfo: redisNamespace untuk beban kerja yang dijelaskan dalam manifes di repositori Git.

Untuk mengonfirmasi namespace, jalankan perintah berikut:

kubectl get namespaces

Namespace flux-system berisi objek ekstensi Fluks:

  • Pengontrol Azure Flux: fluxconfig-agent, fluxconfig-controller
  • Pengontrol Fluks OSS: source-controller, , kustomize-controller, helm-controllernotification-controller

Agen Flux dan pod pengontrol harus dalam keadaan berjalan. Konfirmasikan ini menggunakan perintah berikut:

kubectl get pods -n flux-system

NAME                                      READY   STATUS    RESTARTS   AGE
fluxconfig-agent-9554ffb65-jqm8g          2/2     Running   0          21m
fluxconfig-controller-9d99c54c8-nztg8     2/2     Running   0          21m
helm-controller-59cc74dbc5-77772          1/1     Running   0          21m
kustomize-controller-5fb7d7b9d5-cjdhx     1/1     Running   0          21m
notification-controller-7d45678bc-fvlvr   1/1     Running   0          21m
source-controller-df7dc97cd-4drh2         1/1     Running   0          21m

Namespace cluster-config memiliki objek konfigurasi Fluks.

kubectl get crds

NAME                                                   CREATED AT
alerts.notification.toolkit.fluxcd.io                  2022-04-06T17:15:48Z
arccertificates.clusterconfig.azure.com                2022-03-28T21:45:19Z
azureclusteridentityrequests.clusterconfig.azure.com   2022-03-28T21:45:19Z
azureextensionidentities.clusterconfig.azure.com       2022-03-28T21:45:19Z
buckets.source.toolkit.fluxcd.io                       2022-04-06T17:15:48Z
connectedclusters.arc.azure.com                        2022-03-28T21:45:19Z
customlocationsettings.clusterconfig.azure.com         2022-03-28T21:45:19Z
extensionconfigs.clusterconfig.azure.com               2022-03-28T21:45:19Z
fluxconfigs.clusterconfig.azure.com                    2022-04-06T17:15:48Z
gitconfigs.clusterconfig.azure.com                     2022-03-28T21:45:19Z
gitrepositories.source.toolkit.fluxcd.io               2022-04-06T17:15:48Z
helmcharts.source.toolkit.fluxcd.io                    2022-04-06T17:15:48Z
helmreleases.helm.toolkit.fluxcd.io                    2022-04-06T17:15:48Z
helmrepositories.source.toolkit.fluxcd.io              2022-04-06T17:15:48Z
imagepolicies.image.toolkit.fluxcd.io                  2022-04-06T17:15:48Z
imagerepositories.image.toolkit.fluxcd.io              2022-04-06T17:15:48Z
imageupdateautomations.image.toolkit.fluxcd.io         2022-04-06T17:15:48Z
kustomizations.kustomize.toolkit.fluxcd.io             2022-04-06T17:15:48Z
providers.notification.toolkit.fluxcd.io               2022-04-06T17:15:48Z
receivers.notification.toolkit.fluxcd.io               2022-04-06T17:15:48Z
volumesnapshotclasses.snapshot.storage.k8s.io          2022-03-28T21:06:12Z
volumesnapshotcontents.snapshot.storage.k8s.io         2022-03-28T21:06:12Z
volumesnapshots.snapshot.storage.k8s.io                2022-03-28T21:06:12Z
websites.extensions.example.com                        2022-03-30T23:42:32Z

Konfirmasi detail konfigurasi lainnya dengan menggunakan perintah berikut.

kubectl get fluxconfigs -A

NAMESPACE        NAME             SCOPE     URL                                                       PROVISION   AGE
cluster-config   cluster-config   cluster   https://github.com/Azure/gitops-flux2-kustomize-helm-mt   Succeeded   44m
kubectl get gitrepositories -A

NAMESPACE        NAME             URL                                                       READY   STATUS                                                            AGE
cluster-config   cluster-config   https://github.com/Azure/gitops-flux2-kustomize-helm-mt   True    Fetched revision: main/4f1bdad4d0a54b939a5e3d52c51464f67e474fcf   45m
kubectl get helmreleases -A

NAMESPACE        NAME      READY   STATUS                             AGE
cluster-config   nginx     True    Release reconciliation succeeded   66m
cluster-config   podinfo   True    Release reconciliation succeeded   66m
cluster-config   redis     True    Release reconciliation succeeded   66m
kubectl get kustomizations -A


NAMESPACE        NAME                   READY   STATUS                                                            AGE
cluster-config   cluster-config-apps    True    Applied revision: main/4f1bdad4d0a54b939a5e3d52c51464f67e474fcf   65m
cluster-config   cluster-config-infra   True    Applied revision: main/4f1bdad4d0a54b939a5e3d52c51464f67e474fcf   65m

Beban kerja disebarkan dari manifes di repositori Git.

kubectl get deploy -n nginx

NAME                                       READY   UP-TO-DATE   AVAILABLE   AGE
nginx-ingress-controller                   1/1     1            1           67m
nginx-ingress-controller-default-backend   1/1     1            1           67m

kubectl get deploy -n podinfo

NAME      READY   UP-TO-DATE   AVAILABLE   AGE
podinfo   1/1     1            1           68m

kubectl get all -n redis

NAME                 READY   STATUS    RESTARTS   AGE
pod/redis-master-0   1/1     Running   0          68m

NAME                     TYPE        CLUSTER-IP    EXTERNAL-IP   PORT(S)    AGE
service/redis-headless   ClusterIP   None          <none>        6379/TCP   68m
service/redis-master     ClusterIP   10.0.13.182   <none>        6379/TCP   68m

NAME                            READY   AGE
statefulset.apps/redis-master   1/1     68m

Mengontrol pengontrol mana yang disebarkan dengan ekstensi kluster Flux

Untuk beberapa skenario, Anda mungkin ingin mengubah pengontrol Flux mana yang diinstal dengan ekstensi kluster Flux.

sourcePengontrol Fluks , helm, kustomize, dan notification diinstal secara default. Pengontrol image-automation dan image-reflector , yang digunakan untuk memperbarui repositori Git ketika gambar kontainer baru tersedia, harus diaktifkan secara eksplisit.

Anda dapat menggunakan k8s-extension perintah untuk mengubah opsi default:

  • --config source-controller.enabled=<true/false> (default true)
  • --config helm-controller.enabled=<true/false> (default true)
  • --config kustomize-controller.enabled=<true/false> (default true)
  • --config notification-controller.enabled=<true/false> (default true)
  • --config image-automation-controller.enabled=<true/false> (default false)
  • --config image-reflector-controller.enabled=<true/false> (default false)

Misalnya, untuk menonaktifkan pemberitahuan, Anda dapat mengatur notification-controller.enabled ke false.

Contoh perintah ini menginstal image-reflector pengontrol dan image-automation . Jika ekstensi Flux dibuat secara otomatis ketika konfigurasi Flux pertama kali dibuat, nama ekstensi akan menjadi flux.

az k8s-extension create -g <cluster_resource_group> -c <cluster_name> -t <connectedClusters or managedClusters or provisionedClusters> --name flux --extension-type microsoft.flux --config image-automation-controller.enabled=true image-reflector-controller.enabled=true

Menggunakan identitas Kubelet sebagai metode autentikasi untuk kluster AKS

Untuk kluster AKS, salah satu opsi autentikasi yang akan digunakan adalah identitas kubelet. Secara default, AKS membuat identitas kubelet sendiri di grup sumber daya terkelola. Jika mau, Anda dapat menggunakan identitas terkelola kubelet yang dibuat sebelumnya. Untuk melakukannya, tambahkan parameter --config useKubeletIdentity=true pada saat penginstalan ekstensi Flux.

az k8s-extension create --resource-group <resource-group> --cluster-name <cluster-name> --cluster-type managedClusters --name flux --extension-type microsoft.flux --config useKubeletIdentity=true

Panduan orientasi Red Hat OpenShift

Pengontrol fluks memerlukan Batasan Konteks Keamanan nonrootuntuk menyediakan pod dengan benar pada kluster. Batasan ini harus ditambahkan ke kluster sebelum onboarding microsoft.flux ekstensi.

NS="flux-system"
oc adm policy add-scc-to-user nonroot system:serviceaccount:$NS:kustomize-controller
oc adm policy add-scc-to-user nonroot system:serviceaccount:$NS:helm-controller
oc adm policy add-scc-to-user nonroot system:serviceaccount:$NS:source-controller
oc adm policy add-scc-to-user nonroot system:serviceaccount:$NS:notification-controller
oc adm policy add-scc-to-user nonroot system:serviceaccount:$NS:image-automation-controller
oc adm policy add-scc-to-user nonroot system:serviceaccount:$NS:image-reflector-controller

Untuk informasi selengkapnya tentang panduan OpenShift untuk onboarding Flux, lihat dokumentasi Flux.

Bekerja dengan parameter

Flux mendukung banyak parameter untuk mengaktifkan berbagai skenario. Untuk deskripsi semua parameter yang didukung Flux, lihat dokumentasi Flux resmi. Flux di Azure belum mendukung semua parameter. Beri tahu kami jika parameter yang Anda butuhkan hilang dari implementasi Azure.

Untuk informasi tentang parameter yang tersedia dan cara menggunakannya, lihat Parameter yang didukung GitOps (Flux v2).

Mengelola konfigurasi kluster dengan menggunakan pengontrol Flux Kustomize

Pengontrol Flux Kustomize diinstal sebagai bagian microsoft.flux dari ekstensi kluster. Ini memungkinkan manajemen deklaratif konfigurasi kluster dan penyebaran aplikasi dengan menggunakan manifes Kubernetes yang disinkronkan dari repositori Git. Manifes Kubernetes ini dapat secara opsional menyertakan file kustomize.yaml .

Untuk detail penggunaan, lihat sumber daya berikut:

Mengelola rilis bagan Helm dengan menggunakan pengontrol Flux Helm

Pengontrol Flux Helm diinstal sebagai bagian microsoft.flux dari ekstensi kluster. Ini memungkinkan Anda untuk secara deklaratif mengelola rilis bagan Helm dengan manifes Kubernetes yang Anda pertahankan di repositori Git Anda.

Untuk detail penggunaan, lihat sumber daya berikut:

Tip

Karena bagaimana Helm menangani file indeks, memproses bagan Helm adalah operasi yang mahal dan dapat memiliki jejak memori yang sangat tinggi. Akibatnya, merekonsiliasi sejumlah besar bagan Helm sekaligus dapat menyebabkan lonjakan memori dan OOMKilled kesalahan. Secara default, pengontrol mengatur batas memorinya pada 1Gi dan permintaan memorinya pada 64Mi. Untuk meningkatkan batas dan permintaan ini karena tingginya jumlah rekonsiliasi bagan Helm besar, jalankan perintah berikut setelah menginstal ekstensi microsoft.flux:

az k8s-extension update -g <resource-group> -c <cluster-name> -n flux -t connectedClusters --config source-controller.resources.limits.memory=2Gi source-controller.resources.requests.memory=300Mi

Menggunakan sumber GitRepository untuk bagan Helm

Jika bagan Helm Anda disimpan di GitRepository sumber yang Anda konfigurasi sebagai bagian fluxConfigurations dari sumber daya, Anda dapat menunjukkan bahwa sumber yang dikonfigurasi harus digunakan sebagai sumber bagan Helm dengan menambahkan clusterconfig.azure.com/use-managed-source: "true" ke file HelmRelease.yaml Anda, seperti yang ditunjukkan dalam contoh berikut:

---
apiVersion: helm.toolkit.fluxcd.io/v2beta1
kind: HelmRelease
metadata:
  name: somename
  namespace: somenamespace
  annotations:
    clusterconfig.azure.com/use-managed-source: "true"
spec:
  ...

Saat Anda menggunakan anotasi ini, HelmRelease yang disebarkan di-patch dengan referensi ke sumber yang dikonfigurasi. Saat ini, hanya GitRepository sumber yang didukung.

Deteksi penyimpangan helm

Deteksi penyimpangan untuk rilis Helm tidak diaktifkan secara default. Dimulai dengan microsoft.flux v1.7.5, Anda dapat mengaktifkan deteksi penyimpangan Helm dengan menjalankan perintah berikut:

az k8s-extension update --resource-group <resource-group> --cluster-name <cluster-name> --name flux --cluster-type <cluster-type> --config helm-controller.detectDrift=true 

Jam tangan Helm OOM

Dimulai dengan microsoft.flux v1.7.5, Anda dapat mengaktifkan jam tangan OOM Helm. Untuk informasi selengkapnya, lihat Mengaktifkan Helm di dekat deteksi OOM.

Pastikan untuk meninjau potensi strategi remediasi dan menerapkannya sesuai kebutuhan saat mengaktifkan fitur ini.

Untuk mengaktifkan jam tangan OOM, jalankan perintah berikut:

az k8s-extension update --resource-group <resource-group> --cluster-name <cluster-name> --name flux --cluster-type <cluster-type> --config helm-controller.outOfMemoryWatch.enabled=true helm-controller.outOfMemoryWatch.memoryThreshold=70 helm-controller.outOfMemoryWatch.interval=700ms

Jika Anda tidak menentukan nilai untuk memoryThreshold dan outOfMemoryWatch, ambang batas memori default diatur ke 95%, dengan interval untuk memeriksa pemanfaatan memori yang diatur ke 500 ms.

Identitas beban kerja dalam kluster AKS

Dimulai dengan microsoft.flux v1.8.0, Anda dapat membuat konfigurasi Flux di kluster AKS dengan identitas beban kerja diaktifkan. Untuk melakukannya, ubah ekstensi fluks seperti yang ditunjukkan pada langkah-langkah berikut.

  1. Ambil URL penerbit OIDC untuk kluster Anda.

  2. Buat identitas terkelola dan catat ID kliennya.

  3. Buat ekstensi fluks pada kluster, menggunakan perintah berikut:

    az k8s-extension create --resource-group <resource_group_name> --cluster-name <aks_cluster_name> --cluster-type managedClusters --name flux --extension-type microsoft.flux --config workloadIdentity.enable=true workloadIdentity.azureClientId=<user_assigned_client_id>
    
  4. Menetapkan kredensial identitas federasi. Misalnya:

    # For source-controller
    az identity federated-credential create --name ${FEDERATED_IDENTITY_CREDENTIAL_NAME} --identity-name "${USER_ASSIGNED_IDENTITY_NAME}" --resource-group "${RESOURCE_GROUP}" --issuer "${AKS_OIDC_ISSUER}" --subject system:serviceaccount:"flux-system":"source-controller" --audience api://AzureADTokenExchange
    
    # For image-reflector controller if you plan to enable it during extension creation, it is not deployed by default
    az identity federated-credential create --name ${FEDERATED_IDENTITY_CREDENTIAL_NAME} --identity-name "${USER_ASSIGNED_IDENTITY_NAME}" --resource-group "${RESOURCE_GROUP}" --issuer "${AKS_OIDC_ISSUER}" --subject system:serviceaccount:"flux-system":"image-reflector-controller" --audience api://AzureADTokenExchange
    
  5. Pastikan sumber daya kustom yang perlu menggunakan identitas beban kerja telah menetapkan .spec.provider nilai ke azure dalam manifes. Misalnya:

    apiVersion: source.toolkit.fluxcd.io/v1beta2
    kind: HelmRepository
    metadata:
      name: acrrepo
    spec:
      interval: 10m0s
      type: <helm_repository_type>
      url: <helm_repository_link>
      provider: azure
    
  6. Pastikan untuk memberikan izin yang tepat untuk identitas beban kerja untuk sumber daya yang Anda inginkan untuk ditarik oleh pengontrol sumber atau pengontrol pemantul gambar. Misalnya, jika menggunakan Azure Container Registry, AcrPull izin diperlukan.

Menghapus konfigurasi dan ekstensi Fluks

Gunakan perintah berikut untuk menghapus konfigurasi Flux Anda dan, jika diinginkan, ekstensi Flux itu sendiri.

Menghapus konfigurasi Fluks

Perintah berikut menghapus fluxConfigurations sumber daya di Azure dan objek konfigurasi Flux di kluster. Karena konfigurasi Flux awalnya dibuat dengan prune=true parameter untuk kustomisasi, semua objek yang dibuat dalam kluster berdasarkan manifes di repositori Git dihapus saat konfigurasi Flux dihapus. Namun, perintah ini tidak menghapus ekstensi Flux itu sendiri.

az k8s-configuration flux delete -g flux-demo-rg -c flux-demo-arc -n cluster-config -t connectedClusters --yes

Menghapus ekstensi kluster Flux

Saat Anda menghapus ekstensi Flux, sumber microsoft.flux daya ekstensi di Azure dan objek ekstensi Flux di kluster akan dihapus.

Penting

Pastikan untuk menghapus semua konfigurasi Flux di kluster sebelum Anda menghapus ekstensi Flux. Menghapus ekstensi tanpa terlebih dahulu menghapus konfigurasi Flux dapat membuat kluster Anda dalam kondisi tidak stabil.

Jika ekstensi Flux dibuat secara otomatis saat konfigurasi Flux pertama kali dibuat, nama ekstensinya adalah flux.

az k8s-extension delete -g flux-demo-rg -c flux-demo-arc -n flux -t connectedClusters --yes

Tip

Perintah ini menggunakan -t connectedClusters, yang sesuai untuk kluster Kubernetes dengan dukungan Azure Arc. Untuk kluster AKS, gunakan -t managedClusters sebagai gantinya.

Langkah berikutnya