Tutorial: Menyebarkan aplikasi Dapr ke Azure Container Apps menggunakan Azure CLI
Dapr (Distributed Application Runtime) membantu pengembang membangun layanan mikro yang tangguh dan andal. Dalam tutorial ini, sampel aplikasi Dapr disebarkan ke Azure Container Apps.
Anda akan mempelajari cara untuk:
- Membuat lingkungan Container Apps untuk aplikasi kontainer Anda
- Membuat penyimpanan status Azure Blob Storage untuk aplikasi kontainer
- Menyebarkan dua aplikasi yang menghasilkan dan menggunakan pesan dan menyimpannya di penyimpanan negara
- Verifikasi interaksi antara dua layanan mikro.
Dengan Azure Container Apps, Anda mendapatkan versi API Dapr yang dikelola sepenuhnya saat membangun layanan mikro. Saat Anda menggunakan Dapr di Azure Container Apps, Anda dapat mengaktifkan sidecar untuk berjalan di sebelah layanan mikro Anda yang menyediakan serangkaian kemampuan yang kaya. API Dapr yang tersedia mencakup Panggilan Layanan ke Layanan, Pub/Sub, Pengikatan Kejadian, Penyimpanan Status, dan Pelaku.
Dalam tutorial ini, Anda menyebarkan aplikasi yang sama dari mulai cepat Dapr Halo Dunia.
Aplikasi ini terdiri dari:
- Aplikasi kontainer klien (Python) untuk menghasilkan pesan.
- Aplikasi kontainer layanan (Node) untuk menggunakan dan mempertahankan pesan tersebut dalam penyimpanan status
Diagram arsitektur berikut menggambarkan komponen yang membentuk tutorial ini:
Siapkan
Untuk masuk ke Azure dari CLI, jalankan perintah berikut dan ikuti perintah untuk menyelesaikan proses autentikasi.
az login
Untuk memastikan Anda menjalankan CLI versi terbaru, jalankan perintah peningkatan.
az upgrade
Selanjutnya, instal atau perbarui ekstensi Azure Container Apps untuk CLI.
Jika Anda menerima kesalahan tentang parameter yang hilang saat menjalankan az containerapp
perintah di Azure CLI atau cmdlet dari Az.App
modul di Azure PowerShell, pastikan Anda memiliki versi terbaru ekstensi Azure Container Apps yang terinstal.
az extension add --name containerapp --upgrade
Catatan
Mulai Mei 2024, ekstensi Azure CLI tidak lagi mengaktifkan fitur pratinjau secara default. Untuk mengakses fitur pratinjau Container Apps, instal ekstensi Container Apps dengan --allow-preview true
.
az extension add --name containerapp --upgrade --allow-preview true
Sekarang setelah ekstensi atau modul saat ini diinstal, daftarkan Microsoft.App
namespace layanan dan Microsoft.OperationalInsights
.
Catatan
Sumber daya Azure Container Apps telah bermigrasi dari namespace layanan Microsoft.Web
ke namespace layanan Microsoft.App
. Lihat Migrasi Namespace layanan dari Microsoft.Web ke Microsoft.App pada bulan Maret 2022 untuk detail selengkapnya.
az provider register --namespace Microsoft.App
az provider register --namespace Microsoft.OperationalInsights
Atur variabel lingkungan
Atur variabel lingkungan berikut. Ganti <PLACEHOLDERS> dengan nilai Anda:
RESOURCE_GROUP="<RESOURCE_GROUP>"
LOCATION="<LOCATION>"
CONTAINERAPPS_ENVIRONMENT="<CONTAINERAPPS_ENVIRONMENT>"
Membuat Grup Sumber Daya Azure
Buat grup sumber daya untuk mengatur layanan yang terkait dengan penyebaran aplikasi kontainer Anda.
az group create \
--name $RESOURCE_GROUP \
--location "$LOCATION"
Membuat lingkungan
Lingkungan di Aplikasi Kontainer Azure menciptakan batas aman di sekitar sekelompok aplikasi kontainer. Aplikasi Kontainer yang disebarkan ke lingkungan yang sama disebarkan di jaringan virtual yang sama dan menulis log ke ruang kerja Log Analytics yang sama.
Untuk membuat lingkungan, jalankan perintah berikut:
az containerapp env create \
--name $CONTAINERAPPS_ENVIRONMENT \
--resource-group $RESOURCE_GROUP \
--location "$LOCATION"
Menyiapkan penyimpanan status
Membuat akun Azure Blob Storage
Dengan lingkungan yang disebarkan, langkah selanjutnya adalah menyebarkan akun Azure Blob Storage yang digunakan oleh salah satu layanan mikro untuk menyimpan data. Sebelum menyebarkan layanan, Anda perlu memilih nama untuk akun penyimpanan. Nama akun penyimpanan harus unik dalam Azure dan panjangnya antara 3 hingga 24 karakter dan harus hanya boleh berisi angka dan huruf kecil.
STORAGE_ACCOUNT_NAME="<storage account name>"
Gunakan perintah berikut untuk membuat akun Azure Storage.
az storage account create \
--name $STORAGE_ACCOUNT_NAME \
--resource-group $RESOURCE_GROUP \
--location "$LOCATION" \
--sku Standard_RAGRS \
--kind StorageV2
Mengonfigurasi identitas yang ditetapkan pengguna untuk aplikasi simpul
Meskipun Container Apps mendukung identitas terkelola yang ditetapkan pengguna dan ditetapkan sistem, identitas yang ditetapkan pengguna menyediakan aplikasi simpul berkemampuan Dapr dengan izin untuk mengakses akun penyimpanan blob.
- Membuat identitas yang ditetapkan pengguna.
az identity create --resource-group $RESOURCE_GROUP --name "nodeAppIdentity" --output json
principalId
Ambil properti dan id
dan simpan dalam variabel.
PRINCIPAL_ID=$(az identity show -n "nodeAppIdentity" --resource-group $RESOURCE_GROUP --query principalId | tr -d \")
IDENTITY_ID=$(az identity show -n "nodeAppIdentity" --resource-group $RESOURCE_GROUP --query id | tr -d \")
CLIENT_ID=$(az identity show -n "nodeAppIdentity" --resource-group $RESOURCE_GROUP --query clientId | tr -d \")
Storage Blob Data Contributor
Menetapkan peran ke identitas yang ditetapkan pengguna
Ambil ID langganan untuk langganan Anda saat ini.
SUBSCRIPTION_ID=$(az account show --query id --output tsv)
az role assignment create --assignee $PRINCIPAL_ID \
--role "Storage Blob Data Contributor" \
--scope "/subscriptions/$SUBSCRIPTION_ID/resourceGroups/$RESOURCE_GROUP/providers/Microsoft.Storage/storageAccounts/$STORAGE_ACCOUNT_NAME"
Konfigurasikan komponen penyimpanan status
Ada beberapa cara untuk mengautentikasi ke sumber daya eksternal melalui Dapr. Contoh ini tidak menggunakan Dapr Secrets API saat runtime, tetapi menggunakan penyimpanan status berbasis Azure. Oleh karena itu, Anda dapat forgo membuat komponen penyimpanan rahasia dan sebaliknya menyediakan akses langsung dari aplikasi simpul ke penyimpanan blob menggunakan Identitas Terkelola. Jika Anda ingin menggunakan penyimpanan status non-Azure atau DAPR Secrets API saat runtime, Anda dapat membuat komponen penyimpanan rahasia. Komponen ini akan memuat rahasia runtime sehingga Anda dapat mereferensikannya saat runtime.
Buka editor teks dan buat file konfigurasi bernama statestore.yaml dengan properti yang Anda sumber dari langkah sebelumnya. File ini membantu mengaktifkan aplikasi Dapr Anda untuk mengakses penyimpanan status Anda. Contoh berikut menunjukkan bagaimana file statestore.yaml Anda akan terlihat saat dikonfigurasi untuk akun Azure Blob Storage Anda:
# statestore.yaml for Azure Blob storage component
componentType: state.azure.blobstorage
version: v1
metadata:
- name: accountName
value: "<STORAGE_ACCOUNT_NAME>"
- name: containerName
value: mycontainer
- name: azureClientId
value: "<MANAGED_IDENTITY_CLIENT_ID>"
scopes:
- nodeapp
Untuk menggunakan file ini, perbarui tempat penampung:
- Ganti
<STORAGE_ACCOUNT_NAME>
dengan nilai variabelSTORAGE_ACCOUNT_NAME
yang Anda tentukan. Untuk mendapatkan nilainya, jalankan perintah berikut:
echo $STORAGE_ACCOUNT_NAME
- Ganti
<MANAGED_IDENTITY_CLIENT_ID>
dengan nilai variabelCLIENT_ID
yang Anda tentukan. Untuk mendapatkan nilainya, jalankan perintah berikut:
echo $CLIENT_ID
Navigasikan ke direktori tempat Anda menyimpan file yaml komponen dan jalankan perintah berikut untuk mengonfigurasi komponen Dapr di lingkungan Container Apps. Untuk informasi selengkapnya tentang mengonfigurasi komponen Dapr, lihat Mengonfigurasi komponen Dapr.
az containerapp env dapr-component set \
--name $CONTAINERAPPS_ENVIRONMENT --resource-group $RESOURCE_GROUP \
--dapr-component-name statestore \
--yaml statestore.yaml
Menyebarkan aplikasi layanan (server web HTTP)
az containerapp create \
--name nodeapp \
--resource-group $RESOURCE_GROUP \
--user-assigned $IDENTITY_ID \
--environment $CONTAINERAPPS_ENVIRONMENT \
--image dapriosamples/hello-k8s-node:latest \
--min-replicas 1 \
--max-replicas 1 \
--enable-dapr \
--dapr-app-id nodeapp \
--dapr-app-port 3000 \
--env-vars 'APP_PORT=3000'
Secara default, gambar ditarik dari Docker Hub.
Menyebarkan aplikasi klien (klien tanpa induk)
Jalankan perintah berikut untuk menyebarkan aplikasi kontainer klien.
az containerapp create \
--name pythonapp \
--resource-group $RESOURCE_GROUP \
--environment $CONTAINERAPPS_ENVIRONMENT \
--image dapriosamples/hello-k8s-python:latest \
--min-replicas 1 \
--max-replicas 1 \
--enable-dapr \
--dapr-app-id pythonapp
Memverifikasi hasil
Konfirmasikan persistensi status yang berhasil
Anda dapat mengonfirmasi bahwa layanan berfungsi dengan benar dengan melihat data di akun Microsoft Azure Storage Anda.
Buka portal Microsoft Azure di browser Anda dan navigasikan ke akun penyimpanan Anda.
Pilih Kontainer di sisi kiri menu.
Pilih mycontainer.
Verifikasi bahwa Anda dapat melihat file bernama
order
dalam kontainer.Pilih file.
Pilih tab Edit.
Pilih tombol Refresh untuk melihat bagaimana data diperbarui secara otomatis.
Menampilkan log
Log dari aplikasi kontainer disimpan dalam ContainerAppConsoleLogs_CL
tabel kustom di ruang kerja Analitik Log. Anda dapat melihat log melalui portal Azure atau melalui CLI. Mungkin ada penundaan kecil pada awalnya agar tabel muncul di ruang kerja.
Gunakan perintah CLI berikut untuk melihat log menggunakan baris perintah.
LOG_ANALYTICS_WORKSPACE_CLIENT_ID=`az containerapp env show --name $CONTAINERAPPS_ENVIRONMENT --resource-group $RESOURCE_GROUP --query properties.appLogsConfiguration.logAnalyticsConfiguration.customerId --out tsv`
az monitor log-analytics query \
--workspace $LOG_ANALYTICS_WORKSPACE_CLIENT_ID \
--analytics-query "ContainerAppConsoleLogs_CL | where ContainerAppName_s == 'nodeapp' and (Log_s contains 'persisted' or Log_s contains 'order') | project ContainerAppName_s, Log_s, TimeGenerated | sort by TimeGenerated | take 5" \
--out table
Output berikut menunjukkan jenis respons yang diharapkan dari perintah CLI.
ContainerAppName_s Log_s TableName TimeGenerated
-------------------- ------------------------------- ------------- ------------------------
nodeapp Got a new order! Order ID: 61 PrimaryResult 2021-10-22T21:31:46.184Z
nodeapp Successfully persisted state. PrimaryResult 2021-10-22T21:31:46.184Z
nodeapp Got a new order! Order ID: 62 PrimaryResult 2021-10-22T22:01:57.174Z
nodeapp Successfully persisted state. PrimaryResult 2021-10-22T22:01:57.174Z
nodeapp Got a new order! Order ID: 63 PrimaryResult 2021-10-22T22:45:44.618Z
Membersihkan sumber daya
Selamat! Anda secara resmi telah menyelesaikan tutorial ini. Jika Anda ingin menghapus sumber daya yang dibuat sebagai bagian dari panduan ini, jalankan perintah berikut.
Perhatian
Perintah ini menghapus grup sumber daya yang ditentukan dan semua sumber daya yang terkandung di dalamnya. Jika sumber daya di luar lingkup artikel ini ada di grup sumber daya yang ditentukan, sumber daya tersebut juga akan dihapus.
az group delete --resource-group $RESOURCE_GROUP
Catatan
Karena pythonapp
terus-menerus melakukan panggilan ke nodeapp
dengan pesan yang disimpan ke penyimpanan status Anda yang dikonfigurasi, penting untuk menyelesaikan langkah penghapusan ini untuk menghindari operasi yang sedang berlangsung yang dapat ditagih.
Tip
Mengalami masalah? Beri tahu kami di GitHub dengan membuka masalah di repositori Azure Container Apps.
Langkah berikutnya
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk