Bagikan melalui


Bekerja dengan kontainer dan Azure Functions

Artikel ini menunjukkan dukungan yang Azure Functions sediakan untuk aplikasi fungsi dalam kontainer yang berjalan di lingkungan Azure Container Apps. Untuk informasi selengkapnya, lihat hosting Azure Functions di Azure Container Apps.

Important

Metode hosting baru untuk menjalankan Azure Functions langsung di Azure Container Apps sekarang tersedia. Lihat Dukungan Native Azure Functions di Azure Container Apps. Integrasi ini memungkinkan Anda menggunakan fitur dan kemampuan lengkap Azure Container Apps. Anda juga mendapat manfaat dari model pemrograman fungsi dan kesederhanaan penskalaan otomatis yang disediakan oleh Azure Functions.

Kami merekomendasikan pendekatan ini untuk sebagian besar beban kerja baru. Untuk informasi selengkapnya, lihat Azure Functions di Azure Container Apps.

Artikel ini menunjukkan dukungan yang Azure Functions sediakan untuk aplikasi fungsi yang berjalan di kontainer Linux.

Pilih lingkungan hosting untuk aplikasi fungsi kontainer Anda di bagian atas artikel ini.

Jika Anda ingin langsung masuk, artikel berikut menunjukkan cara membuat fungsi pertama Anda di kontainer Linux dan menyebarkan gambar dari registri kontainer ke layanan hosting Azure yang didukung:

Buat fungsi Azure berkontainer pertama Anda pada Azure Container Apps

Untuk mempelajari lebih lanjut tentang penyebaran ke Azure Container Apps, lihat Azure Container Apps yang meng-hosting Azure Functions.

Important

Artikel ini saat ini memperlihatkan cara menyambungkan ke akun storage default dengan menggunakan connection string. Untuk keamanan terbaik, buat koneksi berbasis identitas terkelola ke Azure Storage menggunakan autentikasi Microsoft Entra. Untuk informasi selengkapnya, lihat Sambungan.

Membuat aplikasi fungsi dalam kontainer

Functions memudahkan untuk menyebarkan dan menjalankan aplikasi fungsi Anda sebagai kontainer Linux, yang Anda buat dan pertahankan. Functions mempertahankan sekumpulan gambar dasar khusus bahasa yang dapat Anda gunakan saat membuat aplikasi fungsi dalam kontainer.

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 bersifat khusus 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.

Untuk contoh lengkap tentang cara membuat aplikasi fungsi kontainer lokal dari baris perintah dan menerbitkan gambar ke registri kontainer, lihat Membuat aplikasi fungsi di kontainer Linux lokal.

Buat Dockerfile

Alat Functions menyediakan opsi Docker yang menghasilkan Dockerfile dengan kode proyek fungsi Anda. Anda dapat menggunakan file ini dengan Docker untuk membuat fungsi Anda dalam kontainer yang berasal dari gambar dasar yang benar, yang mencakup bahasa dan versi.

Cara Anda membuat Dockerfile tergantung pada cara Anda membuat project.

  • Saat Anda membuat project Functions menggunakan Azure Functions Core Tools, sertakan opsi --docker saat Anda menjalankan perintah func init, seperti dalam contoh berikut:

    func init --docker
    
  • Anda juga dapat menambahkan Dockerfile ke project yang sudah ada dengan menggunakan opsi --docker-only saat Anda menjalankan perintah func init di folder project yang ada, seperti dalam contoh berikut:

    func init --docker-only
    

Untuk contoh lengkapnya, lihat Buat aplikasi fungsi di kontainer Linux lokal.

Membuat Dockerfile kustom

Alih-alih menggunakan Dockerfile yang dihasilkan, Anda dapat membuatnya secara manual ketika Anda membutuhkan lebih banyak kontrol atas gambar kontainer Anda. Folder kontainer kustom dari azure-functions-docker menyediakan templat ini untuk memulai:

Template Description
template.Dockerfile Panduan langkah demi langkah yang dikomentari untuk membangun kontainer kustom. Ini mencakup instruksi untuk beberapa runtime bahasa (Java, .NET terisolasi, Node.js, PowerShell, Python), penginstalan sertifikat CA opsional, menjalankan sebagai pengguna non-root, dan mengaktifkan SSH untuk debugging Kudu.
sample.Dockerfile Contoh siap digunakan yang dibangun dari templat untuk membuat kontainer Azure Functions berbasis Java yang diaktifkan SSH-nya untuk debugging Kudu.

Membuat aplikasi fungsi Anda dalam kontainer

