Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Dalam artikel ini, Anda akan mempelajari cara menggunakan perutean berbasis aturan dengan Azure Container Apps. Dengan perutean berbasis aturan, Anda membuat nama domain yang sepenuhnya memenuhi syarat (FQDN) di lingkungan aplikasi kontainer Anda. Anda kemudian menggunakan aturan untuk merutekan permintaan FQDN ini ke aplikasi kontainer yang berbeda, tergantung pada jalur setiap permintaan.
Model routing dan otorisasi
Konfigurasi rute HTTP (httpRouteConfigs) beroperasi pada tingkat lingkungan Container Apps. Sebuah rute dapat menargetkan aplikasi kontainer apa pun dalam lingkungan yang sama, terlepas dari pengaturan ingress individual aplikasi target tersebut. Karena FQDN rute dipublikasikan di bawah domain lingkungan, rute dapat menyediakan titik masuk publik yang meneruskan permintaan ke aplikasi kontainer yang menggunakan internal ingress ().external: false Perilaku ini memungkinkan komposisi beberapa aplikasi di bawah satu host.
Izin untuk konfigurasi rute HTTP dibatasi ke lingkungan yang dikelola, bukan ke aplikasi kontainer individual. Membuat, memperbarui, atau menghapus rute memerlukan Microsoft.App/managedEnvironments/httpRouteConfigs/write izin pada lingkungan. Tidak diperlukan izin tambahan pada aplikasi kontainer target. Perilaku ini konsisten dengan lingkungan yang merupakan batas kepercayaan bersama, di mana semua aplikasi kontainer dalam suatu lingkungan dimiliki oleh pelanggan yang sama. Setiap principal dengan peran yang mencakup cakupan lingkungan yang mencakup httpRouteConfigs/write izin, seperti Contributor di lingkungan, dapat membuat rute yang menargetkan aplikasi kontainer apa pun di lingkungan tersebut.
Important
Konfigurasi rute HTTP dapat mengekspos aplikasi kontainer yang menggunakan internal ingress (external: false) jika Anda mengonfigurasi aplikasi tersebut sebagai target rute. Pengaturan ini external: false mengontrol visibilitas FQDN aplikasi itu sendiri. Dengan menggunakan konfigurasi ini, lingkungan tidak mencegah aplikasi menerima lalu lintas melalui rute tingkat lingkungan. Untuk menjaga aplikasi kontainer tetap tidak dapat dijangkau dari luar lingkungan, jangan merujuknya sebagai target dalam konfigurasi rute HTTP apa pun. Sebagai gantinya, tempatkan aplikasi di lingkungan terpisah yang tidak memiliki rute publik, atau gunakan kontrol tingkat jaringan untuk membatasi lalu lintas masuk.
Prasyarat
Akun Azure dengan langganan aktif.
- Jika Anda tidak memilikinya, Anda dapat membuatnya secara gratis.
Instal Azure CLI.
Pengaturan
Jalankan perintah berikut sehingga masuk ke Azure dari CLI.
az loginUntuk memastikan Anda menjalankan CLI versi terbaru, jalankan perintah peningkatan.
az upgradeAbaikan peringatan apa pun tentang modul yang saat ini digunakan.
Sekarang setelah ekstensi atau modul saat ini diinstal, daftarkan
Microsoft.AppdanMicrosoft.OperationalInsightsnamespace.az provider register --namespace Microsoft.Appaz provider register --namespace Microsoft.OperationalInsights
Membuat variabel lingkungan
Buat variabel lingkungan berikut.
CONTAINER_APP_1_NAME="my-container-app-1"
CONTAINER_APP_1_IMAGE="mcr.microsoft.com/k8se/quickstart:latest"
CONTAINER_APP_1_TARGET_PORT="80"
CONTAINER_APP_2_NAME="my-container-app-2"
CONTAINER_APP_2_IMAGE="mcr.microsoft.com/dotnet/samples:aspnetapp"
CONTAINER_APP_2_TARGET_PORT="8080"
LOCATION="eastus"
RESOURCE_GROUP="my-container-apps"
ENVIRONMENT_NAME="my-container-apps-env"
ROUTE_CONFIG_NAME="my-route-config"
Membuat aplikasi kontainer
Jalankan perintah berikut untuk membuat aplikasi kontainer pertama Anda. Aplikasi kontainer ini menggunakan gambar quickstart Container Apps.
az containerapp up \ --name $CONTAINER_APP_1_NAME \ --resource-group $RESOURCE_GROUP \ --location $LOCATION \ --environment $ENVIRONMENT_NAME \ --image $CONTAINER_APP_1_IMAGE \ --target-port $CONTAINER_APP_1_TARGET_PORT \ --ingress external \ --query properties.configuration.ingress.fqdnJalankan perintah berikut untuk membuat aplikasi kontainer kedua Anda. Aplikasi kontainer ini menggunakan gambar mulai cepat ASP.NET.
az containerapp up \ --name $CONTAINER_APP_2_NAME \ --resource-group $RESOURCE_GROUP \ --location $LOCATION \ --environment $ENVIRONMENT_NAME \ --image $CONTAINER_APP_2_IMAGE \ --target-port $CONTAINER_APP_2_TARGET_PORT \ --ingress external \ --query properties.configuration.ingress.fqdnBuat konfigurasi rute HTTP.
Buat file berikut dan simpan sebagai
routing.yml.rules: - description: App 1 rule routes: - match: prefix: /app1 action: prefixRewrite: / targets: - containerApp: my-container-app-1 - description: App 2 rule routes: - match: path: /app2 action: prefixRewrite: / - match: path: / targets: - containerApp: my-container-app-2Konfigurasi ini menentukan dua aturan perutean untuk lalu lintas HTTP.
Nota
Urutan aturan perutean penting.
Awalan yang lebih spesifik harus sebelum awalan yang kurang spesifik.
Misalnya, jika aturan pertama cocok dengan awalan /api, yang akan digunakan bahkan jika aturan kedua menggunakan awalan /api/v1.
Harta benda Deskripsi descriptionLabel yang dapat dibaca manusia untuk aturan routes.match.prefixAwalan jalur URL untuk dicocokkan. Contohnya, /api.routes.action.prefixRewriteApa yang harus digunakan untuk mengganti awalan yang cocok sebelum diteruskan. targets.containerAppNama aplikasi kontainer tempat permintaan rute yang sesuai dikirim. Aturan ini memungkinkan jalur yang berbeda di domain Anda untuk dirutekan ke aplikasi kontainer yang berbeda sambil juga memodifikasi jalur permintaan sebelum mencapai aplikasi tujuan.
Properti lain yang tidak tercantum yang dapat memengaruhi rute Anda termasuk yang berikut ini.
Harta benda Deskripsi route.match.pathDefinisi jalur pencocokan yang tepat. route.match.pathSeparatedPrefixMencocokkan rute pada batas '/' daripada teks apa pun. Misalnya, jika Anda mengatur nilai ke /product, maka nilai akan cocok pada/product/1, tetapi tidak/product1.route.match.caseSensitiveMengontrol apakah pola rute cocok dengan sensitivitas huruf besar/kecil atau tidak. target.labelArahkan ke revisi berlabel tertentu dalam aplikasi kontainer. target.revisionArahkan ke revisi tertentu pada aplikasi kontainer. Jalankan perintah berikut untuk membuat konfigurasi rute HTTP.
az containerapp env http-route-config create \ --http-route-config-name $ROUTE_CONFIG_NAME \ --resource-group $RESOURCE_GROUP \ --name $ENVIRONMENT_NAME \ --yaml routing.yml \ --query properties.fqdnNama domain konfigurasi rute HTTP Anda yang sepenuhnya memenuhi syarat (FQDN) terlihat seperti contoh ini:
my-route-config.ambitiouspebble-11ba6155.eastus.azurecontainerapps.io
Pastikan kedua aplikasi kontainer sudah ada.
Buat file Bicep berikut dan simpan sebagai
routing.bicep.resource containerAppsEnvironment 'Microsoft.App/managedEnvironments@2024-10-02-preview' = { name: 'my-container-apps-env' location: 'eastus' tags: {} properties: { workloadProfiles: [ { workloadProfileType: 'Consumption' name: 'Consumption' } ] } } resource httpRouteConfig 'Microsoft.App/managedEnvironments/httpRouteConfigs@2024-10-02-preview' = { parent: containerAppsEnvironment name: 'my-route-config' location: 'eastus' properties: { rules: [ { description: 'App 1 rule' routes: [ { match: { prefix: '/app1' } action: { prefixRewrite: '/' } } ] targets: [ { containerApp: 'my-container-app-1' } ] } { description: 'App 2 rule' routes: [ { match: { path: '/app2' } action: { prefixRewrite: '/' } } { match: { path: '/' } } ] targets: [ { containerApp: 'my-container-app-2' } ] } ] } } output fqdn string = httpRouteConfig.properties.fqdnSebarkan file Bicep dengan perintah berikut:
az deployment group create ` --name $ROUTE_CONFIG_NAME ` --resource-group $RESOURCE_GROUP ` --template-file routing.bicepDalam output, temukan
outputs, yang berisi nama domain konfigurasi rute HTTP Anda yang sepenuhnya memenuhi syarat (FQDN). Contohnya:"outputs": { "fqdn": { "type": "String", "value": "my-route-config.ambitiouspebble-11ba6155.eastus.azurecontainerapps.io" } },
Memverifikasi konfigurasi rute HTTP
Akses FQDN konfigurasi rute HTTP Anda dengan menambahkan jalur
/app1.Misalnya:
my-route-config.ambitiouspebble-11ba6155.eastus.azurecontainerapps.io/app1.Anda melihat gambar panduan cepat Container Apps.
Akses FQDN konfigurasi rute HTTP Anda dengan menambahkan jalur
/app2.Misalnya:
my-route-config.ambitiouspebble-11ba6155.eastus.azurecontainerapps.io/app2.Anda melihat gambar panduan cepat ASP.NET.
Membersihkan sumber daya
Jika Anda tidak akan menggunakan aplikasi ini lagi, jalankan perintah berikut untuk menghapus grup sumber daya beserta semua sumber daya yang dibuat dalam panduan cepat ini.
Perhatian
Perintah berikut menghapus grup sumber daya yang ditentukan dan semua sumber daya yang terkandung di dalamnya. Jika ada sumber daya di luar lingkup panduan cepat ini di dalam grup sumber daya yang ditentukan, sumber daya tersebut juga akan dihapus.
az group delete --name my-container-apps
Konten terkait
- Referensi Azure CLI
- referensi Bicep
- referensi templat ARM