Aracılığıyla paylaş


Azure API Management kendinden barındırılan ağ geçidini Azure Container Apps'e dağıtma

Ş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

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:

  1. Azure portalında oturum açın ve Azure API Management örneğine gidin.
  2. Soldaki menüde, Dağıtım + altyapı altında Şirket içinde barındırılan ağ geçitleri'ni seçin.
  3. Sağladığınız ağ geçidi kaynağını seçin ve Ayarlar>Dağıtım seçeneklerini seçin.
  4. 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-environment adlı 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-gateway adlı bir kapsayıcı uygulaması. Bu örnekte, container uygulama mcr.microsoft.com/azure-api-management/gateway:2.9.2 imajı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.enabled olarak ayarlanır, böylece kendi kendini barındıran ağ geçidi, isteğin özgün protokolünü belirlemek için true üst bilgisini kullanır.

Kapsayıcı uygulamasının çalıştığını onaylayın

  1. Azure portalında oturum açın ve kapsayıcı uygulamanıza gidin.

  2. Kapsayıcı uygulamasının Genel Bakış sayfasında Durum'unÇalışıyor olup olmadığını denetleyin.

  3. üzerindeki /status-012345678990abcdefdurum uç noktasına bir test isteği gönderin. Örneğin, aşağıdaki komuta benzer bir curl komut kullanın.

    curl -i https://my-gateway.happyvalley-abcd1234.centralus.azurecontainerapps.io/status-012345678990abcdef
    

    Başarılı bir istek bir 200 OK yanı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

  1. Azure portalında oturum açın ve Azure API Management örneğine gidin.

  2. Soldaki menüde, Dağıtım + altyapı altında Şirket içinde barındırılan ağ geçitleri'ni seçin.

  3. Genel Bakış sayfasında ağ geçidinizin Durumunu denetleyin. Ağ geçidi iyi durumdaysa düzenli ağ geçidi kalp atışlarını bildirir.

    Portaldaki ağ geçidi durumunun ekran görüntüsü.

Ö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.

Kendi kendine barındırılan ağ geçidi ile örnek senaryonun diyagramı.

  1. Kendiliğinden barındırılan ağ geçidiyle aynı ortamda bir API barındıran kapsayıcı uygulamayı dağıtın.
  2. API'yi Azure API Management örneğinize ekleyin.
  3. 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:

  1. Python kaynak kodunu yerel makinenize indirin. İsterseniz kaynak kodu istediğiniz başka bir dilde indirin.

  2. Kaynak kodu yerel bir klasöre ayıklayın ve containerapps-albumapi-python-main/src klasörüne geçin.

  3. 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 .
    
  4. 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 /albums eriş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.

  1. Azure portalında oturum açın ve kapsayıcı uygulamanıza gidin.
  2. Sol menüde >Giriş'i seçin.
  3. GirişiEtkin olarak ayarlayın.
  4. Giriş trafiği bölümünde Container Apps Ortamı ile Sınırlı'yı seçin.
  5. 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

  1. Azure portalında, yerel olarak barındırılan ağ geçidini yapılandırdığınız API Management örneğine gidin.
  2. Sol menüde API'ler>>+ API Ekle'yi seçin.
  3. HTTP'yi ve Tam'ı seçin. Aşağıdaki ayarları girin:
    1. Görünen ad: Açıklayıcı bir ad girin. Örnek: Albümler API'si.
    2. Web hizmeti URL'si: API'yi barındıran kapsayıcı uygulamasının FQDN'sini girin. Örnek: http://albums-api.internal.happyvalley-abcd1234.centralus.azurecontainerapps.io.
    3. URL düzeni: HTTP(S) seçin.
    4. API URL son eki: Tercihinize göre bir sonek girin. Örnek: albumapi.
    5. Ağ geçitleri: Sağladığınız şirket içinde barındırılan ağ geçidini seçin. Örnek: my-gateway.
  4. Senaryonuza göre diğer API ayarlarını yapılandırın. Oluştur'i seçin.

API işlemi ekleme

  1. Sol menüde API'ler, > seçin.
  2. + İşlem ekle'yi seçin.
  3. İşlem ayarlarını girin:
    1. Görünen ad: İşlem için açıklayıcı bir ad girin. Örnek: Albümleri alma.
    2. URL: Al seçin ve uç nokta için /albums girin.
    3. 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.