Dengan Dockerfile yang dihasilkan oleh Azure Functions pada proyek kode Anda, Anda dapat menggunakan Docker untuk membuat aplikasi fungsi yang dikontainerkan di komputer lokal Anda. Perintah docker build berikut membuat gambar fungsi kontainer Anda dari project di direktori lokal:

docker build --tag <DOCKER_ID>/<IMAGE_NAME>:v1.0.0 .

Untuk contoh cara membuat kontainer, lihat Membangun gambar kontainer dan memverifikasi secara lokal.

Memperbarui gambar di registri

Saat Anda membuat perubahan pada kode fungsi Anda project atau perlu memperbarui ke gambar dasar terbaru, bangun ulang kontainer secara lokal. Terbitkan ulang gambar yang diperbarui ke registri kontainer yang Anda pilih. Perintah berikut membangun kembali citra dari folder akar dengan nomor versi yang diperbarui dan mengunggahnya ke registri milik Anda.

az acr build --registry <REGISTRY_NAME> --image <LOGIN_SERVER>/azurefunctionsimage:v1.0.1 .

Ganti <REGISTRY_NAME> dengan instans Container Registry Anda dan <LOGIN_SERVER> dengan nama server masuk.

Perbarui penyebaran yang ada untuk menggunakan gambar baru. Anda dapat memperbarui aplikasi fungsi untuk menggunakan gambar baru baik dengan menggunakan Azure CLI atau di Azure portal:

az functionapp config container set --image <IMAGE_NAME> --registry-password <SECURE_PASSWORD>--registry-username <USER_NAME> --name <APP_NAME> --resource-group <RESOURCE_GROUP>

Dalam contoh ini, <IMAGE_NAME> adalah nama lengkap gambar baru dengan versi. Registri privat mengharuskan Anda untuk menyediakan nama pengguna dan kata sandi. Simpan kredensial ini dengan aman.

Anda juga harus mempertimbangkan mengaktifkan penyebaran berkelanjutan.

Membuat aplikasi fungsi dalam kontainer menggunakan Azure portal

Saat membuat aplikasi fungsi di Azure portal, Anda dapat memilih untuk menyebarkan aplikasi fungsi dari gambar di registri kontainer. Untuk mempelajari cara membuat aplikasi fungsi dalam kontainer di registri kontainer, lihat Membuat aplikasi fungsi Anda dalam kontainer.

Langkah-langkah berikut membuat dan menyebarkan aplikasi fungsi kontainer yang ada dari registri kontainer.

  1. Dari menu Azure portal atau Home, pilih Buat sumber daya.

  2. Di halaman Baru, pilihAplikasi Fungsi>.

  3. Di bawah Pilih opsi hosting, pilih Fungsi Premium>Pilih.

    Tindakan ini membuat aplikasi fungsi yang dihosting oleh Azure Functions di paket Premium, yang mendukung penskalaan dinamis. Anda juga dapat memilih untuk menggunakan paket App Service, tetapi dalam paket khusus semacam ini Anda harus mengelola penskalaan aplikasi fungsi Anda.

  4. Di halaman Dasar, gunakan pengaturan aplikasi fungsi seperti ditentukan dalam tabel di bawah:

    Setting Nilai yang disarankan Description
    Subscription Langganan Anda Langganan di mana Anda membuat aplikasi fungsi Anda.
    Grup Sumber Daya myResourceGroup Nama untuk grup sumber daya baru tempat Anda membuat aplikasi fungsi. Anda harus membuat grup sumber daya karena ada batasan yang diketahui saat membuat aplikasi fungsi baru di grup sumber daya yang ada.
    Nama Aplikasi Fungsi Nama aplikasi Nama yang akan mengidentifikasi aplikasi fungsi baru Anda. Karakter yang valid adalah a-z (tidak peka huruf besar dan kecil), 0-9, dan -.
    Mengamankan nama host default unik Enabled Aktifkan fitur ini sehingga Anda tidak perlu khawatir tentang tabrakan nama domain, terlepas dari nama aplikasi Anda.
    Apakah Anda ingin menyebarkan kode atau gambar kontainer? Gambar kontainer Menyebarkan aplikasi fungsi dalam kontainer dari registri. Untuk membuat aplikasi fungsi di registri, lihat Membuat aplikasi fungsi di kontainer Linux lokal.
    Region Wilayah pilihan Pilih region yang dekat dengan Anda atau dekat dengan layanan lain yang dapat diakses oleh fungsi Anda.
    Paket Linux Paket baru (default) Membuat paket Premium baru untuk menghosting aplikasi Anda. Anda juga dapat memilih paket premium yang ada.
    Paket harga Premium Elastik EP1 EP1 adalah paket yang paling terjangkau. Anda dapat memilih paket yang lebih besar jika perlu.
    Redundansi Zona Disabled Anda tidak memerlukan fitur ini di aplikasi nonproduksi.
  5. Terima opsi default untuk membuat akun storage baru di tab Storage dan instans Application Insight baru pada tab Monitoring. Anda juga dapat memilih untuk menggunakan akun storage yang ada atau instans Application Insights.

  6. Pilih Review + create untuk meninjau pilihan app configuration.

  7. Pada halaman Tinjau + buat , tinjau pengaturan Anda, lalu pilih Buat untuk menyediakan aplikasi fungsi menggunakan gambar dasar default.

  8. Setelah sumber daya aplikasi fungsi Anda dibuat, pilih Buka sumber daya. Di halaman aplikasi fungsi, pilih Pusat Penyebaran.

  9. Di Pusat Penyebaran, Anda dapat menyambungkan registri kontainer Anda sebagai sumber gambar. Anda juga dapat mengaktifkan GitHub Actions atau Azure Pipelines untuk penyebaran pembaruan berkelanjutan yang lebih kuat ke kontainer Anda di registri.

