Bangun proyek CNCF dengan menggunakan Azure Kubernetes Service

Azure Kubernetes Service (AKS)

Artikel ini menunjukkan cara mengkonseptualisasikan, merancang, membangun, dan menyebarkan aplikasi yang menggunakan proyek dari Cloud Native Computing Foundation (CNCF) setelah Anda menerapkan Azure Kubernetes Service (AKS). Arsitekturnya menggambarkan Aplikasi Proyek CNCF pada GitHub. Instruksi penyiapan di repo menyediakan langkah-langkah untuk menyebarkan arsitektur.

Sistem

Diagram arsitektur yang menunjukkan arsitektur referensi untuk membangun proyek CNCF.

Unduh file Visio arsitektur ini.

Beban kerja adalah aplikasi web sederhana yang dapat digunakan karyawan untuk mengirimkan dan melihat laporan pengeluaran. Ketika seorang karyawan mengirimkan laporan pengeluaran, manajer karyawan tersebut menerima email.

Alur kerja

Alur Aplikasi

1. Karyawan mengakses aplikasi web melalui NGINX Ingress untuk mengirimkan biaya.

2. Aplikasi web memanggil aplikasi API untuk mengambil manajer karyawan.

3. Aplikasi web mendorong pesan yang dihasilkan untuk pembuatan laporan pengeluaran ke broker Knative.

4. Laporan pengeluaran disimpan di MySQL.

5. Knative memicu fungsi Email Dispatcher dengan pesan pengeluaran sebagai payload.

6. Email Dispatcher membuat pesan SendGrid.

7. SendGrid mengirim email ke manajer yang diambil untuk ditinjau.

Alur DevOps

a. Pengembang menulis atau memperbarui kode dalam Visual Studio Code.

b. Pengembang mendorong kode untuk GitHub dari ruang kerja lokal mereka di Visual Studio Code.

c. Github Webhook memicu alur Tekton yang mengkloning kode GitHub.

d. Alur membangun dan mendorong dan gambar kontainer ke registri Harbor.

e. Tekton menyebarkan aplikasi web, aplikasi API, dan aplikasi Email Dispatcher.

f. Prometheus menangkap metrik aplikasi.

g. Insinyur memantau metrik di Dasbor Grafana.

h. Insinyur DevOps memantau Dasbor Grafana.

Infrastruktur

i. Kluster AKS berdasarkan infrastruktur yang disajikan dalam garis besar AKS.

ii. Rook Ceph digunakan untuk penyimpanan kluster.

iii. Mesh layanan Linkerd.

iv. Jaeger untuk pelacakan aplikasi secara keseluruhan pada klaster Kubernetes.

Operasi klaster

Anda mungkin merasa bermanfaat untuk mengelola kluster dan bootstrapping kluster dengan menggunakan manajemen GitOps. Flux adalah operator GitOps yang populer. Ini sering dipasangkan dengan tindakan GitHub untuk memungkinkan validasi pada manifes yang diperbarui dan bagan Helm.

Komponen

Azure

Perangkat Lunak Sumber Terbuka

  • Kubernetes. CNCF. Mengotomatiskan penyebaran, penskalaan, dan pengelolaan aplikasi kontainer.
  • Flux. CNCF. Penyedia GitOps untuk pengiriman infrastruktur.
  • Rook. CNCF. Menyediakan manajemen penyimpanan untuk cluster.
  • Pelabuhan. CNCF. Registri kontainer untuk gambar.
  • Linkerd. CNCF. Service mesh yang terintegrasi dengan OpenFaaS, NGINX, Prometheus, dan Jaeger.
  • Prometheus. CNCF. Menangkap metrik aplikasi.
  • Jaeger. CNCF. Menyediakan pelacakan aplikasi secara keseluruhan di kluster Kubernetes.
  • Ksatria. CNCF. Digunakan untuk membangun aplikasi tanpa server dan Event Driven. Menyebarkan fungsi Email Dispatcher.
  • MySQL. Database yang menyimpan laporan pengeluaran.
  • NGINX. Kubernetes ingress controller yang digunakan karyawan untuk mengakses aplikasi web untuk mengirimkan laporan pengeluaran.
  • Tekton. Proyek Continuous Delivery Foundation yang digunakan untuk integrasi berkelanjutan / continuous deployment (CI/CD). Menyebarkan aplikasi web, aplikasi API, dan aplikasi Dispatcher Email.
  • Grafana. Dasbor untuk metrik aplikasi.
  • SendGrid. Layanan email eksternal yang mengirim email ke manajer untuk peninjauan laporan pengeluaran.
  • GitHub. Repositori kode, Jalur pipa Tekton menggunakan kode GitHub.
  • .NET Core. Digunakan untuk front end web dan API web.
  • Flux. Menyediakan manajemen GitOps.

