Azure Functions pada ringkasan Azure Container Apps

Azure Functions di Azure Container Apps menyediakan lingkungan hosting serverless yang sepenuhnya dikelola yang menggabungkan kemampuan berbasis event dari Azure Functions dengan fitur Container Apps. Kemampuan ini meliputi orkestrasi berbasis Kubernetes, autoscaling bawaan yang didukung oleh Kubernetes Event-driven Autoscaling (KEDA), integrasi Dapr, dukungan beban kerja GPU, dukungan sidecar, konektivitas jaringan virtual (VNet), dan manajemen revisi.

Pendekatan ini berguna ketika Anda ingin fungsi Anda berjalan bersamaan dengan aplikasi kontainer lain seperti microservice, API, atau situs web. Mengkontainer aplikasi fungsi Anda juga dapat membantu saat Anda membutuhkan ketergantungan khusus atau ingin skala hingga nol untuk mengurangi biaya. Untuk tugas yang berat komputasi seperti inferensi AI, Container Apps mendukung hosting berbasis GPU melalui GPU serverless dan profil beban kerja khusus.

Sebagai fitur terintegrasi di Azure Container Apps, Anda dapat langsung menerapkan gambar kontainer Azure Functions ke Azure Container Apps dengan menggunakan Microsoft.App penyedia sumber daya dan mengatur kind=functionapp saat Anda memanggilaz containerapp create. Aplikasi yang dibuat dengan cara ini memiliki akses ke semua fitur Azure Container Apps. Di portal Azure, pilih opsi Optimize for Azure Functions saat pengaturan. Untuk informasi lebih lanjut, lihat Penerapan dan pengaturan.

Manfaat utama

Model hosting Container Apps dibangun berdasarkan fleksibilitas beban kerja kontainer dan sifat Azure Functions berbasis peristiwa. Ini menawarkan keuntungan utama berikut:

Tabel berikut membantu Anda membandingkan fitur Fungsi pada Aplikasi Kontainer dengan rencana Konsumsi Flex.

Fitur Container Apps Rencana Konsumsi Fleksibel
Skalakan ke nol ✅ Ya (melalui KEDA) ✅ Ya
Peluasan skala maksimum 1.000 (default 10, dapat dikonfigurasi) 1,000
Instans selalu aktif ✅ Ya (melalui minReplicas) ✅ Ya (melalui instans yang selalu siap)
Integrasi VNet ✅ Ya ✅ Ya
Dukungan kontainer kustom ✅ Ya (bawa gambar Anda sendiri) ❌ Terbatas (tidak ada membawa wadah sendiri)
Dukungan GPU ✅ Ya (melalui profil beban kerja khusus GPU tanpa server) ❌ Tidak
Fitur bawaan Dukungan fitur Container Apps. Misalnya, KEDA, Dapr, multi-revisi, mTLS, sidecar, kontrol ingress, dan banyak lagi Fitur khusus fungsi
Model tagihan Harga Container Apps: Paket konsumsi (vCPU, memori, permintaan) & Paket khusus (berbasis profil beban kerja) Waktu pelaksanaan + instans yang siap setiap saat

Untuk perbandingan lengkap Fungsi dalam Aplikasi Kontainer dibandingkan dengan paket Konsumsi Flex dan semua jenis paket serta hosting lainnya, lihat Opsi skala dan hosting Functions.

Skenario

Azure Functions pada Container Apps sangat ideal untuk berbagai kasus penggunaan, terutama ketika Anda memerlukan eksekusi berbasis peristiwa, fleksibilitas kontainer, atau integrasi yang aman dengan layanan lain:

  • API lini bisnis: Paket kustom perpustakaan, paket, dan API dengan Azure Functions untuk aplikasi lini bisnis.
  • Migrasi dan modernisasi: Migrasi aplikasi warisan dan/atau monolit lokal ke layanan mikro cloud-native pada kontainer.
  • Pemrosesan berbasis event: Tangani event dari Event Grid, Bus Layanan, Event Hubs, dan sumber event lainnya dengan menggunakan model pemrograman Azure Functions.
  • Beban kerja AI dan GPU: Proses video, gambar, transkrip, dan beban kerja intensif komputasi lainnya yang membutuhkan sumber daya GPU. Untuk informasi selengkapnya, lihat Gunakan GPU tanpa server di Azure Container Apps.
  • Microservices: Integrasikan Azure Functions dengan layanan yang dihosting Container Apps lainnya.
  • Kontainer kustom: Fungsi Paket dengan runtime atau sidecar kustom.
  • Aplikasi privat: Memproteksi Fungsi yang hanya bersifat internal menggunakan Jaringan Virtual (VNet) dan ingres internal.
  • .NET Aspire: Integrasi .NET Aspire dengan Azure Functions memungkinkan Anda mengembangkan, men-debug, dan mengatur proyek Azure Functions .NET sebagai bagian dari host aplikasi .NET Aspire. Pelajari lebih lanjut tentang Azure Functions dengan .NET Aspire
  • General Functions: Jalankan skenario standar Azure Functions yang didukung (misalnya, timer, pemrosesan file, pemicu database).

Penyebaran dan penyiapan

Untuk menerapkan Azure Functions di Azure Container Apps, kemas aplikasi fungsi Anda sebagai gambar kontainer kustom dan terapkan seperti aplikasi kontainer lainnya dengan satu perbedaan utama. Atur kind=functionapp properti saat Anda menggunakan template Azure CLI, Azure Resource Manager, atau Bicep. Untuk langkah dan contoh rinci, lihat Buat aplikasi fungsi.

az containerapp create \
  --resource-group $RESOURCE_GROUP_NAME \
  --name $CONTAINER_APP_NAME \
  --environment $ENVIRONMENT_NAME \
  --image mcr.microsoft.com/k8se/quickstart-functions:latest \
  --ingress external \
  --target-port 80 \
  --kind functionapp \
  --query properties.outputs.fqdn

Perintah ini mengembalikan URL aplikasi fungsi Anda. Salin URL ini dan tempelkan ke browser web.

Di portal Azure, pilih opsi Optimize for Azure Functions saat pembuatan aplikasi kontainer untuk menggunakan konfigurasi Azure Functions.

Screenshot portal Azure saat Anda membuat aplikasi kontainer yang telah dikonfigurasi sebelumnya untuk Azure Functions.

Semua metode penyebaran standar didukung, termasuk:

Untuk langkah dan contoh terperinci, lihat dokumentasi memulai resmi.

Penetapan harga dan penagihan

Azure Functions di Azure Container Apps mengikuti model harga yang sama dengan Azure Container Apps. Penagihan didasarkan pada jenis paket yang Anda pilih untuk lingkungan Anda, yang dapat berupa Konsumsi atau Khusus.

  • Paket konsumsi: Opsi komputasi tanpa server ini menagih Anda hanya untuk sumber daya yang digunakan aplikasi Anda saat berjalan.
  • Paket khusus: Opsi ini menyediakan sumber daya komputasi yang disesuaikan, menagih Anda untuk instans yang dialokasikan untuk setiap profil beban kerja.

Pilihan paket Anda menentukan bagaimana perhitungan penagihan dibuat. Aplikasi yang berbeda dalam lingkungan dapat menggunakan paket yang berbeda.

Detail penagihan:

  • Tidak ada biaya tambahan untuk menggunakan model pemrograman Azure Functions dalam Aplikasi Kontainer.
  • Durable Functions dan pola tingkat lanjut lainnya didukung dan ditagih di bawah model harga Container Apps yang sama. Untuk mekanika dan contoh penagihan terperinci, lihat dokumentasi Billing dalam dokumentasi Azure Container Apps.

Skala berbasis kejadian

Azure Functions di Container Apps mendukung semua runtime bahasa utama yang tersedia di Azure Functions, termasuk C#, JavaScript / TypeScript (Node.js), Python, Java, PowerShell, dan kontainer Kustom (bawa gambar Anda sendiri).

Azure Functions berjalan pada Azure Container Apps automatis mengonfigurasi aturan penskalaan berdasarkan sumber peristiwa, menghilangkan kebutuhan akan definisi aturan skala KEDA manual dalam pengalaman default. Itulah sebabnya tombol "Tambahkan aturan skala" di portal Azure dinonaktifkan untuk Functions di Container Apps. Namun, Anda masih dapat menentukan jumlah replika minimum dan maksimum untuk menetapkan batas penskalaan dan mempertahankan kontrol atas alokasi sumber daya.

Jika Anda perlu memberikan aturan skala Anda sendiri, Anda dapat memilih keluar dari aturan yang dihasilkan platform dengan menggunakan allowScalingRuleOverride. Untuk informasi selengkapnya, lihat Mengesampingkan aturan penskalaan KEDA yang dibuat otomatis untuk Azure Functions di Container Apps.

Platform secara otomatis menerjemahkan parameter pemicu Functions Anda (berasal dari atribut konfigurasi atau pemicu host.json) menjadi parameter penskala KEDA yang sesuai. Untuk referensi terperinci tentang cara konfigurasi pemicu Fungsi dipetakan ke parameter penskalaan KEDA, lihat pemetaan penskalaan KEDA Azure Functions.

Semua pemicu dan pengikatan Azure Functions standar didukung di Container Apps dengan pengecualian berikut:

Identitas terkelola didukung untuk pemicu dan pengikatan yang memungkinkannya. Mereka juga tersedia untuk:

Untuk pemicu yang tidak didukung, gunakan jumlah replika tetap (yaitu, atur minReplicas > 0) di Azure Functions pada Azure Container Apps. Untuk informasi selengkapnya, lihat panduan pengembang Functions.

Penskalaan dan performa

Azure Functions pada Container Apps menskalakan secara otomatis berdasarkan peristiwa menggunakan KEDA secara default. Anda masih dapat mengatur replika min/maks untuk mengontrol perilaku penskalaan. Anda juga dapat menggunakan allowScalingRuleOverride untuk menyediakan aturan skala kustom.

  • penskalaan berbasis Event: Secara otomatis menskalakan berdasarkan pemicu seperti Event Grid, Bus Layanan, atau HTTP.
  • Skalakan ke nol: Aplikasi yang tidak aktif diskalakan ke nol untuk menghemat biaya.
  • Kontrol mulai dingin: Pelajari tentang mengurangi waktu startup dingin pada Azure Container Apps.
  • Konkurensi: Setiap instans dapat memproses beberapa peristiwa secara paralel.
  • Skala tinggi: Peluasan skala ke 1.000 instans per aplikasi (defaultnya adalah 10).
  • Dukungan GPU: Jalankan beban kerja komputasi berat seperti inferensi AI menggunakan simpul yang didukung GPU.

Hal ini membuat Aplikasi Kontainer ideal untuk beban kerja yang bersifat tiba-tiba dan konsisten. Untuk informasi lebih lanjut, lihat Tetapkan aturan penskalaan di Azure Container Apps

Jaringan dan keamanan

Azure Functions di Container Apps menggunakan fitur jaringan dan keamanan Container Apps:

  • Integrasi VNet: Akses sumber daya privat dengan aman melalui titik akhir internal dan database privat.
  • Identitas terkelola: Autentikasi dengan layanan Azure menggunakan identitas yang ditetapkan sistem atau pengguna. Anda tidak perlu mengelola rahasia atau string koneksi.
  • Dukungan Dapr: Aktifkan pub/sub, pengelolaan status, dan pemanggilan layanan yang aman melalui sidecar Dapr. Untuk informasi selengkapnya, lihat API Layanan Mikro yang didukung oleh Dapr.
  • Ingress dan TLS: Mengekspos titik akhir HTTP yang aman dengan TLS/mTLS, domain kustom, atau tetap internal.
  • Isolasi lingkungan: Fungsi berbagi batas lingkungan Container Apps untuk komunikasi yang aman dan terbatas.

Pemantauan dan pencatatan

Azure Functions di Container Apps terintegrasi dengan alat observabilitas Azure untuk pelacakan kinerja dan diagnosis masalah:

  • Application Insights: Menyediakan telemetri untuk permintaan, dependensi, pengecualian, dan jejak kustom. Untuk informasi selengkapnya, lihat Monitor Azure Functions.
  • Log Analytics: Menangkap peristiwa siklus hidup kontainer dan skala, seperti FunctionsScalerInfo entri. Untuk informasi lebih lanjut, lihat Application logging di Azure Container Apps.
  • Pengelogan kustom: Mendukung kerangka kerja standar seperti ILogger dan pengelogan konsol untuk output terstruktur.
  • Pemantauan terpusat: Lingkungan Container Apps menawarkan dasbor dan pemberitahuan terpadu di semua aplikasi.

Variabel lingkungan

Azure Functions berjalan di Container Apps memiliki akses ke variabel lingkungan yang disediakan sistem. Variabel lingkungan hidup CONTAINER_NAME secara otomatis diatur ke nama replika untuk aplikasi fungsi Anda. Gunakan variabel ini untuk pengelogan, korelasi, dan penelusuran kesalahan dalam skenario multireplika.

Untuk daftar lengkap variabel lingkungan yang disediakan sistem, lihat Variabel lingkungan di Azure Container Apps.

Pertimbangan

Ingatlah pertimbangan lain ini saat menggunakan Azure Functions di Azure Container Apps:

  • Persyaratan ingress untuk autoscaling: Untuk mengaktifkan skala otomatis berdasarkan event, aktifkan ingress, baik secara publik maupun dalam lingkungan internal Container Apps.
  • Akun penyimpanan wajib: Setiap aplikasi fungsi yang dipasang di Container Apps harus terhubung ke akun penyimpanan. Akun penyimpanan ini mengelola trigger, log, dan status. Tinjau panduan akun penyimpanan untuk praktik terbaik.
  • Penyimpanan multi-revisi: Saat menyebarkan dengan beberapa revisi aktif, tetapkan akun penyimpanan khusus untuk setiap revisi. Menggunakan akun penyimpanan khusus membantu mencegah konflik dan memastikan isolasi yang tepat. Atau, jika Anda tidak memerlukan revisi bersamaan, pertimbangkan untuk menggunakan mode revisi tunggal default untuk manajemen yang disederhanakan.
  • Pemicu multi-revisi: Jika Anda menggunakan mode multi-revisi dengan pemicu berbasis pull, gunakan sumber peristiwa yang berbeda untuk setiap revisi untuk menghindari konflik yang terkait dengan konsumen yang bersaing. Fungsi yang menggunakan pemicu Azure Queue Storage, Azure Event Hubs, Azure Service Bus, atau Durable Functions adalah contoh pemicu berbasis pull.
  • Latensi start dingin: Ketika aplikasi kontainer Anda mengurangi skala menjadi nol selama periode diam, permintaan pertama setelah tidak aktif mengalami start dingin. Pelajari selengkapnya tentang mengurangi waktu startup dingin.
  • Integrasi Application Insights: Untuk memantau dan mendiagnosis aplikasi fungsi Anda, hubungkan ke Application Insights. Untuk informasi lebih lanjut, lihat Integrasi Application Insights dengan Functions.
  • Proksi fungsi: Tidak didukung. Untuk skenario gateway API, integrasikan dengan Azure API Management sebagai gantinya.
  • Slot penyebaran: Slot pengujian dan produksi tidak tersedia. Gunakan strategi penyebaran biru-hijau untuk rilis tanpa waktu henti.
  • Kunci akses Functions: Menggunakan portal untuk menghasilkan kunci akses Functions tidak didukung. Pertimbangkan untuk menggunakan Azure Key Vault untuk menyimpan kunci. Anda juga dapat menggunakan opsi berikut untuk mengamankan titik akhir HTTP dalam produksi:
  • Batas kuota dan sumber daya: Lingkungan Container Apps memiliki batas default pada jumlah memori, CPU, dan instans per wilayah. Untuk informasi selengkapnya, lihat batas lingkungan dan kuota default. Jika beban kerja Anda memerlukan lebih banyak sumber daya, Anda dapat meminta penambahan kuota.
  • Konfigurasi aturan skala biasa: Tombol "Tambahkan aturan skala" di portal Azure dinonaktifkan untuk Azure Functions yang dihosting di Aplikasi Kontainer karena aturan penskalaan dikonfigurasi secara otomatis berdasarkan sumber peristiwa. Definisi aturan KEDA manual tidak diperlukan dalam penyiapan ini.

Kirim Umpan Balik

Kirimkan masalah atau permintaan fitur ke repositori Azure Container Apps GitHub.

Langkah Berikutnya / Sumber Daya Lebih Lanjut

Untuk terus belajar dan membangun dengan Azure Functions di Container Apps, jelajahi sumber daya berikut:

  • Memulai: Panduan langkah demi langkah untuk menyebarkan dan mengonfigurasi Azure Functions di Azure Container Apps.
  • dokumentasi Azure Container Apps: Referensi lengkap untuk fitur Container Apps termasuk penskalaan, jaringan, Dapr, dan profil beban kerja.
  • harga Azure Container Apps: Detail tentang penagihan berbasis konsumsi dan biaya paket Khusus.
  • Opsi hosting Azure Functions: Perbandingan paket hosting termasuk Container Apps, Flex Consumption, Premium, dan Hosting Khusus.
  • Azure Functions panduan pengembang: Mendalami pemicu, pengikatan, perilaku runtime, dan konfigurasi.