Membuat aplikasi fungsi dalam kontainer menggunakan Azure portal

Saat membuat aplikasi fungsi yang dihosting Container Apps di Azure portal, Anda dapat memilih untuk menyebarkan aplikasi fungsi dari gambar di registri kontainer. Untuk mempelajari cara membuat aplikasi fungsi dalam kontainer di registri kontainer, lihat Membuat aplikasi fungsi Anda dalam kontainer.

Langkah-langkah berikut membuat dan menyebarkan aplikasi fungsi kontainer yang ada dari registri kontainer.

  1. Dari menu Azure portal atau Home, pilih Buat sumber daya.

  2. Di halaman Baru, pilihAplikasi Fungsi>.

  3. Di bawah Pilih opsi hosting, pilih lingkungan Aplikasi Kontainer>Pilih.

  4. Di halaman Dasar, gunakan pengaturan aplikasi fungsi seperti ditentukan dalam tabel di bawah:

    Setting Nilai yang disarankan Description
    Subscription Langganan Anda Langganan di mana Anda membuat aplikasi fungsi Anda.
    Grup Sumber Daya myResourceGroup Nama untuk grup sumber daya baru tempat Anda membuat aplikasi fungsi. Anda harus membuat grup sumber daya karena ada batasan yang diketahui saat membuat aplikasi fungsi baru di grup sumber daya yang ada.
    Nama Aplikasi Fungsi Nama unik* Nama yang akan mengidentifikasi aplikasi fungsi baru Anda. Karakter yang valid adalah a-z (tidak peka huruf besar dan kecil), 0-9, dan -.
    Region Wilayah pilihan Pilih region yang dekat dengan Anda atau dekat dengan layanan lain yang dapat diakses oleh fungsi Anda.

    *Nama aplikasi harus unik dalam lingkungan Azure Container Apps.

  5. Masih di halaman Basics, terima lingkungan baru yang disarankan untuk lingkungan Azure Container Apps. Untuk meminimalkan biaya, lingkungan default baru dibuat di Konsumsi + Didedikasikan dengan profil beban kerja default dan tanpa redundansi zona. Untuk informasi selengkapnya, lihat hosting Azure Functions di Azure Container Apps.

    Anda juga dapat memilih untuk menggunakan lingkungan Aplikasi Kontainer yang ada. Untuk membuat lingkungan kustom, pilih Buat baru. Di halaman Buat Lingkungan Aplikasi Kontainer, Anda dapat menambahkan profil beban kerja nondefault atau mengaktifkan redundansi zona. Untuk mempelajari tentang lingkungan, lihat lingkungan Azure Container Apps.

  6. Pilih tab Kontainer dan batalkan pilihan Gunakan gambar permulaan cepat. Jika tidak, aplikasi fungsi disebarkan dari citra dasar untuk bahasa aplikasi fungsi Anda.

  7. Pilih Jenis gambar, publik atau privat. Pilih Private jika Anda menggunakan Azure Container Registry atau beberapa registri privat lainnya. Berikan Nama Gambar, yang termasuk awalan registri. Jika Anda menggunakan registri privat, berikan kredensial autentikasi registri gambar. Pengaturan Public hanya mendukung gambar yang disimpan secara publik di Docker Hub.

  8. Di bawah Alokasi sumber daya kontainer, pilih jumlah inti CPU yang Anda inginkan dan memori yang tersedia. Jika lingkungan Anda memiliki profil beban kerja lain yang ditambahkan, Anda dapat memilih profil Beban Kerja nondefault. Pilihan di halaman ini memengaruhi biaya hosting aplikasi Anda. Lihat halaman harga Container Apps untuk memperkirakan potensi biaya Anda.

  9. Pilih Review + create untuk meninjau pilihan app configuration.

  10. Pada halaman Tinjau + buat , tinjau pengaturan Anda, lalu pilih Buat untuk menyediakan aplikasi fungsi dan sebarkan gambar kontainer Anda dari registri.