Alternatif

Proyek ini menggunakan proyek lulusan dan inkubasi CNCF. Mungkin ada beberapa alternatif untuk layanan yang digunakan. Lihat situs web CNCF untuk alternatif. Berikut adalah beberapa sumber daya yang menggambarkan beberapa di antaranya:

Anda dapat mempertimbangkan berbagai layanan Azure sebagai alternatif. Misalnya, Perutean Aplikasi Web, Azure Container Registry, Azure Container Storage, Azure Monitor, layanan terkelola Azure Monitor untuk Prometheus, Azure Managed Grafana.

Microsoft juga mendukung proyek perangkat lunak sumber terbuka sebagai proyek Managed Addons/Derived di AKS, termasuk Nginx, Istio, Prometheus, Grafana, dan OpenEBS.

Detail skenario

Anda dapat menyebarkan arsitektur ini di klaster Kubernetes mana pun, bukan hanya AKS. Ini memberikan salah satu contoh fleksibilitas platform AKS. AKS memudahkan untuk menyebarkan kluster Kubernetes yang terkelola di Azure.

Setelah Anda meninjau artikel ini, Anda akan memiliki pemahaman yang baik tentang cara menyebarkan aplikasi khas yang sebagian besar terdiri dari proyek CNCF.

Kemungkinan kasus penggunaan

Kasus penggunaan lainnya ini memiliki pola desain yang serupa:

  • Membuat alur CI/CD untuk beban kerja berbasis wadah
  • Menggunakan GitOps untuk AKS

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.

  • Untuk klaster Kubernetes, anda memerlukan setidaknya kumpulan user-node 3 node dengan virtual machine (VM) SKU DS2_v2 atau lebih besar.
  • Volume yang menggunakan disk terkelola Azure yang tidak dapat dilampirkan di seluruh zona. Mereka harus berada di zona yang sama.
  • Instalasi Rook dapat memakan waktu antara 20 dan 25 menit. Pastikan cluster Ceph sepenuhnya disediakan sebelum Anda melanjutkan ke langkah berikutnya.
  • Pengaturan Jaeger memakan waktu sekitar 5 menit.
  • Dibutuhkan sekitar 12 menit agar Linkerd muncul di dasbor.

Pengoptimalan biaya

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

Anda dapat menggunakan kalkulator harga Azure untuk memperkirakan biaya. Berikut adalah beberapa pertimbangan harga untuk menjalankan proyek ini di Azure. Berlaku biaya bandwidth negligible.

Virtual Machine Scale Sets

VM yang digunakan dalam Azure Virtual Machine Scale Sets untuk klaster AKS menimbulkan biaya. Untuk informasi selengkapnya, lihat harga Kumpulan Skala Mesin Virtual.

Penyimpanan

Storage biaya berlaku untuk setiap disk data yang diperlukan oleh instalasi Rook. Untuk klaster AKS 3-node ini, konfigurasi Rook menggunakan dua cakram data per simpul: disk 1-GB dan disk 200-GB. Untuk informasi selengkapnya, lihat harga Storage biaya.

Load Balancer

Penyeimbang beban yang terkait dengan klaster AKS ini dikenakan biaya. Untuk informasi selengkapnya, lihat Harga Load Balancer.

Jaringan virtual

Jaringan virtual yang digunakan oleh klaster AKS yang menimbulkan biaya. Untuk informasi selengkapnya, lihat Harga Virtual Network.

Menyebarkan skenario ini

Sebarkan skenario ini dari GitHub repo Azure/cloud-native-app. Ikuti petunjuk penyiapan dalam urutan yang disediakan untuk menerapkan Aplikasi Proyek CNCF di lingkungan Anda.

Repo ini adalah proyek komunitas. Ini menerima dan menyetujui permintaan tarik (PR) untuk peningkatan dan modifikasi dari masyarakat.

Langkah berikutnya