Bagikan melalui


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.

  1. (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.

  2. 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 daya ScaledObject, dan Secrets, yang mencakup variabel lingkungan yang diimpor dari file local.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:

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: