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.
Azure Container Apps, kapsayıcı uygulamalarınızın altyapıyı yönetmeden birbirleriyle iletişim kurabilmesi için yerleşik hizmet bulma ve yönlendirme sağlar. Aynı ortama birden çok kapsayıcı uygulaması dağıttığınızda, platform DNS çözümlemesini, yük dengelemeyi ve güvenli trafik yönlendirmesini otomatik olarak işler.
Ingress etkinse, her kapsayıcı uygulaması bir domain adı alır. Bu uç noktayı genel kullanıma açabilir veya aynı ortamdaki diğer kapsayıcı uygulamalarıyla kısıtlayabilirsiniz.
Kapsayıcı uygulamaları aşağıdaki yöntemlerden herhangi biri aracılığıyla birbirine erişebilir:
- Tam Nitelikli Alan Adı (FQDN) : varsayılan olarak oluşturulan etki alanı
-
Uygulama adı: dahili aramalar için kısa formlu
http://<APP_NAME>bir adres - Dapr hizmet çağrısı: Yerleşik yeniden denemeler ve gözlemlenebilirlik ile sepet tabanlı bir yaklaşım
- Özel alan adı: yönetilen sertifika ile kendi alan adınız
Not
FQDN veya uygulama adını kullanarak aynı ortamdaki başka bir kapsayıcı uygulamasını çağırdığınızda, ağ trafiği ortamdan hiçbir zaman ayrılmaz.
Neden önemlidir?
Mikro hizmetler mimarisinde hizmetlerin birbirini güvenilir bir şekilde çağırması gerekir. Azure Container Apps hizmet bulmayı ayarlama, DNS kayıtlarını yönetme ve ters proxy'leri yapılandırma işlem yükünü ortadan kaldırır.
Platform sizin için şunları işler:
- Otomatik DNS kaydı: Her kapsayıcı uygulama dağıtıldığında hemen çözümlenebilir bir ana bilgisayar adı kazanır.
- Ara sunucuyla yönetilen yönlendirme: Tüm uygulamalar arası trafik, TLS sonlandırma, trafik bölme ve yük dengelemeyi işleyen yerleşik bir Envoy proxy katmanı üzerinden akar.
- Ortam kapsamlı yalıtım: İç uç noktalara yalnızca aynı ortamdan ulaşılabilir ve doğal bir güvenlik sınırı oluşturulur.
- Protokol esnekliği: İş yükü gereksinimlerinize bağlı olarak HTTP/1.1, HTTP/2 (gRPC için) veya ham TCP üzerinden iletişim.
Bu özellikler ağ tesisatı yerine uygulama mantığınıza odaklanabileceğiniz anlamına gelir.
Kapsayıcı uygulaması konumu (FQDN)
Her kapsayıcı uygulamasının tam etki alanı adı uygulama adından, benzersiz bir ortam tanımlayıcıdan ve bölgeden oluşur. Bu etki alanı parçalarının azurecontainerapps.io tümü en üst düzey etki alanının altına girer.
Dış ve iç Tam Nitelikli Alan Adları (FQDN'ler)
Giriş görünürlüğü ayarı, uygulamanızın ortamın dışından erişilebilir olup olmadığını denetler:
| Görünürlük | FQDN düzeni | Ulaşılabilen kaynak |
|---|---|---|
| Dış | <APP_NAME>.<ENVIRONMENT_UNIQUE_ID>.<REGION>.azurecontainerapps.io |
Her yerde (genel internet) |
| İç | <APP_NAME>.internal.<ENVIRONMENT_UNIQUE_ID>.<REGION>.azurecontainerapps.io |
Yalnızca aynı ortam |
Girişi iç olarak ayarladığınızda, FQDN bir .internal. bölüm içerir. Aynı ortamdaki diğer kapsayıcı uygulamaları bu adresi kullanarak uygulamaya yine de ulaşabilir, ancak ortamın dışından gelen istekler ortamın proxy'sinden bir 404 yanıt alır. DNS adı ortamın paylaşılan IP'sine çözümleniyor, ancak uygulama yalnızca dahili olduğundan proxy isteği reddediyor.
Tam etki alanı adını alma
az containerapp show komutu, bir kapsayıcı uygulamasının tam etki alanı adını döndürür.
az containerapp show \
--resource-group <RESOURCE_GROUP_NAME> \
--name <CONTAINER_APP_NAME> \
--query properties.configuration.ingress.fqdn
Bu örnekte, c0 ile belirtilen yer tutucuları değerlerinizle değiştirin.
Bu komuttan döndürülen değer, aşağıdaki örneğe benzer bir etki alanı adına benzer:
myapp.happyhill-70162bb9.canadacentral.azurecontainerapps.io
Düzeltme etiketi Tam Nitelikli Alan Adları (FQDN'ler)
Belirli düzeltmelere etiket atadığınızda, her etiket üç çizgili ayırıcı kullanarak kendi benzersiz FQDN'sini alır:
<APP_NAME>---<LABEL>.<ENVIRONMENT_UNIQUE_ID>.<REGION>.azurecontainerapps.io
İç uygulamalar için, desen .internal. segmentini içerir.
<APP_NAME>---<LABEL>.internal.<ENVIRONMENT_UNIQUE_ID>.<REGION>.azurecontainerapps.io
Etiket FQDN'leri trafiği doğrudan belirli bir düzeltmeye göndermenizi sağlar. Bu uygulama, yeni sürümleri test etme, A/B denemeleri çalıştırma veya belirli düzeltme dağıtımları için kararlı uç noktalar sağlama için kullanışlıdır.
Kapsayıcı uygulamayı adıyla çağırma
Aynı ortamda yer alan başka bir kapsayıcı uygulamayı çağırmanın en kolay yolu, onu adıyla çağırmaktır.
http://<CONTAINER_APP_NAME> öğesine bir istek gönderin ve ortamın yerleşik DNS'i adı otomatik olarak çözülür.
http://my-backend-api
DNS çözümlemesi nasıl çalışır?
arka planda, Azure Container Apps kapsayıcı uygulama adlarını yönlendirilebilir adreslere çeviren özel bir DNS yapılandırması kullanır. Uygulamanız başka bir uygulamanın adına veya FQDN'sine istekte bulunursa:
- Çevrenin DNS sunucusu, ana bilgisayar adını Envoy proxy hizmeti adresine dönüştürür.
- Envoy proxy, hedef uygulamayı orijinal ana bilgisayar adından tanımlar.
- Ara sunucu, isteği trafik yapılandırmanıza göre doğru sürüm(ler)e yönlendirir.
Bu mimari, kapsayıcı uygulamalarının hiçbir zaman birbirlerinin podlarıyla doğrudan iletişim kurmamalarını sağlar. Tüm trafik TLS sonlandırma, yük dengeleme ve trafik bölme sağlayan ara sunucu katmanından geçer.
Tip
Aynı ortamdaki kapsayıcı uygulamaları arasındaki çağrılar için kısa uygulama adını (http://<APP_NAME>) kullanın. Tam FQDN'den daha basittir ve DNS her iki deseni de aynı ara sunucu üzerinden çözümlediğinden aynı şekilde çalışır.
Aktarım protokolleri
Kapsayıcı uygulamalar giriş için üç aktarım modunu destekler ve transport özelliği kullanılarak yapılandırılır.
| Transport | Kullanım örneği | Ayrıntılar |
|---|---|---|
| Otomatik (varsayılan) | Standart web API'leri ve hizmetleri | HTTP/1.1 ve HTTP/2'ye otomatik olarak anlaşma sağlar |
| HTTP/2 | gRPC hizmetleri | gRPC için gereken HTTP/2 uçtan uca'yı etkinleştirir |
| TCP | HTTP olmayan protokoller (veritabanları, özel protokoller) | Bağlantı noktası eşlemesi ile ham TCP bağlantıları |
Not
Dış TCP girişleri, özel bir sanal ağ gerektirir. Özel bir sanal ağ olmadan bir dış TCP uygulaması oluşturmaya çalışırsanız bir ContainerAppTcpRequiresVnet hata alırsınız. İç TCP girişi özel bir sanal ağ olmadan çalışır.
TCP aktarımını kullandığınızda, birincil giriş bağlantı noktasının ötesinde ek bağlantı noktalarını da kullanıma sağlayabilirsiniz. Her ek bağlantı noktası, ortamdaki diğer uygulamaların bağlanabileceği ayrı bir TCP uç noktası oluşturur.
Trafik bölme ve düzeltme yönlendirme
Azure Container Apps, trafiğin kapsayıcı uygulamaları arasında nasıl dağıtıldığını etkileyen üç düzeltme modunu destekler:
| Çalışma Modu | Davranış |
|---|---|
| Tek | Tüm trafik en son aktif revizyona gider. |
| Birden Çok | Trafik, trafik kurallarınıza göre önceki sürümler arasında yüzdelik olarak bölünür. |
| Etiketler | Etiketli her düzeltme, doğrudan erişim için benzersiz bir FQDN alır. |
Birden çok modda, başka bir kapsayıcı uygulaması uygulamanızın FQDN'sini çağırdığında, proxy istekleri yapılandırılmış ağırlıklara göre revizyonlar arasında otomatik olarak dağıtır. Etiketler modunda arayanlar, FQDN etiketini kullanarak belirli bir düzeltmeyi hedefleyebilir.
Daha fazla bilgi için bkz. Azure Container Apps Revizyonlar.
Dapr hizmeti çağırma
Dapr (Dağıtılmış Uygulama Çalışma Zamanı), uygulamalar arası iletişim için sepet tabanlı bir yaklaşım sağlar. Dapr'yi etkinleştirerek kapsayıcı uygulamalarınız karşılıklı TLS, otomatik yeniden denemeler ve Azure Application Insights aracılığıyla dağıtılmış izleme ile yerleşik hizmet çağrısı elde eder.
Dapr çağırma nasıl çalışır?
Dapr özellikli her kapsayıcı uygulaması, uygulamanızla birlikte bir sepet işlemi çalıştırır. Başka bir Dapr özellikli uygulamaya istek yapmak için, hizmet bulma ve yönlendirmeyi işleyen Dapr yan birimine yerel bir HTTP isteği gönderin.
http://localhost:3500/v1.0/invoke/<DAPR_APP_ID>/method/<METHOD_NAME>
Örneğin, catalog kimlikli bir uygulamada order-processor yöntemini çağırmak için:
http://localhost:3500/v1.0/invoke/order-processor/method/catalog
Yan araba, hedef uygulamayı ayrılmış bir DNS etki alanı aracılığıyla çözümleyerek isteği Envoy proxy katmanı üzerinden yönlendirir. Bu, FQDN tabanlı yönlendirmeyi işleyen altyapıyla aynıdır.
Not
Dapr, standart FQDN çözümlemesinden ayrı kendi DNS çözümleme yolunu ( .dapr etki alanı) kullanır. Her iki yol da ortamın proxy altyapısı üzerinden yönlendirilir.
Dapr Uygulama Kimliği
Dapr Uygulama Kimliği, diğer uygulamaların hizmetinizi çağırmak için kullandığı kimliktir. Açık bir Uygulama Kimliği ayarlamazsanız, Dapr çalışma zamanı varsayılan olarak kapsayıcı uygulama adınızı kullanır. ARM API, özel bir kimlik yapılandırmadığınızda appId: null gösterir, ancak çalışma zamanı uygulama adını otomatik olarak uygular. Farklı bir tanımlayıcıya ihtiyacınız varsa Dapr yapılandırmanızda özel bir Uygulama Kimliği ayarlayın.
Dapr Uygulama Kimlikleri bir ortamda benzersiz olmalıdır. Zaten başka bir uygulama tarafından kullanılmakta olan bir Dapr Uygulama Kimliğine sahip bir kapsayıcı uygulaması dağıtmaya çalışırsanız, kapsayıcı uygulaması kaynağı oluşturulur ancak düzeltmesi sağlayamaz (provisioningState: Failed ). Hata iletisi çakışan Uygulama Kimliğini ve bu kimliğin sahibi olan uygulamayı tanımlar.
Yalnızca dapr uygulamaları (HTTP girişi yok)
HTTP girişini yapılandırmadan kapsayıcı uygulamasında Dapr'i etkinleştirebilirsiniz. Bu durumda, uygulamaya bir FQDN veya uygulama adı üzerinden ulaşılamaz, ancak diğer Dapr özellikli uygulamalar yine de Dapr hizmeti çağrısı aracılığıyla uygulamayı çağırabilir. Bu düzen, yalnızca ağ içindeki diğer hizmetlerden çağrı alması gereken arka plan çalışanları veya olay işlemcileri için kullanışlıdır.
Tip
Azure CLI ile giriş yok uygulaması oluşturduğunuzda hem --ingress hem de --target-port bayraklarını atlarsınız.
--target-port olmadan --ingress dahil etmek bir kullanım hatası döndürür.
Dapr sepet yapılandırması
Kapsayıcı uygulamanızın özellikleri aracılığıyla Dapr sidecar'ını yapılandırırsınız. Önemli ayarlar şunlardır:
| Setting | Açıklama |
|---|---|
appId |
Dapr Uygulama Kimliği (varsayılan olarak kapsayıcı uygulaması adıdır) |
appPort |
Uygulamanızın dinleyiş noktası (giriş hedef bağlantı noktasına geri döner) |
appProtocol |
Dapr'dan uygulamaya iletişim protokolü (örneğin, http, grpc) |
logLevel |
Dapr sidecar günlük ayrıntı seviyesi |
enableApiLogging |
Dapr API çağrılarının günlüğe kaydedilip kaydedilmeyeceği |
httpMaxRequestSize |
Dapr'ın HTTP sunucusu için MB cinsinden en büyük istek gövdesi boyutu |
httpReadBufferSize |
KB'de HTTP okuma arabelleğinin en büyük boyutu |
Azure Container Apps ile Dapr'ı yapılandırma hakkında daha fazla bilgi için bkz. Azure Container Apps ile Dapr tümleştirmesi.
Uygulamalar arası iletişim için güvenlik
Azure Container Apps, kapsayıcı uygulamalarının iletişim kurma biçimini etkileyen çeşitli güvenlik özellikleri içerir:
-
Varsayılan olarak TLS: Kapsayıcı uygulamaları arasındaki tüm trafik, TLS sonlandırmasını işleyen Envoy ara sunucusu üzerinden yönlendirilir. HTTPS yeniden yönlendirmelerini zorunlu kılmak için
allowInsecureögesinifalse(varsayılan) olarak ayarlayın. -
İstemci sertifika modu (mTLS): İstemci sertifika modunu
require,acceptveyaignoreolarak ayarlayarak karşılıklı TLS'yi yapılandırın. - IP kısıtlamaları: Uygulamanıza hangi IP adreslerinin ulaşabileceğini kısıtlamak için izin verme veya reddetme kuralları tanımlayın.
- CORS ilkeleri: Kapsayıcı uygulamalarınızı çağıran tarayıcı tabanlı istemciler için çıkış noktaları arası kaynak paylaşım kurallarını yapılandırın.
Not
Dapr hizmet çağrısını kullandığınızda, Dapr yan birimleri, hizmetler arasındaki karşılıklı TLS (Transport Layer Security) ile iletişimi otomatik olarak güvence altına alır. Dapr-to-Dapr çağrıları için mTLS'yi ayrı olarak yapılandırmanız gerekmez.
Daha fazla bilgi için Azure Container Apps'te Ingress sayfasına bakın.
Özel alan adları
Giriş ayarlarında özel alan adları yapılandırarak kendi alan adlarınızı bir kapsayıcı uygulamasına eşleştirebilirsiniz. Her özel etki alanı, yönetilen veya karşıya yüklenen bir TLS sertifikasına referans verebilir.
Özel alan adları, varsayılan FQDN ile birlikte kaydedilir, bu nedenle uygulamanız her iki adrese de yanıt verir. Ortamdaki diğer kapsayıcı uygulamalarının uygulamanıza ulaşması gerektiğinde, bunlar varsayılan FQDN'yi, uygulama adını veya özel etki alanınızı kullanabilir.
Daha fazla bilgi için bkz: Azure Container Apps'te Özel Etki Alanları.
Örnek çözüm
Hem FQDN hem de Dapr kullanarak kapsayıcılar arasında çağrı yapmayı gösteren bir örnek Azure Samples üzerinde kullanılabilir.
İlgili kavramlar
Azure Container Apps'de uygulamalar arası iletişimi anlamak, ilgili birkaç konuya bağlanır:
- Azure Container Apps'de Ortamlar: Kapsayıcı uygulamaların birbirlerini bulup iletişim kurduğu paylaşılan sınır
- Azure Container Apps'te Ingress: Dış ve iç uç noktalarını, TLS'yi ve yönlendirme kurallarını yapılandırma
- Azure Container Apps ile Dapr tümleştirmesi: Hizmet çağrısının yanı sıra Dapr bileşenlerinin, yayınla/abone ol ve durum yönetimi konularında daha derinlemesine bir kapsama
- Azure Container Apps'te Ağ: Ortamınız için Sanal Ağ tümleştirmesi, özel uç noktalar ve ağ güvenliği
- Azure Container Apps'teki Revizyonlar: Revizyon modları ve trafiğin bölünmesi, uygulamalar arası yönlendirmeyi nasıl etkiler?