Bekerja dengan gambar di Azure Functions

Saat kontainer aplikasi fungsi Anda disebarkan dari registri, Functions mempertahankan informasi tentang gambar sumber.

Gunakan perintah berikut untuk mendapatkan data tentang gambar atau mengubah gambar penyebaran yang digunakan:

Menggunakan profil beban kerja Container Apps

Profil beban kerja adalah fitur Aplikasi Kontainer yang memungkinkan Anda mengontrol sumber daya penyebaran dengan lebih baik. Azure Functions di Azure Container Apps juga mendukung profil beban kerja. Untuk informasi selengkapnya, lihat profil Workload di Azure Container Apps.

Anda juga dapat mengatur jumlah sumber daya CPU dan memori yang dialokasikan untuk aplikasi Anda.

Anda dapat membuat dan mengelola profil beban kerja dan alokasi sumber daya menggunakan Azure CLI atau di Azure portal.

Anda mengaktifkan profil beban kerja saat membuat lingkungan aplikasi kontainer. Misalnya, lihat Membuat aplikasi kontainer di profil.

Anda dapat menambahkan, mengedit, dan menghapus profil di lingkungan Anda. Misalnya, lihat Menambahkan profil.

Saat Anda membuat aplikasi fungsi dalam kontainer di lingkungan yang mengaktifkan profil beban kerja, Anda juga harus menentukan profil untuk dijalankan. Tentukan profil dengan menggunakan parameter --workload-profile-name dari perintah az functionapp create, seperti dalam contoh ini:

az functionapp create --name <APP_NAME> --storage-account <STORAGE_NAME> --environment MyContainerappEnvironment --resource-group AzureFunctionsContainers-rg --functions-version 4 --runtime <LANGUAGE_STACK> --image <IMAGE_URI> --workload-profile-name <PROFILE_NAME> --cpu <CPU_COUNT> --memory <MEMORY_SIZE> 

Dalam perintah az functionapp create, parameter --environment menentukan lingkungan Container Apps dan parameter --image menentukan gambar yang akan digunakan untuk aplikasi fungsi. Dalam contoh ini, ganti <STORAGE_NAME> dengan nama yang Anda gunakan di bagian sebelumnya untuk akun storage. Selain itu, ganti <APP_NAME> dengan nama yang sesuai dengan Anda dan unik di lingkungan tersebut.

Untuk mengatur sumber daya yang dialokasikan ke aplikasi Anda, ganti <CPU_COUNT> dengan jumlah CPU virtual yang Anda inginkan, dengan minimal 0,5 hingga maksimum yang diizinkan oleh profil. Untuk <MEMORY_SIZE>, pilih jumlah memori khusus dari 1 GB hingga maksimum yang diizinkan oleh profil.

Anda dapat menggunakan perintah az functionapp container set untuk mengelola sumber daya yang dialokasikan dan profil beban kerja yang digunakan oleh aplikasi Anda.

az functionapp container set --name <APP_NAME> --resource-group AzureFunctionsContainers-rg --workload-profile-name  <PROFILE_NAME> --cpu <CPU_COUNT> --memory <MEMORY_SIZE> 

Menggunakan Pengaturan Aplikasi

Azure Functions memungkinkan Anda bekerja dengan pengaturan aplikasi untuk aplikasi fungsi dalam kontainer dengan cara standar. Untuk informasi selengkapnya, lihat Gunakan pengaturan aplikasi.

Tip

Secara default, aplikasi fungsi kontainer memantau port 80 untuk permintaan masuk. Jika aplikasi Anda harus menggunakan port yang berbeda, gunakan WEBSITES_PORT pengaturan aplikasi untuk mengubah port ini.

Mengaktifkan penyebaran berkelanjutan ke Azure

Saat Anda menghosting aplikasi fungsi dalam kontainer di Azure Container Apps, ada dua cara untuk menyiapkan penyebaran berkelanjutan dari repositori kode sumber:

Saat ini Anda tidak dapat terus menyebarkan kontainer berdasarkan perubahan gambar dalam registri kontainer. Anda harus menggunakan jalur penyebaran berkelanjutan yang berbasis kode sumber ini.

Mengaktifkan penyebaran berkelanjutan ke Azure

Important

Penyebaran berbasis webhook saat ini tidak didukung saat menjalankan kontainer Anda dalam paket Elastic Premium. Jika Anda perlu menggunakan metode penyebaran berkelanjutan yang dijelaskan di bagian ini, sebarkan kontainer Anda dalam paket App Service. Saat berjalan dalam paket Elastic Premium, Anda perlu menghidupkan ulang aplikasi secara manual setiap kali Anda membuat pembaruan untuk kontainer Anda di repositori.

Anda juga dapat mengonfigurasi penyebaran berkelanjutan dari repositori kode sumber menggunakan Azure Pipelines atau GitHub Actions.

Anda dapat mengaktifkan Azure Functions untuk memperbarui penyebaran gambar secara otomatis setiap kali Anda memperbarui gambar di registri.

  1. Gunakan perintah berikut ini untuk mengaktifkan penyebaran berkelanjutan serta mendapatkan URL webhook:
az functionapp deployment container config --enable-cd --query CI_CD_URL --output tsv --name <APP_NAME> --resource-group AzureFunctionsContainers-rg

Perintah az functionapp deployment container config memungkinkan penyebaran kontinyu dan mengembalikan URL webhook penyebaran. Anda dapat mengambil URL ini kapan saja dengan menggunakan perintah az functionapp deployment container show-cd-url.

Seperti sebelumnya, ganti <APP_NAME> dengan nama aplikasi fungsi Anda.

  1. Salin URL webhook penyebaran ke clipboard.

  2. Buka Docker Hub, masuk, dan pilih Repositories pada bilah navigasi. Temukan dan pilih gambar, pilih tab Webhook, tentukan nama Webhook, tempelkan URL Anda di URL Webhook, lalu pilih Buat.

    Screenshot memperlihatkan cara menambahkan webhook di Docker Hub window.

  3. Dengan set webhook, Azure Functions menyebarkan ulang gambar Anda setiap kali Anda memperbaruinya di Docker Hub.

Aktifkan koneksi SSH

SSH mengaktifkan komunikasi yang aman antara kontainer dan klien. Dengan mengaktifkan SSH, Anda dapat terhubung ke kontainer menggunakan App Service Advanced Tools (Kudu). Untuk koneksi mudah ke kontainer Anda menggunakan SSH, Azure Functions menyediakan gambar dasar yang telah mengaktifkan SSH. Anda hanya perlu mengedit Dockerfile Anda, lalu membangun kembali, dan menyebarkan ulang gambar. Anda kemudian dapat tersambung pada kontainer melalui Advanced Tools (Kudu).

  1. Di Dockerfile Anda, tambahkan string -appservice ke gambar dasar dalam instruksi Anda FROM , seperti dalam contoh berikut:

    FROM mcr.microsoft.com/azure-functions/node:4-node18-appservice
    

    Contoh ini menggunakan versi gambar dasar Node.js versi 18 yang diaktifkan SSH. Kunjungi repositori gambar dasar Azure Functions untuk memverifikasi bahwa Anda menggunakan versi terbaru gambar dasar yang mendukung SSH.

  2. Bangun ulang gambar dengan menggunakan perintah docker build, ganti <DOCKER_ID> dengan ID akun Docker Hub Anda, seperti dalam contoh berikut.

    docker build --tag <DOCKER_ID>/azurefunctionsimage:v1.0.0 .
    
  3. Dorong gambar yang diperbarui ke Docker Hub, yang harus memakan waktu jauh lebih sedikit daripada dorongan pertama. Hanya segmen gambar yang diperbarui yang perlu diunggah.

    docker push <DOCKER_ID>/azurefunctionsimage:v1.0.0
    
  4. Azure Functions secara otomatis menyebarkan ulang gambar ke aplikasi fungsi Anda. Proses berlangsung dalam waktu kurang dari satu menit.

  5. Di Azure portal, temukan aplikasi fungsi Anda. Di menu sebelah kiri, pilih Alat Pengembangan< c0>SSH. Pilih Buka. Menyambungkan mungkin memakan waktu beberapa saat jika Azure masih memperbarui gambar kontainer.

  6. Setelah koneksi dibuat dengan kontainer Anda, jalankan perintah top untuk melihat proses yang sedang berjalan.

    Cuplikan layar yang menunjukkan perintah atas Linux yang berjalan di sesi SSH.

Artikel berikut ini menyediakan informasi selengkapnya tentang menyebarkan dan mengelola kontainer: