Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Bu makalede, Azure Container Apps ile kural tabanlı yönlendirmeyi kullanmayı öğreneceksiniz. Kural tabanlı yönlendirme ile kapsayıcı uygulamalar ortamınızda tam etki alanı adı (FQDN) oluşturursunuz. Ardından, bu FQDN isteklerini her isteğin yoluna bağlı olarak farklı kapsayıcı uygulamalarına yönlendirmek için kuralları kullanırsınız.
Yönlendirme ve yetkilendirme modeli
HTTP rota yapılandırmaları (httpRouteConfigs) Container Apps ortam seviyesinde çalışır. Bir rota, hedef uygulamanın bireysel giriş ayarından bağımsız olarak, aynı ortamdaki herhangi bir konteyner uygulamasını hedefleyebilir. Rotanın FQDN'si ortamın alan adı altında yayımlandığından, bir rota istekleri iç giriş () kullanan bir konteyner uygulamasına ileten bir kamuya açık giriş noktası sağlayabilir.external: false Bu davranış, birden fazla uygulamanın tek bir ana bilgisayar altında oluşturulmasını sağlar.
HTTP rota yapılandırmaları için verilen izinler, bireysel konteyner uygulamalarından ziyade yönetilen ortama göre kapsamlıdır. Bir rota oluşturmak, güncellemek veya silmek için ortamın izni gereklidir Microsoft.App/managedEnvironments/httpRouteConfigs/write . Hedef konteyner uygulaması için ekstra izin gerekmez. Bu davranış, ortamın paylaşılan bir güven sınırı olmasıyla tutarlıdır; burada bir ortamdaki tüm konteyner uygulamaları aynı müşteriye aittir. Çevre kapsamında bir rolü olan ve httpRouteConfigs/write izin içeren herhangi bir yönetici, örneğin çevredeki katkı sağlayıcı, o ortamdaki herhangi bir konteyner uygulamasını hedefleyen rotalar oluşturabilir.
Important
HTTP rota yapılandırması, uygulamayı rota hedefi olarak yapılandırırsanız, dahili giriş (external: false) kullanan bir konteyner uygulamasını ortaya çıkarabilir. Bu external: false ayar, uygulamanın kendi FQDN'sinin görünürlüğünü kontrol eder. Bu yapılandırmayı kullanarak, ortam uygulamanın ortam düzeyinde bir rota üzerinden trafik almasını engellemez. Bir konteyner uygulamasının ortam dışından ulaşılmaz olmasını sağlamak için, onu herhangi bir HTTP rota yapılandırmasında hedef olarak referans vermeyin. Bunun yerine, uygulamayı kamuya açık rotası olmayan ayrı bir ortama yerleştirin veya gelen trafiği kısıtlamak için ağ düzeyinde kontroller kullanın.
Önkoşullar
Etkin aboneliği olan Azure hesabı.
- Eğer sizde yoksa ücretsiz olarak bir hesap oluşturabilirsiniz.
Azure CLI’yi yükleyin.
Kurulum
Cli'dan Azure'da oturum açmak için aşağıdaki komutu çalıştırın.
az loginCLI'nın en son sürümünü çalıştırdığınızdan emin olmak için yükseltme komutunu çalıştırın.
az upgradeHâlihazırda kullanılmakta olan modüller hakkında herhangi bir uyarıyı dikkate almayın.
Geçerli uzantı veya modül yüklendikten sonra,
Microsoft.AppveMicrosoft.OperationalInsightsad alanlarını kaydedin.az provider register --namespace Microsoft.Appaz provider register --namespace Microsoft.OperationalInsights
Ortam değişkenlerini oluşturma
Aşağıdaki ortam değişkenlerini oluşturun.
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"
Kapsayıcı uygulamaları oluşturun
İlk kapsayıcı uygulamanızı oluşturmak için aşağıdaki komutu çalıştırın. Bu kapsayıcı uygulaması Container Apps hızlı başlangıç görüntüsünü kullanır.
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.fqdnİkinci kapsayıcı uygulamanızı oluşturmak için aşağıdaki komutu çalıştırın. Bu kapsayıcı uygulaması ASP.NET hızlı başlangıç görüntüsünü kullanır.
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.fqdnHTTP yol yapılandırması oluşturma.
Aşağıdaki dosyayı oluşturun ve olarak
routing.ymlkaydedin.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-2Bu yapılandırma, HTTP trafiği için iki yönlendirme kuralı tanımlar.
Uyarı
Yönlendirme kurallarının sırası önemlidir.
Daha belirli öneklerin, daha az belirli öneklerden önce gelmesi gerekir.
Örneğin, ilk kural /api ön eki ile eşleşiyorsa, ikinci kural /api/v1 ön ekini kullansa bile bu kullanılır.
Mülkiyet Açıklama descriptionKural için insan tarafından okunabilir etiket routes.match.prefixEşleşecek URL yolu ön eki. Örneğin, /api.routes.action.prefixRewriteİletmeden önce eşleşen ön ekin yerine ne koyabilirsiniz? targets.containerAppEşleşen yol isteğinin gönderildiği kapsayıcı uygulamasının adı. Bu kurallar, etki alanınızdaki farklı yolların farklı kapsayıcı uygulamalarına yönlendirilmesine olanak sağlarken, hedef uygulamaya ulaşmadan önce istek yolunu da değiştirir.
Yollarınızı etkileyebilecek, listelenmeyen diğer özellikler şunlardır.
Mülkiyet Açıklama route.match.pathTam eşleşme yol tanımı. route.match.pathSeparatedPrefixHerhangi bir metin yerine '/' sınırlarındaki yolları eşleştirir. Örneğin, değeri /productolarak ayarlarsanız,/product/1üzerinde eşleşir, ancak/product1üzerinde eşleşmez.route.match.caseSensitiveYol desenlerinin büyük/küçük harf duyarlılığıyla eşleşip eşleşmediğini denetler. target.labelKapsayıcı uygulamasında belirli bir etiketli düzeltmeye yönlendirme. target.revisionKapsayıcı uygulamasında belirli bir düzeltmeye yönlendirme. HTTP yol yapılandırmasını oluşturmak için aşağıdaki komutu çalıştırın.
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.fqdnHTTP yol yapılandırmanızın tam nitelikli etki alanı adı (FQDN) şu örneğe benzer:
my-route-config.ambitiouspebble-11ba6155.eastus.azurecontainerapps.io
Her iki kapsayıcı uygulamanın da zaten var olduğundan emin olun.
Aşağıdaki Bicep dosyasını oluşturun ve
routing.bicepdosya adı olarak kaydedin.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.fqdnBicep dosyasını aşağıdaki komutla dağıtın:
az deployment group create ` --name $ROUTE_CONFIG_NAME ` --resource-group $RESOURCE_GROUP ` --template-file routing.bicepÇıktıda, HTTP yol yapılandırmanızın tam etki alanı adını (FQDN) içeren
outputsöğesini bulun. Örneğin:"outputs": { "fqdn": { "type": "String", "value": "my-route-config.ambitiouspebble-11ba6155.eastus.azurecontainerapps.io" } },
HTTP yol yapılandırmasını doğrulama
HTTP yol yapılandırması FQDN'nize
/app1yolu ile gidin.Örneğin:
my-route-config.ambitiouspebble-11ba6155.eastus.azurecontainerapps.io/app1.Container Apps hızlı başlangıç görüntüsünü görürsünüz.
HTTP yol yapılandırması FQDN'nize
/app2yolu ile gidin.Örneğin:
my-route-config.ambitiouspebble-11ba6155.eastus.azurecontainerapps.io/app2.ASP.NET hızlı başlangıç görüntüsünü görürsünüz.
Kaynakları temizleme
Bu uygulamayı kullanmaya devam etmeyecekseniz, bu hızlı başlangıçta oluşturulan tüm kaynaklarla birlikte kaynak grubunu silmek için aşağıdaki komutu çalıştırın.
Dikkat
Aşağıdaki komut, belirtilen kaynak grubunu ve içindeki tüm kaynakları siler. Bu hızlı başlangıcın kapsamı dışındaki kaynaklar belirtilen kaynak grubunda varsa, bunlar da silinir.
az group delete --name my-container-apps