Bagikan melalui


Dukungan kontainer Linux di Azure Functions

Saat Anda merencanakan dan mengembangkan fungsi individual untuk dijalankan di Azure Functions, Anda biasanya berfokus pada kode itu sendiri. Azure Functions memudahkan untuk menyebarkan hanya proyek kode Anda ke aplikasi fungsi di Azure. Saat Anda menyebarkan proyek ke aplikasi fungsi Linux, kode Anda berjalan dalam kontainer yang dibuat untuk Anda secara otomatis dan terintegrasi dengan alat manajemen Functions.

Functions juga mendukung penyebaran aplikasi fungsi dalam kontainer. Pada penyebaran berkontainer, Anda membuat instans aplikasi fungsi Anda sendiri di kontainer Docker lokal berdasarkan citra dasar yang didukung. Anda kemudian dapat mendistribusikan aplikasi fungsi terkontainer ini ke lingkungan hosting di Azure. Membuat kontainer aplikasi fungsi Anda sendiri memungkinkan Anda menyesuaikan atau mengontrol lingkungan runtime langsung kode fungsi Anda.

Important

Saat membuat kontainer sendiri, Anda diharuskan untuk menjaga gambar dasar kontainer Anda diperbarui ke gambar dasar terbaru yang didukung. Gambar dasar yang didukung untuk Azure Functions tergantung pada bahasa. Lihat repositori gambar dasar Azure Functions.

Tim Functions berkomitmen untuk menerbitkan pembaruan bulanan untuk gambar dasar ini. Pembaruan reguler mencakup pembaruan versi minor terbaru dan perbaikan keamanan untuk runtime Functions dan bahasa. Anda harus memperbarui kontainer Anda secara teratur dari gambar dasar terbaru dan menyebarkan ulang versi kontainer Anda yang diperbarui. Untuk informasi selengkapnya, lihat Memelihara kontainer kustom.

Pilihan hosting kontainer

Ada beberapa opsi untuk menghosting aplikasi fungsi kontainer Anda di Azure:

Opsi Hosting Benefits
Azure Container Apps Azure Functions menyediakan dukungan terintegrasi untuk mengembangkan, menyebarkan, dan mengelola aplikasi fungsi dalam kontainer di Azure Container Apps. Integrasi ini memungkinkan Anda mengelola aplikasi menggunakan alat dan halaman Functions yang sama di portal Microsoft Azure. Gunakan Azure Container Apps untuk menghosting kontainer aplikasi fungsi Anda di lingkungan yang sama dengan layanan mikro, API, situs web, alur kerja, atau program kontainer lain yang dihosting. Hosting Container Apps memungkinkan Anda menjalankan fungsi di lingkungan berbasis Kubernetes terkelola dengan dukungan bawaan untuk pemantauan sumber terbuka, mTLS, Dapr, dan KEDA. Mendukung skala-ke-nol dan menyediakan model hosting tanpa server dengan bayar sesuai penggunaan. Anda juga dapat meminta perangkat keras khusus, bahkan GPU, dengan menggunakan profil beban kerja. Opsi hosting yang direkomendasikan untuk aplikasi fungsi kontainer n Azure.
Kluster Kubernetes dengan dukungan Azure Arc (pratinjau) Anda dapat menghosting aplikasi fungsi di kluster Kubernetes dengan dukungan Azure Arc sebagai penyebaran khusus kode atau dalam kontainer Linux kustom. Azure Arc memungkinkan Anda melampirkan kluster Kubernetes sehingga Anda dapat mengelola dan mengonfigurasinya di Azure. Menghosting kontainer Azure Functions pada kluster Kubernetes dengan dukungan Azure Arc saat ini dalam pratinjau. Untuk informasi selengkapnya, lihat Bekerja dengan kontainer dan Azure Functions.
Azure Functions Anda dapat menghosting aplikasi fungsi dalam kontainer di Azure Functions dengan menjalankan kontainer dalam paket Elastic Premium atau App Service (Khusus). Gunakan hosting Container Apps untuk dukungan kontainer yang kaya dari Container Apps. Hosting paket premium memberi Anda manfaat penskalaan dinamis. Anda mungkin ingin menggunakan hosting Paket khusus untuk memanfaatkan sumber daya paket App Service yang tidak digunakan yang ada.
Kubernetes Karena runtime Azure Functions memberikan fleksibilitas dalam menghosting di mana dan bagaimana Anda inginkan, Anda dapat menghosting dan mengelola kontainer aplikasi fungsi anda langsung di kluster Kubernetes. KEDA (Kubernetes-based Event Driven Autoscaling) terintegrasi secara mulus dengan runtime dan alat Azure Functions untuk memberikan skala yang digerakkan oleh peristiwa di Kubernetes. Penting: Hosting Kubernetes dari aplikasi fungsi kontainer Anda, baik dengan menggunakan KEDA atau dengan penyebaran langsung, adalah upaya sumber terbuka yang dapat Anda gunakan secara gratis. Dukungan upaya terbaik untuk skenario hosting ini hanya disediakan oleh kontributor dan oleh komunitas. Anda bertanggung jawab untuk memelihara kontainer aplikasi fungsi Anda sendiri dalam kluster, bahkan saat menyebarkannya ke Azure Kubernetes Service (AKS).

Perbandingan dukungan fitur

Tingkat di mana berbagai fitur dan perilaku Azure Functions didukung saat menjalankan aplikasi fungsi Anda dalam kontainer tergantung pada opsi hosting kontainer yang Anda pilih.

Feature/behavior Aplikasi Kontainer (terintegrasi) Aplikasi Kontainer (langsung) Paket premium Paket khusus Kubernetes
Dukungan produk Yes No Yes Yes No
Integrasi Functions portal No No Yes Yes No
Penskalakan berbasis peristiwa Yes5 Ya (aturan skala) Yes No No
Skala maksimum (instans) 10001  10001  1002  10-303  Bervariasi menurut kluster
Mengurangi hingga nol instance Yes Yes No No KEDA
Batas waktu eksekusi Unbounded6 Unbounded6 Unbounded7 Unbounded8 None
Penyebaran *Core Tools* No No No No func kubernetes 
Revisions Yes  Yes No No No
Penyebaran slot  No No Yes Yes No
Streaming log  Yes  Yes  Yes Yes No
Akses konsol  Yes  Yes Ya (menggunakan Kudu) Ya (menggunakan Kudu) Ya (dalam pod-pod menggunakan kubectl)
Mitigasi mulai dingin Replika minimum Aturan skala  Instans yang selalu siap/dihangatkan sebelumnya  n/a n/a
Autentikasi Layanan Aplikasi  Yes  Yes Yes Yes No
Nama domain kustom  Yes  Yes Yes Yes No
Sertifikat kunci privat  Yes  Yes Yes Yes No
Jaringan virtual Yes  Yes Yes Yes Yes
Zona Ketersediaan Yes  Yes Yes Yes Yes
Diagnostics Yes  Yes Yes  Yes  No
Perangkat keras khusus Ya (profil beban kerja) Ya (profil beban kerja) No Yes Yes
GPU khusus terdedikasi Ya (profil beban kerja) Ya (profil beban kerja) No No Yes
Jumlah memori/CPU yang dapat dikonfigurasi Yes Yes No No Yes
Opsi "Pemberian gratis" Yes Yes No No No
Detail harga Penagihan Container Apps Penagihan Container Apps Penagihan rencana premium Penagihan paket khusus Harga AKS
Persyaratan nama layanan 2-32 karakter: terbatas pada huruf kecil, angka, dan tanda hubung. Harus dimulai dengan huruf dan diakhir dengan karakter alfanumerik. 2-32 karakter: terbatas pada huruf kecil, angka, dan tanda hubung. Harus dimulai dengan huruf dan diakhir dengan karakter alfanumerik. Kurang dari 64 karakter: terbatas pada karakter alfanumerik dan tanda hubung. Tidak dapat dimulai dengan atau diakhir dalam tanda hubung. Kurang dari 64 karakter: terbatas pada karakter alfanumerik dan tanda hubung. Tidak dapat dimulai dengan atau diakhir dalam tanda hubung. Kurang dari 253 karakter: terbatas pada karakter alfanumerik dan tanda hubung. Harus dimulai dan diakhir dengan karakter alfanumerik.
  1. Pada Container Apps, defaultnya adalah 10 instans, tetapi Anda dapat mengatur jumlah maksimum replika, yang memiliki maksimum keseluruhan 1000. Pengaturan ini dihormati selama ada cukup kuota inti yang tersedia. Saat membuat aplikasi fungsi dari portal Azure, Anda dibatasi hingga 300 instans.
  2. Di beberapa wilayah, aplikasi Linux pada paket Premium dapat menskalakan ke 100 instans. Untuk informasi selengkapnya, lihat artikel paket Premium.
  3. Untuk batas tertentu untuk berbagai opsi paket App Service, lihat batas paket App Service.
  4. Memerlukan KEDA; didukung oleh sebagian besar pemicu. Untuk mempelajari pemicu mana yang mendukung penskalaan berbasis peristiwa, lihat Pertimbangan untuk hosting Container Apps.
  5. Ketika jumlah minimum replika diatur ke nol, batas waktu default bergantung pada pemicu tertentu yang digunakan dalam aplikasi.
  6. Tidak ada durasi batas waktu eksekusi maksimum yang diberlakukan. Namun, masa tenggang yang diberikan untuk eksekusi fungsi adalah 60 menit selama penskalaan, dan masa tenggang 10 menit diberikan selama pembaruan platform.
  7. Mengharuskan paket App Service diatur menjadi Always On. Masa tenggang 10 menit diberikan selama pembaruan platform.

Mempertahankan kontainer kustom

Saat membuat kontainer Anda sendiri, Anda diharuskan untuk menjaga gambar dasar kontainer Anda diperbarui ke gambar dasar terbaru yang didukung. Gambar dasar yang didukung untuk Azure Functions bersifat spesifik untuk masing-masing bahasa dan ditemukan di repositori gambar dasar Azure Functions.

Tim Functions berkomitmen untuk menerbitkan pembaruan bulanan untuk gambar dasar ini. Pembaruan reguler mencakup pembaruan versi minor terbaru dan perbaikan keamanan untuk runtime Functions dan bahasa. Anda harus memperbarui kontainer Anda secara teratur dari gambar dasar terbaru dan menyebarkan ulang versi kontainer Anda yang diperbarui.

Pilih gambar dasar Anda berdasarkan tumpukan bahasa yang Anda gunakan di aplikasi fungsi Anda. Tabel berikut ini menyediakan contoh untuk setiap tumpukan. Secara umum, tag harus dimulai dengan 4- untuk menunjukkan runtime Fungsi V4. Ketika versi minor baru dirilis, tag ini akan diperbarui untuk menunjuk ke versi baru. Saat membangun kembali gambar kustom secara berkala, Anda akan menarik versi baru melalui tag yang sama, yang memungkinkan aplikasi Anda memiliki pembaruan yang sama. Anda tidak boleh menggunakan tag yang menentukan versi runtime minor, karena ini tidak akan menerima pembaruan, dan aplikasi Anda berpotensi akan tetap berada pada versi yang belum dikirim, tidak peduli seberapa sering Anda membangun kembali gambar kustom Anda.

Tumpukan Bahasa Contoh tag gambar dasar yang direkomendasikan
.NET (model pekerja terisolasi) mcr.microsoft.com/azure-functions/dotnet-isolated:4-dotnet-isolated8.0 atau
mcr.microsoft.com/azure-functions/dotnet-isolated:4-dotnet-isolated8.0-appservice

(Contoh ini menargetkan .NET 8. Pilih gambar yang sesuai untuk versi .NET yang Anda butuhkan.)
.NET (model dalam-proses lama) mcr.microsoft.com/azure-functions/dotnet:4-dotnet8.0 atau
mcr.microsoft.com/azure-functions/dotnet:4-dotnet8.0-appservice

(Dukungan akan berakhir untuk model dalam proses pada 10 November 2026. Anda harus bermigrasi ke model pekerja yang terisolasi sesegera mungkin.)
Java mcr.microsoft.com/azure-functions/java:4-java21 atau
mcr.microsoft.com/azure-functions/java:4-java21-appservice

