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 yang didukung penuh, 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 nol instans (ketika tidak ada peristiwa yang terjadi) dan keluar ke instans n . 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 membuat Dockerfile, Anda selalu dapat memanggil func init
lagi dari akar proyek kode Anda.
(Opsional) Jika Anda perlu membuat Dockerfile, gunakan
func init
perintah dengan--docker-only
opsi :func init --docker-only
Untuk mempelajari lebih lanjut tentang pembuatan file Docker, lihat referensi
func init
.func kubernetes deploy
Gunakan perintah untuk membangun citra dan menyebarkan aplikasi fungsi dalam kontainer ke Kubernetes: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 sebarkan melakukan tugas-tugas ini:- Dockerfile yang dibuat sebelumnya digunakan untuk membangun gambar lokal untuk aplikasi fungsi kontainer Anda.
- 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.
Menyebarkan aplikasi fungsi dari registri privat
Langkah-langkah penyebaran sebelumnya juga berfungsi untuk registri privat. Jika Anda menarik gambar kontainer dari registri privat, sertakan --pull-secret
bendera yang mereferensikan rahasia Kubernetes yang menyimpan 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 menggunakan pemicu KEDA prometheus untuk menskalakan HTTP Azure Functions dari satu ke n
instans.
Langkah berikutnya
Untuk informasi selengkapnya, lihat sumber daya berikut: