Menyebarkan dan mengoperasikan aplikasi dengan AKS yang diaktifkan oleh Arc di Azure Stack HCI atau Windows Server

Azure Kubernetes Service (AKS)
Azure Stack HCI
Azure Arc
GitHub
Azure Pipelines

Informasi dalam artikel ini memberikan rekomendasi untuk membangun alur penyebaran aplikasi untuk aplikasi kontainer di Azure Kubernetes Service yang diaktifkan oleh Azure Arc. Aplikasi dapat berjalan di Azure Stack HCI atau Windows Server. Secara khusus, panduannya adalah untuk penyebaran yang menggunakan Azure Arc dan GitOps.

Penting

Informasi dalam artikel ini berlaku untuk AKS di Azure Stack HCI versi 22H2, dan AKS-HCI di Windows Server. Versi terbaru AKS berjalan di Azure Stack HCI 23H2. Untuk informasi selengkapnya tentang versi terbaru, lihat dokumentasi AKS di Azure Stack HCI versi 23H2.

Sistem

Diagram yang memperlihatkan arsitektur untuk kluster AKS yang berjalan di Azure Stack HCI atau Windows Server.

Unduh file Visio arsitektur ini.

Alur kerja

Arsitektur ini menggambarkan implementasi yang menyebarkan aplikasi dalam kontainer pada kluster AKS yang berjalan di Azure Stack HCI atau Windows Server. Ini menggunakan GitOps untuk mengelola infrastruktur sebagai kode (IaC).

  1. Operator menyiapkan infrastruktur lokal di Azure Stack HCI atau pada perangkat keras Windows Server yang mampu menghosting kluster AKS.
  2. Secara lokal, administrator menyebarkan kluster AKS pada infrastruktur Azure Stack HCI atau Windows Server dan menghubungkan kluster ke Azure dengan menggunakan Azure Arc. Untuk mengaktifkan GitOps, administrator juga menyebarkan ekstensi Flux dan konfigurasinya ke kluster AKS.
  3. Konfigurasi GitOps memfasilitasi IaC. Konfigurasi GitOps ini mewakili status kluster AKS yang diinginkan dan menggunakan informasi yang disediakan oleh administrasi lokal. Administrasi lokal mengacu pada alat manajemen, antarmuka, dan praktik yang disediakan oleh kluster AKS yang disebarkan di Azure Stack HCI atau Windows Server.
  4. Administrator mendorong konfigurasi GitOps ke repositori Git. Anda juga dapat menggunakan repositori Helm atau Kustomize. Komponen Flux dalam kluster AKS memantau repositori untuk perubahan, mendeteksi dan menerapkan pembaruan sesuai kebutuhan.
  5. Ekstensi Flux di kluster AKS menerima pemberitahuan dari alur GitOps ketika perubahan dilakukan pada konfigurasi di repositori. Ini secara otomatis memicu penyebaran konfigurasi yang diinginkan dengan menggunakan bagan Helm atau Kustomisasi.
  6. Perubahan aplikasi dalam bentuk konfigurasi atau kode baru atau yang diperbarui didorong ke repositori yang ditunjuk, termasuk pembaruan gambar kontainer yang sesuai. Pembaruan gambar kontainer ini didorong ke registri kontainer privat atau publik.
  7. Operator Flux di kluster AKS mendeteksi perubahan di repositori dan memulai penyebarannya ke kluster.
  8. Perubahan diimplementasikan dengan cara bergulir pada kluster untuk memastikan waktu henti minimal dan mempertahankan status kluster yang diinginkan.

Komponen

  • Azure Stack HCI adalah solusi infrastruktur hyperconverged (HCI) yang dapat Anda gunakan untuk menjalankan beban kerja virtual lokal. Ini menggunakan kombinasi teknologi komputasi, penyimpanan, dan jaringan yang ditentukan perangkat lunak. Ini dibangun di atas Windows Server dan terintegrasi dengan layanan Azure untuk memberikan pengalaman cloud hibrid.
  • AKS di Azure Stack HCI memungkinkan pengembang dan admin menggunakan AKS untuk menyebarkan dan mengelola aplikasi kontainer di Azure Stack HCI.
  • Azure Arc adalah solusi manajemen cloud hibrid yang dapat Anda gunakan untuk mengelola server, kluster Kubernetes, dan aplikasi di lingkungan lokal, multicloud, dan tepi. Ini memberikan pengalaman manajemen terpadu dengan memungkinkan Anda mengatur sumber daya di berbagai lingkungan dengan menggunakan layanan manajemen Azure seperti Azure Policy, Microsoft Defender untuk Cloud, dan Azure Monitor.
  • Repositori Git, Helm, dan Bitbucket (publik dan privat) dapat menghosting konfigurasi GitOps, termasuk repositori Azure DevOps dan GitHub.
  • Registri kontainer (publik dan privat), termasuk Azure Container Registry dan Docker Hub, gambar kontainer host.
  • Azure Pipelines adalah layanan integrasi berkelanjutan (CI) dan pengiriman berkelanjutan (CD) yang mengotomatiskan pembaruan repositori dan registri.
  • Flux adalah alat penyebaran GitOps sumber terbuka yang dapat digunakan kluster Kubernetes dengan dukungan Azure Arc. Anda dapat menggunakan koneksi Azure Arc untuk mengimplementasikan komponen kluster yang melacak perubahan pada repositori Git, Helm, atau Kustomize yang Anda tentukan dan terapkan ke kluster lokal. Operator Flux secara berkala (atau berdasarkan pemicu) meninjau konfigurasi kluster yang ada untuk memastikan bahwa operator tersebut cocok dengan yang ada di repositori. Jika mendeteksi perbedaan, Flux memulihkannya dengan menerapkan atau, dalam kasus penyimpangan konfigurasi, menerapkan kembali konfigurasi yang diinginkan.

Detail skenario

Menjalankan kontainer dalam skala besar memerlukan orkestrator untuk mengotomatiskan penjadwalan, penyebaran, jaringan, penskalaan, pemantauan kesehatan, dan manajemen kontainer. Kubernetes adalah orkestrator yang umum digunakan untuk penyebaran kontainer baru. Seiring bertambahnya jumlah kluster dan lingkungan Kubernetes, mengelolanya secara individual dapat menjadi tantangan. Menggunakan layanan berkemampuan Azure Arc seperti Kubernetes, GitOps, Azure Monitor, dan Azure Policy dengan dukungan Azure Arc mengurangi beban administratif dan membantu mengatasi tantangan ini.

Pertimbangan

Pertimbangan ini mengimplementasikan pilar Azure Well-Architected Framework, yang merupakan serangkaian tenet panduan yang dapat digunakan untuk meningkatkan kualitas beban kerja. Untuk informasi selengkapnya, lihat Microsoft Azure Well-Architected Framework.

Well-Architected Framework menyediakan prinsip panduan yang membantu menilai dan mengoptimalkan manfaat solusi berbasis cloud. Mengingat integrasi yang melekat dari penyebaran AKS lokal dengan teknologi Azure, sebaiknya terapkan rekomendasi kerangka kerja ke desain dan implementasi GitOps Anda.

Keandalan

Keandalan memastikan bahwa aplikasi Anda dapat memenuhi komitmen yang Anda buat kepada pelanggan Anda. Untuk informasi selengkapnya, lihat Gambaran Umum pilar keandalan.

  • Gunakan fitur ketersediaan tinggi Kubernetes untuk memastikan keandalan tinggi dalam solusi berbasis GitOps.
  • Gunakan Flux v2 untuk meningkatkan ketersediaan aplikasi lebih lanjut dalam penyebaran yang mencakup beberapa lokasi atau kluster.
  • Gunakan penyebaran otomatis untuk mengurangi kemungkinan kesalahan manusia.
  • Integrasikan alur CI/CD ke dalam arsitektur Anda untuk meningkatkan efektivitas pengujian otomatis.
  • Lacak semua perubahan kode sehingga Anda dapat dengan cepat mengidentifikasi dan menyelesaikan masalah. Untuk melacak perubahan operasional ini, gunakan kemampuan bawaan GitHub atau Azure DevOps. Anda dapat menggunakan alat ini untuk menerapkan kebijakan dan otomatisasi untuk memastikan perubahan dilacak, mengikuti proses persetujuan yang sesuai, dan dapat dipertahankan.

Keamanan

Keamanan memberikan jaminan terhadap serangan yang disukai dan penyalahgunaan data dan sistem berharga Anda. Untuk informasi selengkapnya, lihat Gambaran Umum pilar keamanan.

  • Pahami manfaat keamanan arsitektur. Dengan alur Flux v2, Kustomize, GitOps, dan DevOps, perubahan operasional diterapkan melalui otomatisasi. Anda dapat mengontrol dan mengaudit kode yang menerapkan praktik operasional ini dengan memanfaatkan mekanisme seperti perlindungan cabang, peninjauan permintaan pull, dan riwayat yang tidak dapat diubah. Pendekatan IaC menghapus kebutuhan untuk mengelola izin untuk mengakses infrastruktur dan mendukung prinsip hak istimewa paling sedikit. Dukungan fluks untuk cakupan konfigurasi berbasis namespace memfasilitasi skenario multipenyewa.

  • Memahami enkripsi. Untuk membantu memastikan keamanan data, layanan konfigurasi kluster menyimpan data sumber daya konfigurasi Flux dalam database Azure Cosmos DB dan mengenkripsinya saat tidak aktif.

  • Pertimbangkan untuk menggunakan titik akhir privat. GitOps mendukung Azure Private Link untuk konektivitas ke layanan terkait Azure Arc.

Menggunakan kebijakan Azure dan Azure Arc

Azure Arc memperluas cakupan manajemen sumber daya di luar Azure. Cakupan yang diperluas memberikan berbagai manfaat yang berlaku untuk server fisik dan virtual. Dalam konteks AKS, manfaat ini meliputi:

  • Pemerintahan. Azure Arc dapat memberlakukan tata kelola runtime yang memengaruhi kluster AKS dan pod mereka dengan menggunakan Azure Policy untuk Kubernetes dan pelaporan terpusat dari kepatuhan kebijakan yang sesuai. Anda dapat menggunakan kemampuan ini untuk, misalnya, memberlakukan penggunaan HTTPS untuk lalu lintas ingress yang menargetkan kluster Kubernetes, atau untuk memastikan bahwa kontainer hanya mendengarkan pada port tertentu yang Anda tetapkan.
  • Operasi yang ditingkatkan. Azure Arc menyediakan dukungan yang ditingkatkan untuk konfigurasi kluster otomatis melalui GitOps.

Azure Policy memfasilitasi manajemen GitOps terpusat melalui definisi kebijakan Sebarkan GitOps ke kluster Kubernetes bawaan. Setelah Anda menetapkan kebijakan ini, kebijakan ini secara otomatis menerapkan konfigurasi berbasis GitOps yang Anda pilih ke kluster Kubernetes berkemampuan Azure Arc yang Anda tentukan, jika sumber daya Azure Resource Manager mereka berada dalam cakupan penugasan.

Pengoptimalan biaya

Pengoptimalan biaya adalah tentang mengurangi pengeluaran yang tidak perlu dan meningkatkan efisiensi operasional. Untuk informasi selengkapnya, lihat Gambaran umum pilar pengoptimalan biaya.

  • Gunakan otomatisasi yang disediakan GitOps untuk meminimalkan overhead manajemen dan pemeliharaan Anda. Model operasional yang disederhanakan membutuhkan lebih sedikit upaya untuk mempertahankan dan menghasilkan pengurangan biaya operasional.

  • Gunakan AKS yang diaktifkan oleh Arc. AKS Arc menyediakan dukungan bawaan untuk penskalaan otomatis sumber daya komputasi dan peningkatan kepadatan beban kerja yang melekat pada kontainerisasi. Penskalaan otomatis dapat membantu Anda menyesuaikan ukuran infrastruktur fisik dan mempercepat inisiatif konsolidasi pusat data, yang dapat membantu Anda menghemat uang.

Keunggulan operasional

Keunggulan operasional mencakup proses operasi yang menyebarkan aplikasi dan membuatnya tetap berjalan dalam produksi. Untuk informasi selengkapnya, lihat Gambaran umum pilar keunggulan operasional.

  • Gunakan repositori GitOps untuk memberikan satu sumber kebenaran yang menyimpan semua aplikasi AKS dan data infrastruktur kluster. Repositori ini dapat berfungsi sebagai satu-satunya komponen yang menerapkan perubahan pada kluster.

  • Manfaatkan integrasi GitOps dengan pendekatan DevOps ke infrastruktur untuk mempersingkat waktu yang diperlukan untuk memberikan rilis perangkat lunak baru. Kami juga menyarankan agar Anda menggunakan Azure Resource Manager dan Azure Arc untuk membangun model operasional yang konsisten untuk beban kerja kontainer berbasis cloud dan lokal. Untuk mengontrol konfigurasi GitOps pada tingkat yang berbeda, gunakan Azure Policy bersama dengan kemampuan operator Flux. Dengan demikian, Anda dapat membangun kontrol di tingkat perusahaan, pada tingkat kluster AKS individual, atau bahkan pada tingkat namespace tertentu dalam kluster.

  • Buat konfigurasi GitOps yang dilingkup ke kluster (atau ke beberapa kluster) untuk menerapkan garis besar untuk komponen infrastruktur dalam kontainer, seperti pengontrol ingress, jala layanan, produk keamanan, dan solusi pemantauan. Melakukannya dapat membantu Anda memastikan bahwa kluster Anda memenuhi persyaratan infrastruktur dasar.

  • Buat konfigurasi GitOps tingkat namespace yang memungkinkan Anda mengontrol sumber daya beban kerja Anda pada tingkat yang lebih terperinci (misalnya, pod, layanan, dan rute masuk), dan oleh karena itu pastikan bahwa beban kerja Anda sesuai dengan standar aplikasi. Dengan mengikuti panduan ini, Anda dapat memastikan bahwa penyebaran dan manajemen aplikasi AKS Arc tetap efisien, efektif, dan hemat biaya.

Menggunakan GitOps

GitOps adalah kecocokan yang bagus untuk manajemen kluster AKS. Kubernetes didasarkan pada model deklaratif. Status kluster dan komponennya dijelaskan dalam kode. GitOps menyimpan kode tersebut di repositori Git dan menggunakannya untuk menentukan status lingkungan target yang diinginkan.

Perubahan kode tunduk pada kontrol versi, audit, dan tinjauan dan persetujuan opsional. Anda dapat menggunakan tinjauan dan persetujuan untuk secara otomatis memicu pembaruan infrastruktur AKS dan beban kerja kontainer. GitOps menggunakan model penarikan, di mana sekumpulan komponen kluster khusus melakukan polling status repositori. Ketika perubahan terdeteksi, komponen GitOps yang dihosting AKS mengambil dan menerapkan konfigurasi baru.

GitOps secara signifikan meminimalkan kebutuhan akan manajemen kluster langsung, menghasilkan model operasional yang disederhanakan dan juga peningkatan keamanan. GitOps mendukung prinsip hak istimewa paling sedikit. Misalnya, GitOps menghapus kebutuhan untuk memodifikasi kluster secara manual melalui kubectl, sehingga diperlukan lebih sedikit hak istimewa. GitOps juga memberikan umpan balik awal tentang perubahan kebijakan yang diusulkan. Umpan balik awal sangat berharga bagi pengembang karena membantu mereka mengurangi risiko dan biaya yang terkait dengan bug.

GitOps menyederhanakan standardisasi konfigurasi kluster di seluruh organisasi Anda untuk memenuhi persyaratan kepatuhan dan tata kelola. Anda dapat menentukan konfigurasi dasar yang ingin Anda terapkan ke setiap kluster dan komponennya, termasuk, misalnya, kebijakan jaringan, pengikatan peran, dan kebijakan keamanan pod. Untuk menerapkan konfigurasi tersebut di semua kluster dengan dukungan Azure Arc, Anda dapat menggunakan Azure Policy, menargetkan grup sumber daya atau langganan. Kebijakan ini berlaku secara otomatis ke sumber daya yang ada dan juga untuk sumber daya yang dibuat setelah penetapan kebijakan.

GitOps menautkan kluster Anda dengan satu atau beberapa repositori Git. Anda dapat menggunakan setiap repositori untuk menjelaskan berbagai aspek konfigurasi kluster. Model deklaratif yang dihasilkan memfasilitasi otomatisasi provisi dan manajemen sumber daya Kubernetes seperti namespace atau penyebaran melalui file manifes mereka. Anda juga dapat menggunakan bagan Helm, yang, bersama dengan Flux v2 dan Kustomize, memfasilitasi penyebaran otomatis aplikasi dalam kontainer, atau Menyesuaikan file yang menjelaskan perubahan khusus lingkungan.

Gunakan Fluks

Fluks diimplementasikan sebagai operator Kubernetes. Ini menggunakan sekumpulan pengontrol dan API deklaratif yang sesuai. Pengontrol mengelola sekumpulan sumber daya kustom yang bekerja secara kolektif untuk memberikan fungsionalitas yang dimaksudkan.

GitOps diaktifkan dalam kluster Kubernetes dengan dukungan Azure Arc sebagai Microsoft.KubernetesConfiguration/extensions/microsoft.flux ekstensi kluster. Setelah menginstal microsoft.flux ekstensi kluster, Anda dapat membuat satu atau beberapa fluxConfigurations sumber daya yang menyinkronkan konten sumber konfigurasi ke kluster dan mendamaikan kluster ke status yang diinginkan.

Secara default, microsoft.flux ekstensi menginstal pengontrol Fluks (Sumber, Kustomisasi, Helm, dan Pemberitahuan) dan Definisi Sumber Daya Kustom FluxConfig (CRD), fluxconfig-agent, dan fluxconfig-controller. Anda juga dapat memilih pengontrol mana yang ingin Anda instal dan dapat secara opsional menginstal Flux image-automation dan image-reflector pengontrol, yang memfasilitasi pembaruan dan pengambilan gambar Docker.

Saat Anda membuat fluxConfigurations sumber daya, nilai yang Anda berikan untuk parameter, seperti repositori Git target, digunakan untuk membuat dan mengonfigurasi objek Kubernetes yang mengaktifkan fungsionalitas GitOps pada kluster.

Saat Anda menyebarkan dan mengonfigurasi ekstensi kluster Flux v2, ekstensi tersebut menyediakan komponen dan fungsionalitas berikut:

  • source-controller. Memantau sumber konfigurasi kustom, seperti repositori Git, repositori Helm, dan layanan penyimpanan cloud seperti wadah S3, dan menyinkronkan dan mengotorisasi terhadap sumber-sumber ini.
  • kustomize-controller. Memantau sumber daya kustom yang didasarkan pada CRD Kustomisasi, yang berisi manifes Kubernetes dan file YAML mentah. Menerapkan manifes dan file YAML ke kluster.
  • helm-controller. Memantau sumber daya kustom yang didasarkan pada bagan dan disimpan di repositori Helm yang muncul oleh source-controller.
  • notification-controller. Mengelola peristiwa masuk yang berasal dari repositori Git dan peristiwa keluar, seperti yang menargetkan Microsoft Teams atau Slack.
  • FluxConfig CRD. Mewakili sumber daya kustom yang menentukan objek Kubernetes khusus Fluks.
  • fluxconfig-agent. Mendeteksi sumber daya konfigurasi Fluks baru dan yang diperbarui. Memulai pembaruan konfigurasi yang sesuai pada kluster. Mengkomunikasikan perubahan status ke Azure.
  • fluxconfig-controller. fluxconfigs Memantau sumber daya kustom.

Flux versi 2 menyediakan fitur tambahan ini:

Kategori Fitur
Manajemen infrastruktur dan beban kerja Manajemen dependensi penyebaran
Integrasi dengan kontrol akses berbasis peran Kubernetes (RBAC)
Penilaian kesehatan untuk kluster dan beban kerjanya
Pembaruan gambar kontainer otomatis ke Git, termasuk pemindaian gambar dan patching
Interoperabilitas dengan penyedia API Kluster
Keamanan dan tata kelola Pemberitahuan ke sistem eksternal (melalui pengirim webhook)
Validasi berbasis kebijakan, termasuk dukungan untuk Open Policy Agent Gatekeeper
Pemindaian dan patching gambar kontainer
Pemberitahuan ke sistem eksternal (melalui pengirim webhook)
Integrasi dengan alur GitOps lainnya Integrasi dengan berbagai penyedia Git, termasuk GitHub, GitLab, dan Bitbucket
Interoperabilitas dengan penyedia alur kerja, termasuk GitHub Actions

Untuk informasi selengkapnya, lihat Konfigurasi GitOps Flux v2 dengan AKS dan Kubernetes dengan dukungan Azure Arc.

Efisiensi kinerja

Efisiensi performa adalah kemampuan beban kerja Anda untuk diskalakan agar memenuhi permintaan yang diberikan oleh pengguna dengan cara yang efisien. Untuk informasi selengkapnya, lihat Gambaran umum pilar efisiensi performa.

Beban kerja kluster mendapat manfaat dari skalabilitas dan kelincahan yang melekat pada platform Kubernetes. Flux v2 menawarkan kelincahan tambahan, mengurangi waktu yang diperlukan untuk pengiriman perangkat lunak end-to-end.

  • Optimalkan kluster Kubernetes dan penyiapan infrastruktur untuk beban kerja spesifik Anda. Kami menyarankan agar Anda bekerja dengan pengembang aplikasi untuk menentukan pengaturan yang diperlukan.
  • Gunakan fitur autoscaling di Kubernetes. Untuk informasi selengkapnya, lihat Penskalaan otomatis kluster di AKS yang diaktifkan oleh Azure Arc.
  • Tambahkan cache untuk mengoptimalkan aplikasi.
  • Menetapkan garis besar performa. Tolok ukur arsitektur Anda dan gunakan metrik dan alat pemantauan untuk mengidentifikasi masalah atau hambatan yang memengaruhi performa.

Kontributor

Artikel ini dikelola oleh Microsoft. Ini awalnya ditulis oleh kontributor berikut.

Penulis utama:

Kontributor lain:

Untuk melihat profil LinkedIn non-publik, masuk ke LinkedIn.

Langkah berikutnya