Bekerja dengan kontainer dan Azure Functions

Artikel ini menunjukkan dukungan yang disediakan Azure Functions untuk bekerja dengan aplikasi fungsi dalam kontainer yang berjalan di lingkungan Azure Container Apps. Untuk informasi selengkapnya, lihat Hosting Azure Container Apps azure Functions.

Artikel ini menunjukkan dukungan yang disediakan Azure Functions untuk bekerja dengan aplikasi fungsi yang berjalan di kontainer Linux.

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

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

Membuat Azure Functions kontainer pertama Anda di Azure Container Apps

Untuk mempelajari selengkapnya tentang penyebaran ke Azure Container Apps, lihat Hosting Azure Container Apps azure Functions.

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.

Penting

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

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

Hasilkan Dockerfile

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

Cara Anda membuat Dockerfile bergantung pada cara Anda membuat proyek.

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

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

    func init --docker-only
    

Untuk contoh lengkapnya, lihat Membuat aplikasi fungsi di kontainer lokal.

Membuat aplikasi fungsi Anda dalam kontainer

Dengan Dockerfile yang dihasilkan Core Tools dalam proyek kode, Anda dapat menggunakan Docker untuk membuat aplikasi fungsi kontainer di komputer lokal Anda. Perintah berikut docker build membuat gambar fungsi kontainer Anda dari proyek 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 proyek kode fungsi atau perlu memperbarui ke gambar dasar terbaru, Anda perlu membangun kembali kontainer secara lokal dan menerbitkan ulang gambar yang diperbarui ke registri kontainer yang Anda pilih. Perintah berikut membangun kembali gambar dari folder akar dengan nomor versi yang diperbarui dan mendorongnya ke registri 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 login.

Pada titik ini, Anda perlu memperbarui penyebaran untuk menggunakan gambar baru. Contoh berikut memperbarui aplikasi fungsi untuk menggunakan gambar baru:

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 untuk mengaktifkan penyebaran berkelanjutan.

portal Azure membuat menggunakan kontainer

Saat membuat aplikasi fungsi di portal Azure, 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. Pada menu portal Microsoft Azure atau halaman Beranda, pilih Buat sumber daya.

  2. Di halaman Baru, pilih Komputasi>Aplikasi Fungsi.

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

    Ini membuat aplikasi fungsi yang dihosting oleh Azure Functions dalam paket Premium, yang mendukung penskalakan dinamis. Anda juga dapat memilih untuk berjalan dalam 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:

    Pengaturan Nilai yang disarankan Deskripsi
    Langganan Langganan Anda Langganan tempat Anda membuat aplikasi fungsi.
    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 a-z (peka huruf besar dan kecil), 0-9, dan -.
    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 lokal.
    Wilayah Wilayah pilihan Pilih wilayah yang ada di dekat Anda atau di dekat 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 Elastic Premium EP1 EP1 adalah paket yang paling terjangkau. Anda dapat memilih paket yang lebih besar jika perlu.
    Redundansi Zona Nonaktif Anda tidak memerlukan fitur ini di aplikasi nonproduksi.

    *Nama aplikasi harus unik secara global di antara semua aplikasi yang dihosting Azure Functions.

  5. Terima opsi default untuk membuat akun penyimpanan baru di tab Penyimpanan dan instans Application Insight baru pada tab Pemantauan . Anda juga dapat memilih untuk menggunakan akun penyimpanan atau instans Application Insights yang ada.

  6. Pilih Tinjau + Buat untuk meninjau pilihan konfigurasi aplikasi.

  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 dan 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.

portal Azure membuat menggunakan kontainer

Saat membuat aplikasi fungsi di portal Azure, 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. Pada menu portal Microsoft Azure atau halaman Beranda, pilih Buat sumber daya.

  2. Di halaman Baru, pilih Komputasi>Aplikasi 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:

    Pengaturan Nilai yang disarankan Deskripsi
    Langganan Langganan Anda Langganan tempat Anda membuat aplikasi fungsi.
    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 a-z (peka huruf besar dan kecil), 0-9, dan -.
    Wilayah Wilayah pilihan Pilih wilayah yang ada di dekat Anda atau di dekat layanan lain yang dapat diakses oleh fungsi Anda.

    *Nama aplikasi harus unik dalam lingkungan Azure Container Apps.

  5. Untuk lingkungan Azure Container Apps, terima lingkungan baru yang disarankan dalam paket Konsumsi + Khusus . Secara default, lingkungan dibuat dengan profil beban kerja default dan tanpa redundansi zona, yang meminimalkan biaya. Untuk informasi selengkapnya, lihat Hosting Azure Container Apps azure Functions.

    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 Penyebaran dan batal pilih Gunakan gambar mulai cepat. Jika tidak, aplikasi fungsi disebarkan dari gambar dasar untuk bahasa aplikasi fungsi Anda.

  7. Pilih Jenis gambar, publik, atau privat Anda. Pilih Privat jika Anda menggunakan Azure Container Registry atau beberapa registri privat lainnya. Berikan Nama gambar, termasuk awalan registri. Jika Anda menggunakan registri privat, berikan kredensial autentikasi registri gambar.

  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 Tinjau + Buat untuk meninjau pilihan konfigurasi aplikasi.

  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:

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 beban kerja 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 portal Azure.

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. Anda melakukan ini dengan menggunakan --workload-profile-name parameter az functionapp create perintah, 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> 

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

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 az functionapp container set perintah 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> 

Pengaturan aplikasi

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

Mengaktifkan penyebaran berkelanjutan ke Azure

Penting

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 dapat mengaktifkan Azure Functions untuk memperbarui 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 ini az functionapp deployment container config memungkinkan penyebaran berkelanjutan dan mengembalikan URL webhook penyebaran. Anda dapat mengambil URL ini di lain waktu dengan menggunakan az functionapp deployment container show-cd-url perintah .

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

  2. Salin URL webhook penyebaran ke clipboard.

  3. Buka Docker Hub, masuk, lalu pilih Repositori pada bilah navigasi. Temukan serta pilih gambar, pilih tab Webhook, tentukan nama Webhook, tempelkan URL Anda di URL Webhook, lalu pilih Buat.

    Cuplikan layar menunjukkan cara menambahkan webhook di jendela Docker Hub Anda.

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

Aktifkan koneksi SSH

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

  1. Di Dockerfile Anda, tambahkan string -appservice ke gambar dasar dalam instruksi AndaFROM, 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 diaktifkan SSH.

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

    docker build --tag <DOCKER_ID>/azurefunctionsimage:v1.0.0 .
    
  3. Pindahkan gambar yang telah diperbarui ke Docker Hub, yang seharusnya memakan waktu jauh lebih sedikit dibandingkan yang pertama. Hanya segmen gambar yang diperbarui yang perlu diunggah.

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

  5. Pada browser, buka https://<app_name>.scm.azurewebsites.net/ dan ganti <app_name> dengan nama unik Anda. URL ini adalah titik akhir Advanced Tools (Kudu) untuk kontainer aplikasi fungsi Anda.

  6. Masuk ke akun Azure Anda, lalu pilih SSH untuk membuat koneksi dengan kontainer. Menyambungkan mungkin membutuhkan waktu beberapa saat jika Azure masih memperbarui gambar kontainer.

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

Langkah berikutnya

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