(Contoh ini menargetkan Java 21. Pilih gambar yang sesuai untuk versi Java yang Anda butuhkan.)
Node.js (JavaScript atau TypeScript) mcr.microsoft.com/azure-functions/node:4-node22 atau
mcr.microsoft.com/azure-functions/node:4-node22-appservice

(Contoh ini menargetkan Node.js 22. Pilih gambar yang sesuai untuk versi Node.js yang Anda butuhkan.)
PowerShell mcr.microsoft.com/azure-functions/powershell:4-powershell7.4 atau
mcr.microsoft.com/azure-functions/powershell:4-powershell7.4-appservice

(Contoh ini menargetkan PowerShell 7.4. Pilih gambar yang sesuai untuk versi PowerShell yang Anda butuhkan.)
Phyton mcr.microsoft.com/azure-functions/python:4-python3.12 atau
mcr.microsoft.com/azure-functions/python:4-python3.12-appservice

(Contoh ini menargetkan Python 3.12. Pilih gambar yang sesuai untuk versi Python yang Anda butuhkan.)
Handler kustom / lainnya mcr.microsoft.com/azure-functions/base:4 atau
mcr.microsoft.com/azure-functions/base:4-appservice

Gambar dasar yang berakhiran dengan -appservice dapat mengaktifkan SSH dan debugging jarak jauh dari platform. Kecuali Anda membutuhkan kemampuan ini, Anda dapat menggunakan gambar dasar tanpa akhiran -appservice .

Important

Tidak cukup hanya memiliki salah satu tag di atas di Dockerfile Anda. Anda perlu menarik gambar terbaru secara teratur dari tag tersebut sehingga gambar kustom Anda dapat dibangun kembali untuk menyertakan pembaruan terbaru. Jika Anda tidak menarik gambar terbaru dan membangun kembali, aplikasi Anda akan terus berjalan pada gambar dasar lama.

Saat Anda membuat atau menyebarkan aplikasi kontainer Anda sendiri menggunakan gambar kustom, Anda bertanggung jawab untuk memastikan bahwa gambar kustom Anda tetap up-to-tanggal dengan gambar dasar yang dirilis. Selain fitur dan peningkatan baru, pembaruan gambar dasar ini juga dapat menyertakan pembaruan keamanan yang penting untuk aplikasi Anda. Untuk memastikan aplikasi Anda terlindungi, pastikan Anda tetap mendapatkan informasi terbaru. Anda harus secara teratur mengambil versi terbaru dari image dasar, membangun kembali image kontainer kustom Anda, dan menyebarkan ulang aplikasi Anda agar dapat menggunakannya.

Dalam beberapa kasus, kami diharuskan untuk membuat perubahan tingkat platform yang dapat berarti bahwa aplikasi dalam kontainer kustom menggunakan gambar dasar lama mungkin berhenti berfungsi dengan baik. Untuk perubahan besar tersebut, kami meluncurkan gambar yang diperbarui dengan baik terlebih dahulu sehingga aplikasi yang mengambil pembaruan rutin tidak terpengaruh secara negatif. Untuk menghindari potensi masalah dengan aplikasi yang berjalan di kontainer kustom, pastikan Anda tidak tertinggal terlalu jauh dari versi minor terbaru yang dirilis. Selama kasus dukungan, jika kami menentukan bahwa aplikasi Anda mengalami masalah karena berada pada versi yang lebih lama atau tidak didukung, kami meminta Anda memperbarui kontainer Anda ke versi gambar dasar terbaru sebelum melanjutkan dengan dukungan.

Memulai Langkah Pertama

Gunakan tautan ini untuk mulai bekerja dengan Azure Functions di kontainer Linux:

Aku ingin... Lihat artikel:
Membuat fungsi yang dikontainerkan pertama saya Membuat aplikasi fungsi di kontainer Linux lokal
Membuat dan menyebarkan fungsi ke Azure Container Apps Membuat fungsi kontainer pertama Anda di Azure Container Apps
Membuat dan menyebarkan fungsi dalam kontainer ke Azure Functions Buat Fungsi Azure pertama Anda yang ber-container