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.
ŞUNLAR İÇİN GEÇERLİDİR: Geliştirici | Premium
Bu makalede, Azure API Management'ın şirket içinde barındırılan ağ geçidi bileşenini Azure Container Apps'e dağıtma adımları sağlanır.
Azure Container Apps ortamında barındırılan API'lere erişmek için öz barındırılan bir ağ geçidini kapsayıcı uygulamasında dağıtın.
Önkoşullar
Şu hızlı başlangıcı tamamlayın: Azure API Management örneği oluşturma.
Azure CLI için:
Azure Cloud Shell'de Bash ortamını kullanın. Daha fazla bilgi için bkz. Azure Cloud Shell'i kullanmaya başlama.
CLI başvuru komutlarını yerel olarak çalıştırmayı tercih ediyorsanız Azure CLI'yı yükleyin . Windows veya macOS üzerinde çalışıyorsanız Azure CLI’yi bir Docker kapsayıcısında çalıştırmayı değerlendirin. Daha fazla bilgi için bkz. Azure CLI'yi docker kapsayıcısında çalıştırma.
Yerel yükleme kullanıyorsanız az login komutunu kullanarak Azure CLI ile oturum açın. Kimlik doğrulama işlemini tamamlamak için terminalinizde görüntülenen adımları izleyin. Diğer oturum açma seçenekleri için bkz. Azure CLI kullanarak Azure'da kimlik doğrulaması.
İstendiğinde, ilk kullanımda Azure CLI uzantısını yükleyin. Uzantılar hakkında daha fazla bilgi için bkz. Azure CLI ile uzantıları kullanma ve yönetme.
Sürümü ve yüklü bağımlı kütüphaneleri bulmak için az version komutunu çalıştırın. En son sürüme yükseltmek için az upgrade komutunu çalıştırın.
Uyarı
Bu makaledeki Azure CLI komut örnekleri için Azure CLI uzantısı gerekir
containerapp. Komutları kullanmadıysanızaz containerapp, ilkaz containerappkomutu çalıştırdığınızda uzantı dinamik olarak yüklenir. Azure CLI uzantıları hakkında daha fazla bilgi edinin.
Azure API Management örneğinizde ağ geçidi sağlama
Kendinize ait bir ağ geçidini dağıtmadan önce Azure API Yönetim örneğinizde bir ağ geçidi kaynağı hazırlayın. Adımlar için bkz Şirket içinde barındırılan ağ geçidi sağlama. Bu makalenin örneklerinde ağ geçidinin adı my-gatewayverilmiştir.
API Management'tan ağ geçidi dağıtım ayarlarını alma
Ağ geçidini dağıtmak için ağ geçidinin Belirteç ve Yapılandırma uç noktası değerleri gerekir. Bunları Azure portalında bulabilirsiniz:
- Azure portalında oturum açın ve Azure API Management örneğine gidin.
- Soldaki menüde, Dağıtım + altyapı altında Şirket içinde barındırılan ağ geçitleri'ni seçin.
- Sağladığınız ağ geçidi kaynağını seçin ve Ayarlar>Dağıtım seçeneklerini seçin.
- Belirteç ve Yapılandırma uç noktası değerlerini kopyalayın.
Kendi kendine barındırılan ağ geçidini bir kapsayıcı uygulamaya dağıtın.
Azure portal, Azure CLI veya diğer araçları kullanarak kendi kendine barındırılan ağ geçidi kapsayıcı görüntüsünü kapsayıcı uygulamasında dağıtabilirsiniz. Bu makalede Azure CLI'yi kullanma adımları gösterilmektedir.
Kapsayıcı uygulamaları ortamı oluşturmak
İlk olarak az containerapp env create komutunu kullanarak bir kapsayıcı uygulamaları ortamı oluşturun:
#!/bin/bash
az containerapp env create --name my-environment --resource-group myResourceGroup \
--location centralus
Bu komut şunu oluşturur:
- Kapsayıcı uygulamaları gruplandırmak için kullandığınız
my-environmentadlı bir kapsayıcı uygulama ortamı. - Log Analytics çalışma alanı
Kendi kendine barındırılan ağ geçidi için kapsayıcı uygulama oluşturma
Şirket içinde barındırılan ağ geçidini ortamdaki bir kapsayıcı uygulamasına dağıtmak için az containerapp create komutunu çalıştırın.
İlk olarak Azure API Management ağ geçidi kaynağından Belirteç ve Yapılandırma uç noktası değerleri için değişkenleri ayarlayın.
#!/bin/bash
endpoint="<API Management configuration endpoint>"
token="<API Management gateway token>"
komutunu kullanarak az containerapp create kapsayıcı uygulamasını oluşturun:
#!/bin/bash
az containerapp create --name my-gateway \
--resource-group myResourceGroup --environment 'my-environment' \
--image "mcr.microsoft.com/azure-api-management/gateway:2.9.2" \
--target-port 8080 --ingress external \
--min-replicas 1 --max-replicas 3 \
--env-vars "config.service.endpoint"="$endpoint" "config.service.auth"="$token" "net.server.http.forwarded.proto.enabled"="true"
Bu komut şunu oluşturur:
Kaynak grubundaki
my-gatewayadlı bir kapsayıcı uygulaması. Bu örnekte, container uygulamamcr.microsoft.com/azure-api-management/gateway:2.9.2imajını kullanır. Kendinden barındırılan ağ geçidi hakkında daha fazla bilgi için bkz. container görüntüleri.8080 numaralı bağlantı noktasında kapsayıcı uygulamasına dış giriş desteği.
Kapsayıcı uygulamasının en az 1 ve en fazla 3 kopyası.
Kendi kendine barındırılan ağ geçidinden, ortam değişkenlerine yapılandırma değerlerini aktararak Azure API Management örneğine bağlantı. Detaylar için kendi barındırılan ağ geçidi kapsayıcı yapılandırma ayarlarına bakın.
Uyarı
Azure Container Apps girişi, HTTPS isteklerini şirket içinde barındırılan ağ geçidi kapsayıcı uygulamasına HTTP olarak iletir. Burada, ortam değişkeni
net.server.http.forwarded.proto.enabledolarak ayarlanır, böylece kendi kendini barındıran ağ geçidi, isteğin özgün protokolünü belirlemek içintrueüst bilgisini kullanır.
Kapsayıcı uygulamasının çalıştığını onaylayın
Azure portalında oturum açın ve kapsayıcı uygulamanıza gidin.
Kapsayıcı uygulamasının Genel Bakış sayfasında Durum'unÇalışıyor olup olmadığını denetleyin.
üzerindeki
/status-012345678990abcdefdurum uç noktasına bir test isteği gönderin. Örneğin, aşağıdaki komuta benzer bircurlkomut kullanın.curl -i https://my-gateway.happyvalley-abcd1234.centralus.azurecontainerapps.io/status-012345678990abcdefBaşarılı bir istek bir
200 OKyanıt döndürür.
Tavsiye
CLI kullanarak, kapsayıcı uygulamasının durumunu denetlemek için az containerapp show komutunu da çalıştırabilirsiniz.
Ağ geçidinin iyi durumda olduğunu onaylayın
Azure portalında oturum açın ve Azure API Management örneğine gidin.
Soldaki menüde, Dağıtım + altyapı altında Şirket içinde barındırılan ağ geçitleri'ni seçin.
Genel Bakış sayfasında ağ geçidinizin Durumunu denetleyin. Ağ geçidi iyi durumdaysa düzenli ağ geçidi kalp atışlarını bildirir.
Örnek senaryo
Aşağıdaki örnek, aynı ortamdaki bir kapsayıcı uygulamasında barındırılan bir API'ye erişmek için öz yönetilen ağ geçidini nasıl kullanabileceğinizi göstermektedir. Aşağıdaki diyagramda gösterildiği gibi, yerel olarak barındırılan ağ geçidine internetten erişilebilirken, API'ye yalnızca kapsayıcı uygulamalar ortamından erişilebilir.
- Kendiliğinden barındırılan ağ geçidiyle aynı ortamda bir API barındıran kapsayıcı uygulamayı dağıtın.
- API'yi Azure API Management örneğinize ekleyin.
- Kendi kendine barındırılan ağ geçidi üzerinden API'yi çağırın.
API barındıran bir kapsayıcı uygulamasını yerel ortamda barındırılan ağ geçidiyle aynı ortamda dağıtma.
Bu örnekte, bir kapsayıcı uygulamasına örnek bir müzik albümü API'sini dağıtacaksınız. Daha sonra şirket içinde barındırılan ağ geçidini kullanarak API'ye erişmek için, API'yi şirket içinde barındırılan ağ geçidiyle aynı ortamda dağıtın. Bu örnekte kullanılan kaynaklar hakkında ayrıntılı adımlar ve bilgiler için bkz . Hızlı Başlangıç: Yerel kaynak kodundan Azure Container Apps'e derleme ve dağıtma. Kısaltılmış adımlar aşağıdaki adımları izler:
Python kaynak kodunu yerel makinenize indirin. İsterseniz kaynak kodu istediğiniz başka bir dilde indirin.
Kaynak kodu yerel bir klasöre ayıklayın ve containerapps-albumapi-python-main/src klasörüne geçin.
API'yi kendi kendine barındırılan ağ geçidiyle aynı ortamdaki bir konteyner uygulaması olarak dağıtmak için aşağıdaki az containerapp up komutunu çalıştırın. Komutun sonundaki
.'in, geçerli klasörü kapsayıcı uygulamanın kaynağı olarak belirttiğine dikkat edin.#!/bin/bash az containerapp up --name albums-api \ --resource-group myResourceGroup --location centralus \ --environment my-environment --source .Kapsayıcı uygulamasının çalıştığını ve komut çıkışında döndürülen FQDN'de dışarıdan erişilebilir olduğunu onaylayın. Api'ye varsayılan olarak uç noktada
/albumserişilebilir. Örnek:https://albums-api.happyvalley-abcd1234.centralus.azurecontainerapps.io/albums/albums.
API'yi iç giriş için yapılandırma
Şimdi yalnızca kapsayıcı ortamında girişi etkinleştirmek için örnek API'yi barındıran kapsayıcı uygulamasını güncelleştirin. Bu ayar, API'ye erişimi yalnızca dağıttığınız şirket içinde barındırılan ağ geçidinden kısıtlar.
- Azure portalında oturum açın ve kapsayıcı uygulamanıza gidin.
- Sol menüde Ağ>Giriş'i seçin.
- GirişiEtkin olarak ayarlayın.
- Giriş trafiği bölümünde Container Apps Ortamı ile Sınırlı'yı seçin.
- Kalan ayarları gözden geçirin ve Kaydet'i seçin.
API'yi Azure API Management örneğinize ekleme
Aşağıdaki adımlarda, Azure API Management örneğinize API ekleme ve API arka ucu yapılandırma adımları gösterilmektedir. Daha fazla bilgi için bkz. Azure API Management'a API ekleme.
API'yi API Management örneğinize ekleme
- Azure portalında, yerel olarak barındırılan ağ geçidini yapılandırdığınız API Management örneğine gidin.
- Sol menüde API'ler>>+ API Ekle'yi seçin.
-
HTTP'yi ve Tam'ı seçin. Aşağıdaki ayarları girin:
- Görünen ad: Açıklayıcı bir ad girin. Örnek: Albümler API'si.
-
Web hizmeti URL'si: API'yi barındıran kapsayıcı uygulamasının iç FQDN'sini girin. Örnek:
http://albums-api.internal.happyvalley-abcd1234.centralus.azurecontainerapps.io. - URL düzeni: HTTP(S) seçin.
- API URL son eki: Tercihinize göre bir sonek girin. Örnek: albumapi.
- Ağ geçitleri: Sağladığınız şirket içinde barındırılan ağ geçidini seçin. Örnek: my-gateway.
- Senaryonuza göre diğer API ayarlarını yapılandırın. Oluştur'i seçin.
API işlemi ekleme
- Sol menüde API'ler, > seçin.
- + İşlem ekle'yi seçin.
- İşlem ayarlarını girin:
- Görünen ad: İşlem için açıklayıcı bir ad girin. Örnek: Albümleri alma.
-
URL: Al seçin ve uç nokta için
/albumsgirin. - Kaydetseçeneğini seçin.
Kendi kendine barındırılan ağ geçidi aracılığıyla API'yi çağırın
Kapsayıcı uygulamasında çalışan kendi kendine barındırılan ağ geçidinin Tam Nitelikli Alan Adı'nı (FQDN) kullanarak API'yi çağırın. Azure portalındaki kapsayıcı uygulamasının Genel Bakış sayfasında FQDN'yi bulun veya aşağıdaki az containerapp show komutu çalıştırın.
#!/bin/bash
az containerapp show --name my-gateway --resource-group myResourceGroup \
--query "properties.configuration.ingress.fqdn" --output tsv
Örneğin, uç noktada API'yi curl çağırmak için aşağıdaki /albumapi/albums komutu çalıştırın. API'niz bir abonelik anahtarı gerektiriyorsa, istekte üst bilgi olarak API Management örneğiniz için geçerli bir abonelik anahtarı geçirin:
curl -i https://my-gateway.happyvalley-abcd1234.centralus.azurecontainerapps.io/albumapi/albums -H "Ocp-Apim-Subscription-Key: <subscription-key>"
Test başarılı olduğunda, arka uç başarılı bir HTTP yanıt kodu ve bazı verilerle yanıt verir.
HTTP/1.1 200 OK
content-length: 751
content-type: application/json
date: Wed, 28 Feb 2024 22:45:09 GMT
[...]
[{"id":1,"title":"You, Me and an App Id","artist":"Daprize","price":10.99,"image_url":"https://aka.ms/albums-daprlogo"},{"id":2,"title":"Seven Revision Army","artist":"The Blue-Green Stripes","price":13.99,"image_url":"https://aka.ms/albums-containerappslogo"},{"id":3,"title":"Scale It Up","artist":"KEDA Club","price":13.99,"image_url":"https://aka.ms/albums-kedalogo"},{"id":4,"title":"Lost in Translation","artist":"MegaDNS","price":12.99,"image_url":"https://aka.ms/albums-envoylogo"},{"id":5,"title":"Lock Down Your Love","artist":"V is for VNET","price":12.99,"image_url":"https://aka.ms/albums-vnetlogo"},{"id":6,"title":"Sweet Container O' Mine","artist":"Guns N Probeses","price":14.99,"image_url":"https://aka.ms/albums-containerappslogo"}]
Tavsiye
API'nizin Application Insights'a günlük kaydını etkinleştirirseniz, istekleri ve yanıtları görmek için günlükleri sorgulayabilirsiniz.
Sınırlamalar
Yerel barındırılan ağ geçidi örnekleri, yaşam sinyali ve hız sınırı iletişimi için UDP protokolüne dayanır. Azure Container Apps şu anda UDP protokolünü ne giriş için ne de iç trafik için desteklemediğinden, rate-limit ilkesi sayaçlarını örnekler arasında eşitleyemez. Sonuç olarak, kendi kendine barındırılan bir ağ geçidi kapsayıcı uygulamasının X sınırına sahip üç kopyasının sürdürülmesi, X sınırına ulaşılana kadar trafiğin üç katına çıkmasına neden olabilir.
Azure Container Apps, istekleri kullanılabilir ve iyi durumdaki her çoğaltmaya doğrusal olarak dağıtır. Hız sınırlaması uygulamak için, istediğiniz sınırı çalıştırmak istediğiniz çoğaltma sayısına bölebilir ve sonuçta elde edilen değeri yapılandırmada ayarlayabilirsiniz. Kapsayıcı uygulamalarınızın ölçeklenme durumunda ve zamanı geldiğinde ayarlanmış sayaçları hesaba katamayabileceğiniz için bu yaklaşımın kendi dezavantajları vardır.