Azure Functions di Kubernetes dengan KEDA

Runtime Azure Functions memberikan fleksibilitas dalam hosting sesuai keinginan Anda. KEDA (Kubernetes-based Event Driven Autoscaling) cocok dengan runtime dan perkakas Azure Functions untuk memberikan skala berbasis kejadian di Kubernetes.

Penting

Menjalankan aplikasi fungsi kontainer di Kubernetes, baik dengan menggunakan KEDA atau dengan penyebaran langsung, adalah upaya sumber terbuka yang dapat Anda gunakan secara gratis. Dukungan upaya terbaik disediakan oleh kontributor dan dari komunitas dengan menggunakan masalah GitHub di repositori Azure Functions. Silakan gunakan masalah ini untuk melaporkan bug dan mengajukan permintaan fitur. Penyebaran aplikasi fungsi kontainer ke Azure Container Apps, yang berjalan pada kluster Kubernetes terkelola di Azure, saat ini dalam pratinjau. Untuk informasi selengkapnya, lihat Hosting Azure Container Apps azure Functions.

Cara kerja fungsi berbasis Kubernetes

Layanan Azure Functions terdiri dari dua komponen utama: runtime dan pengontrol skala. Runtime Functions berjalan dan mengeksekusi kode Anda. Runtime mencakup logika tentang cara memicu, mencatat, dan mengelola eksekusi fungsi. Runtime Azure Functions dapat berjalan di mana saja. Komponen lainnya adalah pengontrol skala. Pengontrol skala memantau laju kejadian yang menargetkan fungsi Anda, dan secara proaktif menskalakan jumlah instans yang menjalankan aplikasi Anda. Untuk mempelajari selengkapnya, lihat Skala dan hosting Azure Functions.

Fungsi berbasis Kubernetes menyediakan runtime Functions dalam kontainer Docker dengan penskalaan berbasis peristiwa melalui KEDA. KEDA dapat menskalakan ke 0 instans (ketika tidak ada kejadian) dan keluar ke n instans. Ini dilakukan dengan mengekspos metrik khusus untuk autoscaler Kubernetes (Horizontal Pod Autoscaler). Menggunakan kontainer Functions dengan KEDA kemungkinan mereplikasi kemampuan fungsi nirserver di kluster Kubernetes mana pun. Fungsi-fungsi ini juga dapat digunakan dengan fitur simpul virtual Azure Kubernetes Services (AKS) untuk infrastruktur nirserver.

Mengelola KEDA dan fungsi di Kubernetes

Untuk menjalankan Fungsi pada kluster Kubernetes, Anda harus menginstal komponen KEDA. Anda dapat menginstal komponen ini dengan salah satu cara berikut:

  • Azure Functions Core Tools: menggunakan perintah func kubernetes install.

  • Helm: Ada berbagai cara untuk menginstal KEDA di kluster Kubernetes, termasuk Helm. Opsi penyebaran didokumentasikan di situs KEDA.

Menyebarkan aplikasi fungsi ke Kubernetes

Anda dapat menyebarkan aplikasi fungsi apa pun ke kluster Kubernetes yang menjalankan KEDA. Karena fungsi Anda berjalan dalam kontainer Docker, proyek Anda memerlukan Dockerfile. Anda dapat membuat Dockerfile dengan menggunakan opsi --docker saat memanggil func init untuk membuat proyek. Jika Anda lupa melakukannya, Anda selalu dapat memanggil func init ​​lagi dari akar proyek Azure Functions Anda, kali ini menggunakan opsi --docker-only, seperti yang ditunjukkan pada contoh berikut.

func init --docker-only

Untuk mempelajari lebih lanjut tentang pembuatan file Docker, lihat referensi func init.

Untuk membangun citra dan menyebarkan fungsi ke Kubernetes, jalankan perintah berikut:

func kubernetes deploy --name <name-of-function-deployment> --registry <container-registry-username>

Dalam contoh ini, ganti <name-of-function-deployment> dengan nama aplikasi fungsi Anda.

Perintah penyebaran melakukan hal berikut:

  1. Dockerfile yang dibuat sebelumnya digunakan untuk membangun citra lokal untuk aplikasi fungsi.
  2. Citra lokal ditandai dan didorong ke registri kontainer tempat pengguna masuk.
  3. Manifes dibuat dan diterapkan pada kluster yang mendefinisikan sumber daya Deployment Kubernetes, sumber daya ScaledObject, dan Secrets, yang mencakup variabel lingkungan yang diimpor dari file local.settings.json Anda.

Untuk mempelajari lebih lanjut, lihat perintah func kubernetes deploy.

Menyebarkan aplikasi fungsi dari registri privat

Alur di atas juga berfungsi untuk registri privat. Jika Anda menarik citra kontainer dari registri privat, sertakan bendera --pull-secret yang mereferensikan rahasia Kubernetes yang memegang kredensial registri privat saat menjalankan func kubernetes deploy.

Menghapus aplikasi fungsi dari Kubernetes

Setelah menyebarkan, Anda dapat menghapus fungsi dengan menghapus Deployment, ScaledObject dan Secrets terkait yang dibuat.

kubectl delete deploy <name-of-function-deployment>
kubectl delete ScaledObject <name-of-function-deployment>
kubectl delete secret <name-of-function-deployment>

Mencopot pemasangan KEDA dari Kubernetes

Anda dapat menghapus KEDA dari kluster Anda dengan salah satu cara berikut:

Pemicu yang didukung di KEDA

KEDA memiliki dukungan untuk pemicu Azure Functions berikut ini:

Dukungan HTTP Trigger

Anda dapat menggunakan Azure Functions yang mengekspos pemicu HTTP, tetapi KEDA tidak mengelolanya secara langsung. Anda dapat memanfaatkan pemicu prometheus KEDA untuk menskalakan HTTP Azure Functions dari 1 hingga n instans.

Langkah berikutnya

Untuk informasi selengkapnya, lihat sumber daya berikut: