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. Untuk penyebaran Kubernetes terkelola, pertimbangkan hosting Azure Container Apps dari 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:
- Dockerfile yang dibuat sebelumnya digunakan untuk membangun citra lokal untuk aplikasi fungsi.
- Citra lokal ditandai dan didorong ke registri kontainer tempat pengguna masuk.
- Manifes dibuat dan diterapkan pada kluster yang mendefinisikan sumber daya
Deployment
Kubernetes, sumber dayaScaledObject
, danSecrets
, yang mencakup variabel lingkungan yang diimpor dari filelocal.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:
Azure Functions Core Tools: menggunakan perintah
func kubernetes remove
.Helm: lihat langkah-langkah pencopotan pemasangan di situs KEDA.
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: