Bagikan melalui


Membuat Azure Functions kontainer pertama Anda di Azure Arc (pratinjau)

Dalam artikel ini, Anda membuat aplikasi fungsi yang berjalan di kontainer Linux dan menyebarkannya ke kluster Kubernetes dengan dukungan Azure Arc dari registri kontainer. Saat membuat kontainer sendiri, Anda dapat menyesuaikan lingkungan eksekusi untuk aplikasi fungsi Anda. Untuk mempelajari lebih lanjut, lihat Layanan Aplikasi, Fungsi, dan Aplikasi Logika di Azure Arc.

Catatan

Dukungan untuk menyebarkan kontainer kustom ke kluster Kubernetes dengan dukungan Azure Arc saat ini dalam pratinjau.

Anda juga dapat menerbitkan fungsi ke kluster Kubernetes dengan dukungan Azure Arc tanpa terlebih dahulu membuat kontainer. Untuk mempelajari selengkapnya, lihat Membuat fungsi pertama Anda di Azure Arc (pratinjau)

Memilih bahasa pengembangan Anda

Pertama, Anda menggunakan alat Azure Functions untuk membuat kode proyek Anda sebagai aplikasi fungsi dalam kontainer Docker menggunakan gambar dasar Linux khusus bahasa. Pastikan untuk memilih bahasa pilihan Anda di bagian atas artikel.

Core Tools secara otomatis menghasilkan Dockerfile untuk proyek Anda yang menggunakan versi terbaru dari gambar dasar yang benar untuk bahasa fungsi Anda. Anda harus memperbarui kontainer Anda secara teratur dari gambar dasar terbaru dan menyebarkan ulang dari versi kontainer Anda yang diperbarui. Untuk informasi selengkapnya, lihat Membuat aplikasi fungsi dalam kontainer.

Prasyarat

Sebelum memulai, Anda harus memiliki persyaratan berikut:

  • Azure CLI versi 2.4 atau versi yang lebih baru.

Jika Anda tidak memiliki Langganan Azure, buat Akun gratis Azure sebelum memulai.

Untuk menerbitkan gambar aplikasi fungsi kontainer yang Anda buat ke registri kontainer, Anda memerlukan ID Docker dan Docker yang berjalan di komputer lokal Anda. Jika Anda tidak memiliki ID Docker, Anda dapat membuat akun Docker.

Anda juga perlu menyelesaikan bagian Buat registri kontainer dari mulai cepat Container Registry untuk membuat instans registri. Catat nama server masuk Anda yang sepenuhnya memenuhi syarat.

Membuat dan mengaktifkan lingkungan virtual

Di folder yang sesuai, jalankan perintah berikut untuk membuat dan mengaktifkan lingkungan virtual bernama .venv. Pastikan untuk menggunakan salah satu versi Python yang didukung oleh Azure Functions.

python -m venv .venv
source .venv/bin/activate

Jika Python tidak memasang paket venv pada distribusi Linux Anda, jalankan perintah berikut:

sudo apt-get install python3-venv

Anda menjalankan semua perintah berikutnya di lingkungan virtual yang diaktifkan ini.

Membuat dan menguji proyek fungsi lokal

Pada prompt terminal atau perintah, jalankan perintah berikut ini untuk bahasa yang telah dipilih untuk membuat proyek aplikasi fungsi pada folder saat ini:

func init --worker-runtime dotnet-isolated --docker
func init --worker-runtime node --language javascript --docker
func init --worker-runtime powershell --docker
func init --worker-runtime python --docker
func init --worker-runtime node --language typescript --docker

Dalam folder kosong, jalankan perintah berikut ini untuk menghasilkan proyek Azure Functions dari archetype Maven:

mvn archetype:generate -DarchetypeGroupId=com.microsoft.azure -DarchetypeArtifactId=azure-functions-archetype -DjavaVersion=8 -Ddocker

Parameter -DjavaVersion memberi tahu runtime Functions versi Java mana yang akan digunakan. Gunakan -DjavaVersion=11 jika Anda ingin fungsi Anda berjalan di Java 11. Saat Anda tidak menentukan -DjavaVersion, Maven default ke Java 8. Untuk informasi selengkapnya, lihat versi Java.

Penting

Variabel lingkungan JAVA_HOME harus diatur ke lokasi penginstalan versi JDK yang benar untuk menyelesaikan artikel ini.

Maven meminta nilai yang diperlukan untuk menyelesaikan pembuatan proyek pada penyebaran. Ikuti perintahnya dan berikan informasi berikut:

Prompt Nilai Deskripsi
groupId com.fabrikam Nilai yang secara unik mengidentifikasi proyek Anda dari semua proyek, mengikuti aturan penamaan paket untuk Java.
artifactId fabrikam-functions Nilai yang merupakan nama jar, tanpa nomor versi.
versi 1.0-SNAPSHOT Harap pilih nilai default.
package com.fabrikam.functions Nilai yang merupakan paket Java untuk kode fungsi yang dihasilkan. Gunakan default.

Ketik Y atau tekan Enter untuk mengonfirmasi.

Maven membuat file proyek di folder baru dengan nama artifactId, yang dalam contoh ini merupakan fabrikam-functions.

Opsi ini --docker menghasilkan Dockerfile untuk proyek, yang menentukan kontainer yang sesuai untuk digunakan dengan Azure Functions dan runtime yang dipilih.

Navigasi ke folder proyek:

cd fabrikam-functions

Gunakan perintah berikut ini untuk menambahkan fungsi ke proyek Anda, dengan argumen --name merupakan nama unik fungsi Anda dan argumen --template menentukan pemicu fungsi. func new membuat file kode C# dalam proyek Anda.

func new --name HttpExample --template "HTTP trigger"

Gunakan perintah berikut ini untuk menambahkan fungsi ke proyek Anda, dengan argumen --name merupakan nama unik fungsi Anda dan argumen --template menentukan pemicu fungsi. func new membuat subfolder yang cocok dengan nama fungsi yang berisi file konfigurasi bernama function.json.

func new --name HttpExample --template "HTTP trigger"

Untuk menguji fungsi secara lokal, harap mulai host runtime Azure Functions lokal pada akar folder proyek.

func start  
func start  
npm install
npm start
mvn clean package  
mvn azure-functions:run

Setelah Anda melihat HttpExample titik akhir yang ditulis ke output, navigasikan ke titik akhir tersebut. Anda akan melihat pesan selamat datang dalam output respons.

Setelah Anda melihat titik akhir yang HttpExample ditulis ke output, navigasikan ke http://localhost:7071/api/HttpExample?name=Functions. Browser harus menampilkan pesan "halo" yang menghasilkan Functions, yaitu nilai yang diberikan ke parameter kueri name.

Tekan Ctrl+C (Command+C di macOS) untuk menghentikan host.

Membangun gambar kontainer dan memverifikasi secara lokal

(Opsional) Memeriksa Dockerfile di akar folder proyek. Dockerfile menjelaskan lingkungan yang dibutuhkan untuk menjalankan aplikasi fungsi di Linux. Daftar lengkap gambar dasar yang didukung untuk Azure Functions dapat ditemukan di halaman gambar dasar Azure Functions.

Di folder proyek akar, jalankan perintah docker build, dan berikan nama azurefunctionsimage dan tag v1.0.0. Ganti <DOCKER_ID> dengan ID akun Docker Hub Anda. Perintah ini menyusun gambar Docker untuk kontainer.

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

Ketika perintah selesai, Anda dapat menjalankan kontainer baru secara lokal.

Untuk memverifikasi build, jalankan gambar dalam kontainer lokal menggunakan perintah jalankan docker, ganti <DOCKER_ID> lagi dengan ID akun Docker Hub Anda, dan tambahkan argumen port sebagai -p 8080:80:

docker run -p 8080:80 -it <DOCKER_ID>/azurefunctionsimage:v1.0.0

Setelah gambar berjalan pada kontainer lokal, telusuri ke http://localhost:8080/api/HttpExample, yang akan menampilkan pesan sapaan yang sama dengan sebelumnya. Karena fungsi yang terpicu HTTP yang telah Anda buat menggunakan otorisasi anonim, Anda dapat memanggil fungsi yang berjalan di kontainer tanpa harus mendapatkan kunci akses. Untuk informasi selengkapnya, lihat kunci otorisasi.

Setelah gambar berjalan dalam kontainer lokal, telusuri ke http://localhost:8080/api/HttpExample?name=Functions, yang akan menampilkan pesan "halo" yang sama dengan sebelumnya. Karena fungsi yang terpicu HTTP yang telah Anda buat menggunakan otorisasi anonim, Anda dapat memanggil fungsi yang berjalan di kontainer tanpa harus mendapatkan kunci akses. Untuk informasi selengkapnya, lihat kunci otorisasi.

Setelah memverifikasi aplikasi fungsi di kontainer, tekan Ctrl+C (Command+C di macOS) untuk menghentikan eksekusi.

Menerbitkan gambar kontainer ke registri

Untuk membuat gambar kontainer Anda tersedia untuk penyebaran ke lingkungan hosting, Anda harus mendorongnya ke registri kontainer.

Azure Container Registry adalah layanan registri privat untuk membangun, menyimpan, dan mengelola gambar kontainer dan artefak terkait. Anda harus menggunakan layanan registri privat untuk menerbitkan kontainer Anda ke layanan Azure.

  1. Gunakan perintah berikut untuk masuk ke instans registri Anda:

    az acr login --name <REGISTRY_NAME>
    

    Di perintah sebelumnya, ganti <REGISTRY_NAME> dengan nama instans Container Registry Anda.

  2. Gunakan perintah berikut untuk menandai gambar Anda dengan nama server masuk registri Anda yang sepenuhnya memenuhi syarat:

    docker tag <DOCKER_ID>/azurefunctionsimage:v1.0.0 <LOGIN_SERVER>/azurefunctionsimage:v1.0.0 
    

    Ganti <LOGIN_SERVER> dengan nama server masuk registri Anda yang sepenuhnya memenuhi syarat dan <DOCKER_ID> dengan ID Docker Anda.

  3. Gunakan perintah berikut untuk mendorong kontainer ke instans registri Anda:

    docker push <LOGIN_SERVER>/azurefunctionsimage:v1.0.0
    
  4. Gunakan perintah berikut untuk mengaktifkan akun admin bawaan sehingga Functions dapat tersambung ke registri dengan nama pengguna dan kata sandi:

    az acr update -n <REGISTRY_NAME> --admin-enabled true
    
  1. Gunakan perintah berikut untuk mengambil nama pengguna dan kata sandi admin, yang perlu disambungkan oleh Functions ke registri:

    az acr credential show -n <REGISTRY_NAME> --query "[username, passwords[0].value]" -o tsv
    

    Penting

    Nama pengguna dan kata sandi akun admin adalah kredensial penting. Pastikan untuk menyimpannya dengan aman dan tidak pernah berada di lokasi yang dapat diakses seperti repositori publik.

Buat lingkungan Kubernetes App Service

Sebelum memulai, Anda harus membuat lingkungan Kubernetes App Service untuk kluster Kubernetes yang mendukung Azure Arc.

Catatan

Saat Anda membuat lingkungan, pastikan untuk mencatat nama lokasi kustom dan nama grup sumber daya yang berisi lokasi kustom. Anda dapat menggunakannya untuk menemukan ID lokasi kustom, yang akan Anda perlukan saat membuat aplikasi fungsi di lingkungan.

Jika Anda tidak membuat lingkungan, tanyakan kepada administrator kluster Anda.

Menambahkan ekstensi Azure CLI

Luncurkan lingkungan Bash di Azure Cloud Shell.

Karena perintah CLI ini belum menjadi bagian dari set CLI inti, tambahkan dengan perintah berikut:

az extension add --upgrade --yes --name customlocation
az extension remove --name appservice-kube
az extension add --upgrade --yes --name appservice-kube

Membuat sumber daya Azure

Sebelum dapat menyebarkan kontainer ke lingkungan App Service Kubernetes baru, Anda harus membuat dua sumber daya lainnya:

  • Akun penyimpanan. Meskipun artikel ini membuat akun penyimpanan, dalam beberapa kasus akun penyimpanan mungkin tidak diperlukan. Untuk informasi selengkapnya, lihat kluster yang dengan dukungan Azure Arc di artikel pertimbangan penyimpanan.
  • Aplikasi fungsi, yang menyediakan konteks untuk menjalankan kontainer. Aplikasi fungsi berjalan di lingkungan App Service Kubernetes dan dipetakan ke proyek fungsi lokal Anda. Aplikasi fungsi memungkinkan Anda untuk mengelompokkan fungsi sebagai unit logis untuk manajemen, penyebaran, dan berbagi sumber daya yang lebih mudah.

Catatan

Aplikasi fungsi berjalan di lingkungan App Service Kubernetes pada paket Khusus (App Service). Saat Anda membuat aplikasi fungsi tanpa paket yang ada, paket akan dibuat untuk Anda.

Membuat Akun penyimpanan

Gunakan perintah az storage account create untuk membuat akun penyimpanan dengan tujuan umum di grup dan wilayah sumber daya Anda:

az storage account create --name <STORAGE_NAME> --location westeurope --resource-group myResourceGroup --sku Standard_LRS

Catatan

Dalam beberapa kasus, akun penyimpanan mungkin tidak diperlukan. Untuk informasi selengkapnya, lihat kluster yang dengan dukungan Azure Arc di artikel pertimbangan penyimpanan.

Di contoh sebelumnya, ganti <STORAGE_NAME> dengan nama yang sesuai untuk Anda dan unik di Azure Storage. Nama harus berisi tiga hingga 24 karakter angka dan huruf kecil saja. Standard_LRS menentukan akun tujuan umum, yang didukung oleh Functions. Nilai --location merupakan wilayah Azure standar.

Buat aplikasi fungsi

Jalankan perintah buat functionapp az untuk membuat aplikasi fungsi baru di lingkungan.

az functionapp create --name <APP_NAME> --custom-location <CUSTOM_LOCATION_ID> --storage-account <STORAGE_NAME> --resource-group AzureFunctionsContainers-rg --image <LOGIN_SERVER>/azurefunctionsimage:v1.0.0 --registry-username <USERNAME> --registry-password <SECURE_PASSWORD> 

Dalam contoh ini, ganti <CUSTOM_LOCATION_ID> dengan ID lokasi kustom yang Anda tentukan untuk lingkungan App Service Kubernetes. Selain itu, ganti <STORAGE_NAME> dengan nama akun yang Anda gunakan di langkah sebelumnya, <APP_NAME> dengan nama unik global, dan <DOCKER_ID> atau <LOGIN_SERVER> dengan ID akun Docker Hub atau server Container Registry Anda. Saat Anda menyebarkan dari registri kontainer kustom, nama gambar menunjukkan URL registri.

Saat pertama kali membuat aplikasi fungsi, aplikasi ini akan menarik gambar awal dari Docker Hub Anda.

Mengatur pengaturan aplikasi yang diperlukan

Jalankan perintah berikut untuk membuat pengaturan aplikasi untuk string koneksi akun penyimpanan:

storageConnectionString=$(az storage account show-connection-string --resource-group AzureFunctionsContainers-rg --name <STORAGE_NAME> --query connectionString --output tsv)
az functionapp config appsettings set --name <app_name> --resource-group AzureFunctionsContainers-rg --settings AzureWebJobsStorage=$storageConnectionString

Kode ini harus dijalankan baik di Cloud Shell atau di Bash di komputer lokal. Ganti <STORAGE_NAME> dengan nama akun penyimpanan dan <APP_NAME> dengan nama aplikasi fungsi.

Menggunakan fungsi pada Azure

Karena fungsi Anda menggunakan pemicu HTTP, Anda memanggilnya dengan membuat permintaan HTTP ke URL-nya di browser atau dengan alat seperti curl.

Salin Panggilan URL lengkap yang ditampilkan dalam output perintah terbitkan ke bilah alamat browser, menambahkan parameter kueri ?name=Functions. Browser harus menampilkan output yang sama seperti saat Anda menjalankan fungsi secara lokal.

Output fungsi berjalan pada Azure di browser

Membersihkan sumber daya

Jika Anda ingin terus bekerja dengan Azure Function menggunakan sumber daya yang Anda buat di artikel ini, Anda dapat membiarkan semua sumber daya tersebut di tempatnya.

Setelah Anda selesai bekerja dengan penyebaran aplikasi fungsi ini, hapus AzureFunctionsContainers-rg grup sumber daya untuk membersihkan semua sumber daya dalam grup tersebut:

az group delete --name AzureFunctionsContainers-rg

Ini hanya menghapus sumber daya yang dibuat dalam artikel ini. Lingkungan Azure Arc yang mendasar tetap diberlakukan.

Langkah berikutnya