Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Azure Functions di Azure Container Apps menawarkan lingkungan hosting tanpa server yang dikelola sepenuhnya yang menyatukan kemampuan Azure Functions berbasis peristiwa dengan fitur Container Apps yang kuat. Integrasi ini mencakup kemampuan tingkat lanjut seperti orkestrasi berbasis Kubernetes, penskalaan otomatis bawaan yang didukung oleh KEDA (Penskalaan Otomatis Berbasis Peristiwa Kubernetes), integrasi Dapr (Distributed Application Runtime), dukungan beban kerja GPU, dukungan sidecar, konektivitas jaringan virtual (VNet), dan manajemen revisi.
Pendekatan ini berguna ketika Anda ingin Functions Anda berjalan bersama aplikasi kontainer lainnya seperti layanan mikro, API, atau situs web. Selanjutnya, kontainerisasi aplikasi fungsi Anda dapat membantu saat Anda membutuhkan dependensi kustom atau ingin memanfaatkan skala-ke-nol untuk penghematan biaya. Jika Anda menjalankan tugas komputasi berat seperti inferensi AI, Container Apps juga mendukung hosting berbasis GPU melalui penawaran GPU tanpa server dan profil beban kerja Khusus.
Sebagai fitur terintegrasi di Azure Container Apps, Anda dapat menyebarkan gambar Azure Functions langsung ke Azure Container Apps menggunakan Microsoft.App penyedia sumber daya dengan mengatur kind=functionapp saat memanggil az containerapp create. Aplikasi yang dibuat dengan cara ini memiliki akses ke semua fitur Azure Container Apps. Jika menyebarkan melalui portal Microsoft Azure, Anda dapat mengaktifkan opsi Optimalkan untuk aplikasi Functions selama penyiapan. Lihat bagian penyebaran dan penyiapan untuk detail selengkapnya.
Manfaat utama
Model hosting Container Apps dibangun berdasarkan fleksibilitas beban kerja kontainer dan sifat Azure Functions yang didorong peristiwa. Ini menawarkan keuntungan utama berikut:
- Jalankan Azure Functions sebagai kontainer dengan dependensi kustom dan tumpukan bahasa.
- Skalakan ke nol dan peluasan skala hingga 1000 instans menggunakan KEDA.
- Mengamankan jaringan dengan integrasi VNet penuh.
- Fitur Aplikasi Kontainer Tingkat Lanjut seperti multi-revisi, pemisahan lalu lintas, integrasi Dapr, dan komponen pengamatan.
- Dukungan Serverless dan GPU Khusus untuk beban kerja intensif komputasi.
- Lingkungan Aplikasi Kontainer Terpadu untuk menjalankan Fungsi bersama layanan mikro, API, dan pekerjaan latar belakang.
Tabel berikut ini membantu Anda membandingkan fitur Functions pada Container Apps dengan paket konsumsi Flex.
| Fitur | Container Apps | Paket Konsumsi Flex |
|---|---|---|
| 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 di 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 pustaka kustom, paket, dan API dengan Azure Functions untuk aplikasi lini bisnis.
- Migrasi dan modernisasi: Migrasi aplikasi warisan dan/atau monolit lokal ke layanan mikro asli cloud pada kontainer.
- Pemrosesan berbasis peristiwa: Tangani peristiwa dari Event Grid, Service Bus, Event Hubs, dan sumber peristiwa lainnya dengan model pemrograman Fungsi yang mudah.
- Beban kerja AI & GPU: Pemrosesan beban kerja tanpa server video, gambar, transkrip, atau tugas intensif pemrosesan lainnya yang memerlukan sumber daya komputasi GPU. Untuk informasi selengkapnya, lihat Menggunakan GPU tanpa server di Azure Container Apps.
- Layanan mikro: Integrasikan Azure Functions dengan layanan yang dihosting Container Apps lainnya.
- Kontainer kustom: Fungsi Paket dengan runtime atau sidecar kustom.
- Aplikasi privat: Mengamankan Fungsi internal saja menggunakan VNet dan ingress 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. Baca selengkapnya tentang Azure Functions dengan .NET Aspire
- Fungsi Umum: Jalankan skenario Azure Functions standar yang didukung (misalnya, timer, pemrosesan file, pemicu database).
Penyebaran dan penyiapan
Untuk menyebarkan Azure Functions di Azure Container Apps, Anda mengemas aplikasi Functions sebagai gambar kontainer kustom dan menyebarkannya seperti aplikasi kontainer lainnya dengan satu perbedaan utama. Anda perlu mengatur kind=functionapp properti saat menggunakan templat Azure CLI atau ARM/Bicep. Untuk langkah dan contoh terperinci, lihat dokumentasi memulai resmi.
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 Functions Anda. Salin URL ini dan tempelkan ke browser web.
Di portal Microsoft Azure, pilih opsi Optimalkan untuk Azure Functions selama pembuatan aplikasi kontainer untuk menyederhanakan penyiapan.
Semua metode penyebaran standar didukung, termasuk:
- Azure CLI
- Portal Azure
- Templat ARM / Bicep
- Alur CI/CD (misalnya, GitHub Actions, Azure Pipelines)
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.
Poin-poin penting yang perlu diperhatikan:
- Tidak ada biaya tambahan untuk menggunakan model pemrograman Azure Functions dalam Aplikasi Kontainer.
- Durable Functions dan pola tingkat lanjut lainnya didukung dan akan dikenakan tagihan pada model harga Container Apps yang sama. Untuk mekanika dan contoh penagihan terperinci, lihat dokumentasi Tagihan di 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, Kontainer kustom (bawa gambar Anda sendiri).
Azure Functions yang berjalan di Azure Container Apps secara otomatis mengonfigurasi aturan penskalaan berdasarkan sumber peristiwa, menghilangkan kebutuhan akan definisi aturan skala KEDA manual. Itulah sebabnya tombol "Tambahkan aturan skala" di portal Microsoft 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.
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 bagaimana pemicu Fungsi dikonfigurasi menjadi parameter penskalaan KEDA, lihat Pemetaan penskalaan KEDA Azure Functions.
Semua pemicu dan pengikatan Azure Functions standar didukung di Container Apps dengan pengecualian berikut:
- Penskalaan otomatis Pemicu Blob Storage: Hanya berfungsi saat menggunakan Event Grid sebagai sumbernya. Pelajari selengkapnya tentang Memicu Azure Functions pada kontainer blob menggunakan langganan peristiwa
- Penskalaan otomatis Durable Functions: Hanya mendukung penyedia penyimpanan MSSQL (Microsoft SQL Server) dan DTS (Durable Task Scheduler). Lihat panduan selengkapnya tentang menyebarkan fungsi Tahan Lama dengan MSSQL
- Penskalaan otomatis tidak didukung untuk:
- Azure Cache for Redis
- Azure SQL
Identitas terkelola didukung untuk pemicu dan pengikatan yang memungkinkannya. Mereka juga tersedia untuk:
- Akun penyimpanan default (AzureWebJobsStorage)
- Azure Container Registry (ACR)
- Menyambungkan ke sumber peristiwa pemicu
Untuk pemicu yang tidak didukung, gunakan jumlah replika tetap (yaitu, atur minReplicas > 0) di Azure Functions di Azure Container Apps. Untuk detail selengkapnya, lihat panduan pengembang Functions.
Penskalaan dan performa
Azure Functions pada Container Apps menskalakan secara otomatis berdasarkan peristiwa menggunakan KEDA, tanpa perlu mengonfigurasi aturan skala secara manual. Anda masih dapat mengatur replika min/maks untuk mengontrol perilaku penskalaan.
- Penskalaan berbasis peristiwa: Menskalakan secara otomatis berdasarkan pemicu seperti Event Grid, Service Bus, atau HTTP.
- Skalakan ke nol: Aplikasi yang tidak aktif diskalakan ke nol untuk menghemat biaya.
- Kontrol mulai dingin: Pelajari tentang mengurangi waktu mulai dingin di 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 mempelajari selengkapnya, lihat Mengatur aturan penskalakan di Azure Container Apps
Jaringan dan keamanan
Azure Functions di Container Apps mendapat manfaat dari fitur jaringan dan keamanan Container Apps yang kuat untuk penyebaran yang aman dan dapat diskalakan:
- 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/pengguna—tidak diperlukan 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 terlingkup.
Kemampuan ini membuat Fungsi yang dihosting pada Container Apps ideal untuk aplikasi tanpa server yang aman dan berkualitas perusahaan.
Pemantauan dan pencatatan
Azure Functions di Container Apps terintegrasi dengan mulus dengan alat pengamatan Azure untuk pelacakan performa dan diagnosis masalah:
- Application Insights: Menyediakan telemetri untuk permintaan, dependensi, pengecualian, dan jejak kustom. Untuk informasi lebih lanjut, lihat Monitor Azure Functions.
- Analitik log: Menangkap peristiwa siklus hidup dan penskalaan kontainer (misalnya, entri FunctionsScalerInfo). Untuk informasi selengkapnya, lihat Pengelogan Aplikasi 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.
Pertimbangan
Ingatlah pertimbangan lain ini saat menggunakan Azure Functions di Azure Container Apps:
- Persyaratan Ingress untuk Penskalaan Otomatis: Untuk mengaktifkan penskalaan otomatis berdasarkan peristiwa, ingress harus diaktifkan—baik secara publik maupun di dalam lingkungan internal Container Apps.
- Akun Penyimpanan Wajib: Setiap aplikasi Functions yang disebarkan di Aplikasi Kontainer harus ditautkan ke akun penyimpanan. Ini diperlukan untuk mengelola pemicu, 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 Hub, Azure Service Bus, atau Durable Functions adalah contoh pemicu berbasis pull.
- Latensi cold start: Ketika aplikasi kontainer Anda menskalakan ke nol selama periode diam, permintaan pertama setelah tidak aktif mengalami cold start. Pelajari selengkapnya tentang mengurangi waktu mulai dingin.
- Integrasi application insights: Untuk pemantauan dan diagnostik yang kuat, tautkan aplikasi Functions Anda ke Application Insights. Untuk informasi selengkapnya, lihat Integrasi App Insights dengan Functions.
- Proksi fungsi: Tidak didukung. Untuk skenario gateway API, integrasikan dengan Azure API Management sebagai gantinya.
- Slot penyebaran: Slot penahapan dan produksi tidak tersedia. Gunakan strategi penyebaran biru-hijau untuk rilis nol 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 manual: Tombol "Tambahkan aturan skala" di portal Microsoft Azure dinonaktifkan untuk Azure Functions yang dihosting di Container Apps karena aturan penskalaan secara otomatis dikonfigurasi berdasarkan sumber peristiwa. Definisi aturan KEDA manual tidak diperlukan dalam penyiapan ini.
Kirim Umpan Balik
Kirimkan masalah atau permintaan fitur ke repositori GitHub Azure Container Apps.
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 Aplikasi Kontainer, Konsumsi Flex, Premium, dan Khusus.
- Panduan pengembang Azure Functions - Mendalami pemicu, pengikatan, perilaku runtime, dan konfigurasi.