Konfigurasi GitOps Flux v2 dengan AKS dan Kubernetes dengan dukungan Azure Arc
Azure menyediakan kemampuan manajemen konfigurasi menggunakan GitOps di kluster Kube yang didukung Azure Kubernetes Service (AKS) dan Azure Arc. Anda dapat dengan mudah mengaktifkan dan menggunakan GitOps di kluster ini.
Dengan GitOps, Anda menyatakan status kluster Kubernetes yang diinginkan dalam file di repositori Git. Repositori Git mungkin berisi file berikut:
- Manifes berformat YAML yang menjelaskan sumber daya Kube (seperti Namespace, Rahasia, Penyebaran, dan lainnya)
- Bagan Helm untuk menyebarkan aplikasi
- Kustomisasi file untuk menjelaskan perubahan khusus lingkungan
Karena file-file ini disimpan dalam repositori Git, file tersebut diberi versi, dan perubahan antar versi mudah dilacak. Pengontrol Kube berjalan di kluster dan terus mendamaikan status kluster dengan status yang diinginkan yang dideklarasikan dalam repositori Git. Operator ini menarik file dari repositori Git dan menerapkan status yang diinginkan ke kluster. Operator juga terus memastikan bahwa kluster tetap dalam keadaan yang diinginkan.
GitOps di Kubernetes yang didukung Azure Arc atau Azure Kubernetes Service menggunakan Flux, set alat sumber terbuka populer. Flux menyediakan dukungan untuk sumber file umum (repositori Git dan Helm, Bucket) dan jenis templat (YAML, Helm, dan Kustomize). Flux juga mendukung manajemen dependensi multi-penyewaan dan penyebaran, di antara fitur lainnya.
Ekstensi kluster fluks
GitOps diaktifkan dalam kluster Kubernetes atau AKS dengan dukungan Azure Arc sebagai Microsoft.KubernetesConfiguration/extensions/microsoft.flux sumber daya ekstensi kluster. microsoft.flux Ekstensi harus diinstal di kluster sebelum satu atau beberapa fluxConfigurations dapat dibuat. Ekstensi akan diinstal secara otomatis saat Anda membuat yang pertama Microsoft.KubernetesConfiguration/fluxConfigurations dalam kluster, atau Anda dapat menginstalnya secara manual menggunakan portal, Azure CLI (az k8s-extension create --extensionType=microsoft.flux), templat ARM, atau REST API.
microsoft.flux Ekstensi diinstal secara default pengontrol Flux (Source, Kustomize, Helm, Notification) dan FluxConfig CRD, fluxconfig-agent, dan fluxconfig-controller. Anda dapat mengontrol pengontrol mana yang diinstal dan secara opsional dapat menginstal flux image-automation dan image-reflector controllers, yang menyediakan fungsionalitas sekeliling memperbarui dan mengambil gambar Docker.
- Pengontrol Sumber Fluks: Mengawasi sumber daya kustom source.toolkit.fluxcd.io. Menangani sinkronisasi antara repositori Git, repositori Helm, dan Bucket. Menangani otorisasi dengan sumber untuk repositori Git dan Helm privat. Menampilkan perubahan terbaru pada sumber melalui file arsip tar.
- Pengontrol Flux Kustomize: Mengawasi
kustomization.toolkit.fluxcd.iosumber daya kustom. Menerapkan kustomisasi atau file YAML mentah dari sumber ke kluster. - Pengontrol Flux Helm: Mengawasi
helm.toolkit.fluxcd.iosumber daya kustom. Mengambil bagan terkait dari sumber Repositori Helm yang muncul oleh pengontrol Sumber.HelmChartMembuat sumber daya kustom dan menerapkanHelmReleasedengan versi, nama, dan nilai yang ditentukan pelanggan yang diberikan ke kluster. - Pengontrol Pemberitahuan Fluks: Mengawasi
notification.toolkit.fluxcd.iosumber daya kustom. Menerima pemberitahuan dari semua pengontrol Flux. Mendorong pemberitahuan ke titik akhir webhook yang ditentukan pengguna. - Definisi Sumber Daya Kustom Fluks:
kustomizations.kustomize.toolkit.fluxcd.ioimagepolicies.image.toolkit.fluxcd.ioimagerepositories.image.toolkit.fluxcd.ioimageupdateautomations.image.toolkit.fluxcd.ioalerts.notification.toolkit.fluxcd.ioproviders.notification.toolkit.fluxcd.ioreceivers.notification.toolkit.fluxcd.iobuckets.source.toolkit.fluxcd.iogitrepositories.source.toolkit.fluxcd.iohelmcharts.source.toolkit.fluxcd.iohelmrepositories.source.toolkit.fluxcd.iohelmreleases.helm.toolkit.fluxcd.iofluxconfigs.clusterconfig.azure.com
- FluxConfig CRD: Definisi Sumber Daya Kustom untuk
fluxconfigs.clusterconfig.azure.comsumber daya kustom yang menentukanFluxConfigobjek Kubernetes. - fluxconfig-agent: Bertanggung jawab untuk mengawasi Azure untuk sumber daya baru atau yang diperbarui
fluxConfigurations, dan untuk memulai konfigurasi Flux terkait di kluster. Selain itu, bertanggung jawab untuk mendorong perubahan status Fluks dalam kluster kembali ke Azure untuk setiapfluxConfigurationssumber daya. - fluxconfig-controller: Mengawasi
fluxconfigs.clusterconfig.azure.comsumber daya kustom dan merespons perubahan dengan konfigurasi mesin GitOps baru atau yang diperbarui di kluster.
Catatan
microsoft.flux Ekstensi ini diinstal di flux-system namespace layanan dan memiliki cakupan di seluruh kluster. Opsi untuk menginstal ekstensi ini di cakupan namespace tidak tersedia, dan upaya untuk menginstal pada cakupan namespace akan gagal dengan kesalahan 400.
Konfigurasi fluks
Anda membuat sumber daya konfigurasi Flux (Microsoft.KubernetesConfiguration/fluxConfigurations) untuk mengaktifkan manajemen GitOps kluster dari repositori Git atau sumber Bucket Anda. Saat Anda membuat fluxConfigurations sumber daya, nilai yang Anda berikan untuk parameter, seperti repositori Git target, digunakan untuk membuat dan mengonfigurasi objek Kubernetes yang memungkinkan proses GitOps di kluster tersebut. Untuk memastikan keamanan data, fluxConfigurations data sumber daya disimpan dienkripsi saat tidak aktif dalam database Azure Cosmos DB oleh layanan Konfigurasi Kluster.
Agen fluxconfig-agent dan fluxconfig-controller , diinstal dengan microsoft.flux ekstensi , mengelola proses konfigurasi GitOps.
fluxconfig-agent bertanggung jawab untuk:
- Polling layanan sarana data Konfigurasi Kubernetes untuk sumber daya baru atau yang diperbarui
fluxConfigurations. - Membuat atau memperbarui
FluxConfigsumber daya kustom di kluster dengan informasi konfigurasi. FluxConfigMengawasi sumber daya kustom dan mendorong perubahan status kembali ke sumber daya Azure fluxConfiguration terkait.
fluxconfig-controller bertanggung jawab untuk:
- Tonton pembaruan status ke sumber daya kustom Fluks yang dibuat oleh terkelola
fluxConfigurations. - Membuat pasangan kunci privat/publik yang ada selama masa
fluxConfigurationspakai . Kunci ini digunakan untuk autentikasi jika URL berbasis SSH dan jika pengguna tidak menyediakan kunci privat mereka sendiri selama pembuatan konfigurasi. - Membuat rahasia autentikasi kustom berdasarkan data private-key/http basic-auth/known-hosts/no-auth yang disediakan pengguna.
- Menyiapkan RBAC (akun layanan yang disediakan, pengikatan peran yang dibuat/ditetapkan, peran dibuat/ditetapkan).
GitRepositoryMembuat atauBucketsumber daya kustom danKustomizationsumber daya kustom dari informasi diFluxConfigsumber daya kustom.
Setiap fluxConfigurations sumber daya di Azure akan dikaitkan dalam kluster Kubernetes dengan satu Fluks GitRepository atau Bucket sumber daya kustom dan satu atau beberapa Kustomization sumber daya kustom. Saat membuat fluxConfigurations sumber daya, Anda akan menentukan, di antara informasi lain, URL ke sumber (repositori Git atau Bucket) dan target sinkronisasi di sumber untuk setiap Kustomization. Anda dapat mengonfigurasi dependensi antara Kustomization sumber daya kustom untuk mengontrol urutan penyebaran. Selain itu, Anda dapat membuat beberapa sumber daya dengan cakupan fluxConfigurations namespace pada kluster yang sama untuk aplikasi dan tim aplikasi yang berbeda.
Catatan
fluxconfig-agentmemantau sumber daya baru atau yang diperbaruifluxConfigurationdi Azure. Agen memerlukan konektivitas ke Azure untuk status yangfluxConfigurationdiinginkan untuk diterapkan ke kluster. Jika agen tidak dapat tersambung ke Azure, akan ada keterlambatan dalam membuat perubahan dalam kluster hingga agen dapat tersambung. Jika kluster terputus dari Azure selama lebih dari 48 jam, maka permintaan ke kluster akan kehabisan waktu, dan perubahan harus diterapkan kembali di Azure.- Input pelanggan sensitif seperti kunci privat dan token/kata sandi disimpan selama kurang dari 48 jam di layanan Konfigurasi Kubernetes. Jika Anda memperbarui salah satu nilai ini di Azure, pastikan kluster Anda terhubung dengan Azure dalam waktu 48 jam.
GitOps dengan Private Link
Jika Anda telah menambahkan dukungan untuk tautan privat ke kluster Kubernetes dengan dukungan Azure Arc, microsoft.flux maka ekstensi berfungsi secara langsung dengan komunikasi kembali ke Azure. Untuk koneksi ke repositori Git, repositori Helm, atau titik akhir lain yang diperlukan untuk menyebarkan manifes Kubernetes, Anda harus memprovisikan titik akhir ini di belakang firewall atau mencantumkannya di firewall sehingga pengontrol Sumber Fluks dapat berhasil menjangkaunya.
Untuk informasi selengkapnya tentang cakupan tautan privat di Azure Arc, lihat dokumen ini.
Residensi data
Layanan Azure GitOps (Azure Kubernetes Configuration Management) menyimpan/memproses data pelanggan. Secara default, data pelanggan direplikasi ke wilayah berpasangan. Untuk wilayah Singapura, Asia Timur, dan Brasil Selatan, semua data pelanggan disimpan dan diproses di wilayah tersebut.
Langkah berikutnya
Lanjutkan ke tutorial berikutnya untuk mempelajari cara mengaktifkan GitOps pada kluster Kubernetes yang didukung AKS atau Azure Arc


