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
Kluster terhubung Kubernetes dengan dukungan Azure Arc yang aktif dan berjalan. Kluster berbasis ARM64 didukung dimulai dengan
microsoft.flux
versi 1.7.0.Pelajari cara menyambungkan kluster Kubernetes ke Azure Arc. Jika Anda perlu terhubung melalui proksi keluar, pastikan Anda menginstal agen Arc dengan pengaturan proksi.
Izin baca dan tulis pada jenis sumber daya
Microsoft.Kubernetes/connectedClusters
.
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 denganaz aks create
, kluster berbasis MSI secara default. Untuk kluster berbasis SPN yang sudah dibuat yang perlu dikonversi ke MSI, jalankanaz 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 perintahaz 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 flux 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 menggunakannamespace
cakupan dengan tutorial ini, lihat perubahan yang diperlukan. - Dua kustomisasi ditentukan dengan nama
infra
danapps
. Masing-masing dikaitkan dengan jalur di repositori. - Kustomisasi
apps
tergantung padainfra
kustomisasi. (Kustomisasiinfra
harus selesai sebelumapps
kustomisasi berjalan.) - Atur
prune=true
pada kedua kustomisasi. Pengaturan ini memastikan bahwa objek yang disebarkan Flux ke kluster 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 flux create
microsoft.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
:redis
Namespace 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-controller
notification-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.
source
Pengontrol 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>
(defaulttrue
)--config helm-controller.enabled=<true/false>
(defaulttrue
)--config kustomize-controller.enabled=<true/false>
(defaulttrue
)--config notification-controller.enabled=<true/false>
(defaulttrue
)--config image-automation-controller.enabled=<true/false>
(defaultfalse
)--config image-reflector-controller.enabled=<true/false>
(defaultfalse
)
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 ekstensinya adalah 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 nonroot untuk menyediakan pod dengan benar pada kluster. Batasan ini harus ditambahkan ke kluster sebelum menyebarkan 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).
Bekerja dengan referensi autentikasi rahasia lokal
Untuk menggunakan referensi autentikasi rahasia lokal, rahasia harus ada dalam namespace yang sama tempat fluxConfiguration
akan disebarkan. Rahasia juga harus berisi semua parameter autentikasi yang diperlukan untuk sumbernya.
Untuk informasi tentang membuat rahasia untuk berbagai fluxConfiguration
sumber, lihat Rahasia lokal untuk autentikasi dengan sumber.
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:
- Pengontrol Fluks Kustomisasi
- Kustomisasi dokumen referensi
- File kustomisasi
- Kustomisasi proyek
- Panduan kustomisasi
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:
- Fluks untuk pengguna Helm
- Mengelola rilis Helm
- Migrasi ke Flux v2 Helm dari Flux v1 Helm
- Pengontrol Flux Helm
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
Substitusi variabel pasca-build yang ketat
Substitusi variabel pasca-build yang ketat tersedia dimulai dengan microsoft.flux
v1.13.1.
Untuk membuat ekstensi Flux dengan kebijakan substitusi yang ketat diaktifkan, jalankan perintah ini:
az k8s-extension create --resource-group <resource-group> --cluster-name <cluster-name> --cluster-type <cluster-type> --name flux --extension-type microsoft.flux --config kustomize-controller.strict-substitution-mode=true
Untuk memperbarui ekstensi Fluks yang ada untuk mengaktifkan kebijakan substitusi yang ketat, jalankan perintah ini:
az k8s-extension update --resource-group <resource-group> --cluster-name <cluster-name> --cluster-type <cluster-type> --name flux --config kustomize-controller.strict-substitution-mode=true
Penskalaan Vertikal
Dukungan untuk penskalaan vertikal tersedia dimulai dengan microsoft.flux
v1.12.0. Saat ini, hanya parameter tertentu yang dijelaskan dalam dokumentasi penskalaan vertikal Fluks yang didukung secara asli. Parameter lain dapat diterapkan secara manual ke kluster.
Untuk meningkatkan batas sumber daya pada pengontrol di luar batas saat ini, jalankan perintah ini, ubah jenis dan nilai sumber daya tertentu sesuai kebutuhan:
az k8s-extension update --resource-group <resource-group> --cluster-name <cluster-name> --cluster-type <cluster-type> --name flux --config kustomize-controller.resources.limits.memory=2Gi kustomize-controller.resources.limits.cpu=2000m
Untuk meningkatkan jumlah rekonsiliasi yang dapat dilakukan secara paralel, jalankan perintah ini:
az k8s-extension update --resource-group <resource-group> --cluster-name <cluster-name> --cluster-type <cluster-type> --name flux --config kustomize-controller.concurrent=6 kustomize-controller.requeue-dependency=50s
Untuk mengaktifkan build dalam memori, jalankan perintah ini:
az k8s-extension update --resource-group <resource-group> --cluster-name <cluster-name> --cluster-type <cluster-type> --name flux --config kustomize-controller.enable-in-memory-build=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.
Parameter tingkat log yang dapat dikonfigurasi
Secara default, log-level
untuk pengontrol Fluks diatur ke info
. Dimulai dengan microsoft.flux
v1.8.3, Anda dapat mengubah pengaturan default ini menggunakan k8s-extension
perintah sebagai berikut:
--config helm-controller.log-level=<info/error/debug>
--config source-controller.log-level=<info/error/debug>
--config kustomize-controller.log-level=<info/error/debug>
--config notification-controller.log-level=<info/error/debug>
--config image-automation-controller.log-level=<info/error/debug>
--config image-reflector-controller.log-level=<info/error/debug>
Nilai yang valid adalah debug
, info
, atau error
. Misalnya, untuk mengubah log-level
untuk source-controller
dan kustomize-controller
, gunakan perintah berikut:
az k8s-extension update --resource-group <resource-group> --cluster-name <cluster-name> --cluster-type <cluster-type> --name flux --config source-controller.log-level=error kustomize-controller.log-level=error
Dimulai dengan microsoft.flux
v1.9.1, fluxconfig-agent
dan fluxconfig-controller
tingkat dukungan info
dan error
log (tetapi tidak debug
). Ini dapat dimodifikasi dengan menggunakan perintah k8s-extension sebagai berikut:
--config fluxconfig-agent.log-level=<info/error>
--config fluxconfig-controller.log-level=<info/error>
Misalnya, perintah berikut berubah log-level
menjadi error
:
az k8s-extension update --resource-group <resource-group> --cluster-name <cluster-name> --cluster-type <cluster-type> --name flux --config fluxconfig-agent.log-level=error fluxconfig-controller.log-level=error
Penghentian Azure DevOps SSH-RSA
Azure DevOps mengumumkan penghentian SSH-RSA sebagai metode enkripsi yang didukung untuk menyambungkan ke repositori Azure menggunakan SSH. Jika Anda menggunakan kunci SSH untuk menyambungkan ke repositori Azure dalam konfigurasi Flux, sebaiknya pindah ke kunci RSA-SHA2-256 atau RSA-SHA2-512 yang lebih aman.
Saat mendamaikan konfigurasi Flux, Anda mungkin melihat pesan kesalahan yang menunjukkan ssh-rsa akan ditolak atau tidak didukung. Jika demikian, perbarui algoritma kunci host yang digunakan untuk membuat koneksi SSH ke repositori Azure DevOps dari Flux source-controller
dan image-automation-controller
(jika diaktifkan) dengan menggunakan az k8s-extension update
perintah . Contohnya:
az k8s-extension update --cluster-name <cluster-name> --resource-group <resource-group> --cluster-type <cluster-type> --name flux --config source-controller.ssh-host-key-args="--ssh-hostkey-algos=rsa-sha2-512,rsa-sha2-256"
az k8s-extension update --cluster-name <cluster-name> --resource-group <resource-group> --cluster-type <cluster-type> --name flux --config image-automation-controller.ssh-host-key-args="--ssh-hostkey-algos=rsa-sha2-512,rsa-sha2-256"
Untuk informasi selengkapnya tentang penghentian Azure DevOps SSH-RSA, lihat Akhir dukungan SSH-RSA untuk Azure Repos.
Mengonfigurasi anotasi pada pod ekstensi Flux
Saat mengonfigurasi solusi selain Azure Firewall, aturan jaringan dan FQDN/aplikasi diperlukan untuk kluster AKS. Dimulai dengan microsoft.flux
v1.11.1, pod pengontrol Flux sekarang dapat mengatur anotasi kubernetes.azure.com/set-kube-service-host-fqdn
dalam spesifikasi pod mereka. Ini memungkinkan lalu lintas ke nama domain API Server bahkan ketika firewall Layer 7 ada, memfasilitasi penyebaran selama penginstalan ekstensi. Untuk mengonfigurasi anotasi ini saat menggunakan ekstensi Flux, gunakan perintah berikut.
# Create flux extension with annotation
az k8s-extension create --resource-group <resource-group> --cluster-name <cluster-name> --cluster-type <cluster-type> --name flux --extension-type microsoft.flux --config setKubeServiceHostFqdn=true
# Update flux extension with annotation
az k8s-extension update --resource-group <resource-group> --cluster-name <cluster-name> --cluster-type <cluster-type> --name flux --config setKubeServiceHostFqdn=true
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.
Ambil URL penerbit OIDC untuk kluster Anda.
Buat identitas terkelola dan catat ID kliennya.
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>
Menetapkan kredensial identitas federasi. Contohnya:
# 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 # For kustomize-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":"kustomize-controller" --audience api://AzureADTokenExchange
Pastikan sumber daya kustom yang perlu menggunakan nilai set
.spec.provider
identitas beban kerja keazure
dalam manifes. Contohnya:apiVersion: source.toolkit.fluxcd.io/v1beta2 kind: HelmRepository metadata: name: acrrepo spec: interval: 10m0s type: <helm_repository_type> url: <helm_repository_link> provider: azure
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
- Baca selengkapnya tentang konfigurasi dan GitOps.
- Pelajari cara menggunakan Azure Policy untuk memberlakukan GitOps dalam skala besar.
- Pelajari tentang memantau status dan aktivitas GitOps (Flux v2).