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:

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

Diagram showing the installation of the Flux extension for Azure Arc-enabled Kubernetes cluster.

Diagram showing the installation of the Flux extension for Azure Kubernetes Service cluster.

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.io sumber daya kustom. Menerapkan kustomisasi atau file YAML mentah dari sumber ke kluster.
  • Pengontrol Flux Helm: Mengawasi helm.toolkit.fluxcd.io sumber daya kustom. Mengambil bagan terkait dari sumber Repositori Helm yang muncul oleh pengontrol Sumber. HelmChart Membuat sumber daya kustom dan menerapkan HelmRelease dengan versi, nama, dan nilai yang ditentukan pelanggan yang diberikan ke kluster.
  • Pengontrol Pemberitahuan Fluks: Mengawasi notification.toolkit.fluxcd.io sumber 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.io
    • imagepolicies.image.toolkit.fluxcd.io
    • imagerepositories.image.toolkit.fluxcd.io
    • imageupdateautomations.image.toolkit.fluxcd.io
    • alerts.notification.toolkit.fluxcd.io
    • providers.notification.toolkit.fluxcd.io
    • receivers.notification.toolkit.fluxcd.io
    • buckets.source.toolkit.fluxcd.io
    • gitrepositories.source.toolkit.fluxcd.io
    • helmcharts.source.toolkit.fluxcd.io
    • helmrepositories.source.toolkit.fluxcd.io
    • helmreleases.helm.toolkit.fluxcd.io
    • fluxconfigs.clusterconfig.azure.com
  • FluxConfig CRD: Definisi Sumber Daya Kustom untuk fluxconfigs.clusterconfig.azure.com sumber daya kustom yang menentukan FluxConfig objek 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 setiap fluxConfigurations sumber daya.
  • fluxconfig-controller: Mengawasi fluxconfigs.clusterconfig.azure.com sumber 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

Diagram showing the installation of a Flux configuration in an Azure Arc-enabled Kubernetes or Azure Kubernetes Service cluster.

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 FluxConfig sumber daya kustom di kluster dengan informasi konfigurasi.
  • FluxConfig Mengawasi 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).
  • GitRepository Membuat atau Bucket sumber daya kustom dan Kustomization sumber daya kustom dari informasi di FluxConfig sumber 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-agent memantau sumber daya baru atau yang diperbarui fluxConfiguration di Azure. Agen memerlukan konektivitas ke Azure untuk status yang fluxConfiguration diinginkan 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.

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