Udostępnij za pośrednictwem


Wdrażanie własnej bramy usługi Azure API Management w usłudze Azure Container Apps

DOTYCZY: Developer | Premium

Ten artykuł zawiera kroki wdrażania składnika własnej bramy usługi Azure API Management w usłudze Azure Container Apps.

Wdróż bramę hostowaną samodzielnie w aplikacji kontenera, aby uzyskać dostęp do interfejsów API hostowanych w tym samym środowisku usługi Azure Container Apps.

Wymagania wstępne

Aprowizuj bramę w wystąpieniu usługi API Management

Przed wdrożeniem własnej bramy aprowizuj zasób bramy w wystąpieniu usługi Azure API Management. Aby uzyskać instrukcje, zobacz Aprowizuj bramę hostowaną samodzielnie. W przykładach w tym artykule brama ma nazwę my-gateway.

Pobieranie ustawień wdrażania bramy z usługi API Management

Aby wdrożyć bramę, potrzebne są wartości punktu końcowego tokenu i konfiguracji bramy. Można je znaleźć w witrynie Azure Portal:

  1. Zaloguj się do witryny Azure Portal i przejdź do wystąpienia usługi API Management.
  2. W menu po lewej stronie w obszarze Wdrażanie i infrastruktura wybierz pozycję Bramy.
  3. Wybierz aprowizowany zasób bramy, a następnie wybierz pozycję Wdrożenie.
  4. Skopiuj wartości punktów końcowych tokenu i konfiguracji.

Wdrażanie własnej bramy w aplikacji kontenera

Obraz kontenera bramy własnej bramy można wdrożyć w aplikacji kontenera przy użyciu witryny Azure Portal, interfejsu wiersza polecenia platformy Azure lub innych narzędzi. W tym artykule przedstawiono kroki korzystania z interfejsu wiersza polecenia platformy Azure.

Tworzenie środowiska aplikacji kontenera

Najpierw utwórz środowisko aplikacji kontenera przy użyciu polecenia az containerapp env create :

#!/bin/bash
az containerapp env create --name my-environment --resource-group myResourceGroup \
    --location centralus

To polecenie tworzy:

  • Środowisko aplikacji kontenera o nazwie my-environment używane do grupowania aplikacji kontenera.
  • Obszar roboczy usługi Log Analytics

Tworzenie aplikacji kontenera dla własnej bramy

Aby wdrożyć własną bramę w aplikacji kontenera w środowisku, uruchom polecenie az containerapp create .

Najpierw ustaw zmienne dla wartości punktu końcowego Token i Konfiguracja z zasobu bramy usługi API Management.

#!/bin/bash
endpoint="<API Management configuration endpoint>"
token="<API Management gateway token>"

Utwórz aplikację kontenera az containerapp create przy użyciu polecenia :

#!/bin/bash
az containerapp create --name my-gateway \
    --resource-group myResourceGroup --environment 'my-environment' \
    --image "mcr.microsoft.com/azure-api-management/gateway:2.5.0" \
    --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"

To polecenie tworzy:

  • Aplikacja kontenera o nazwie my-gateway w myResourceGroup grupie zasobów. W tym przykładzie aplikacja kontenera jest tworzona mcr.microsoft.com/azure-api-management/gateway:2.5.0 przy użyciu obrazu. Dowiedz się więcej o obrazach kontenerów własnej bramy.

  • Obsługa zewnętrznego ruchu przychodzącego do aplikacji kontenera na porcie 8080.

  • Co najmniej 1 i maksymalnie 3 repliki aplikacji kontenera.

  • Połączenie z własnej bramy do wystąpienia usługi API Management przy użyciu wartości konfiguracji przekazanych w zmiennych środowiskowych. Aby uzyskać szczegółowe informacje, zobacz ustawienia konfiguracji kontenera własnej bramy.

    Uwaga

    Ruch przychodzący usługi Azure Container Apps przekazuje żądania HTTPS do aplikacji kontenera bramy self-hosted jako HTTP. W tym miejscu zmienna net.server.http.forwarded.proto.enabled środowiskowa jest ustawiona tak true , aby brama hostowana samodzielnie korzystała z X-Forwarded-Proto nagłówka w celu określenia oryginalnego protokołu żądania.

Upewnij się, że aplikacja kontenera jest uruchomiona

  1. Zaloguj się do witryny Azure Portal i przejdź do aplikacji kontenera.

  2. Na stronie Przegląd aplikacji kontenera sprawdź, czy stan to Uruchomiono.

  3. Wyślij żądanie testowe do punktu końcowego stanu w witrynie /status-012345678990abcdef. Na przykład użyj curl polecenia podobnego do poniższego.

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

    Pomyślne żądanie zwraca 200 OK odpowiedź.

Napiwek

Za pomocą interfejsu wiersza polecenia możesz również uruchomić polecenie az containerapp show , aby sprawdzić stan aplikacji kontenera.

Upewnij się, że brama jest w dobrej kondycji

  1. Zaloguj się do witryny Azure Portal i przejdź do wystąpienia usługi API Management.

  2. W menu po lewej stronie w obszarze Wdrażanie i infrastruktura wybierz pozycję Bramy.

  3. Na stronie Przegląd sprawdź stan bramy. Jeśli brama jest w dobrej kondycji, zgłasza regularne pulsy bramy.

    Zrzut ekranu przedstawiający stan bramy w portalu.

Przykładowy scenariusz

W poniższym przykładzie pokazano, jak za pomocą własnej bramy uzyskać dostęp do interfejsu API hostowanego w aplikacji kontenera w tym samym środowisku. Jak pokazano na poniższym diagramie, brama hostowana samodzielnie może być dostępna z Internetu, natomiast interfejs API jest dostępny tylko w środowisku aplikacji kontenera.

Diagram przykładowego scenariusza z własną bramą.

  1. Wdrażanie aplikacji kontenera hostująca interfejs API w tym samym środowisku co brama hostowana samodzielnie
  2. Dodawanie interfejsu API do wystąpienia usługi API Management
  3. Wywoływanie interfejsu API za pośrednictwem bramy hostowanej samodzielnie

Wdrażanie aplikacji kontenera hostująca interfejs API w tym samym środowisku co brama hostowana samodzielnie

Na przykład wdróż przykładowy interfejs API albumu muzycznego w aplikacji kontenera. Aby uzyskać później dostęp do interfejsu API przy użyciu własnej bramy, wdróż interfejs API w tym samym środowisku co brama hostowana samodzielnie. Aby uzyskać szczegółowe instrukcje i informacje o zasobach używanych w tym przykładzie, zobacz Szybki start: kompilowanie i wdrażanie z lokalnego kodu źródłowego do usługi Azure Container Apps. Wykonaj skrócone kroki:

  1. Pobierz kod źródłowy języka Python na komputer lokalny. Jeśli wolisz, pobierz kod źródłowy w innym wybranym języku.

  2. Wyodrębnij kod źródłowy do folderu lokalnego i przejdź do folderu containerapps-albumapi-python-main/src .

  3. Uruchom następujące polecenie az containerapp up , aby wdrożyć interfejs API w aplikacji kontenera w tym samym środowisku co brama hostowana samodzielnie. Zanotuj wartość . na końcu polecenia , która określa bieżący folder jako źródło aplikacji kontenera.

    #!/bin/bash
    az containerapp up --name albums-api \
        --resource-group myResourceGroup --location centralus \
        --environment my-environment --source .
    
  4. Upewnij się, że aplikacja kontenera jest uruchomiona i dostępna zewnętrznie w nazwie FQDN zwróconej w danych wyjściowych polecenia. Domyślnie interfejs API jest dostępny w punkcie /albums końcowym. Przykład: https://albums-api.happyvalley-abcd1234.centralus.azurecontainerapps.io/albums/albums.

Konfigurowanie interfejsu API dla ruchu przychodzącego wewnętrznego

Teraz zaktualizuj aplikację kontenera hostująca przykładowy interfejs API, aby umożliwić ruch przychodzący tylko w środowisku kontenera. To ustawienie ogranicza dostęp do interfejsu API tylko z wdrożonej bramy self-hosted.

  1. Zaloguj się do witryny Azure Portal i przejdź do aplikacji kontenera.
  2. W menu po lewej stronie wybierz pozycję Ruch przychodzący.
  3. Ustaw opcję Ruch przychodzący na wartość Włączone.
  4. W obszarze Ruch przychodzący wybierz pozycję Ograniczone do środowiska aplikacji kontenera.
  5. Przejrzyj pozostałe ustawienia i wybierz pozycję Zapisz.

Dodawanie interfejsu API do wystąpienia usługi API Management

Poniżej przedstawiono przykładowe kroki dodawania interfejsu API do wystąpienia usługi API Management i konfigurowania zaplecza interfejsu API. Aby uzyskać więcej informacji, zobacz Dodawanie interfejsu API do usługi Azure API Management.

Dodawanie interfejsu API do wystąpienia usługi API Management

  1. W portalu przejdź do wystąpienia usługi API Management, w którym skonfigurowano bramę self-hosted.
  2. W menu po lewej stronie wybierz pozycję Interfejsy> API+ Dodaj interfejs API.
  3. Wybierz pozycję HTTP i wybierz pozycję Pełny. Wprowadź następujące ustawienia:
    1. Nazwa wyświetlana: wprowadź opisową nazwę. Przykład: interfejs API albumów.
    2. Adres URL usługi internetowej: wprowadź wewnętrzną nazwę FQDN aplikacji kontenera hostująca interfejs API. Przykład: http://albums-api.internal.happyvalley-abcd1234.centralus.azurecontainerapps.io.
    3. Schemat adresów URL: wybierz pozycję HTTP(S).
    4. Sufiks adresu URL interfejsu API: wprowadź wybrany sufiks. Przykład: albumapi.
    5. Bramy: wybierz aprowizowaną bramę self-hosted. Przykład: my-gateway.
  4. Skonfiguruj inne ustawienia interfejsu API zgodnie ze scenariuszem. Wybierz pozycję Utwórz.

Dodawanie operacji interfejsu API

  1. W menu po lewej stronie wybierz pozycję Interfejs API Albumy interfejsów>API.
  2. Wybierz pozycję + Dodaj operację.
  3. Wprowadź ustawienia operacji:
    1. Nazwa wyświetlana: wprowadź opisową nazwę operacji. Przykład: Pobieranie albumów.
    2. Adres URL: wybierz pozycję Pobierz i wprowadź /albums dla punktu końcowego.
    3. Wybierz pozycję Zapisz.

Wywoływanie interfejsu API za pośrednictwem bramy hostowanej samodzielnie

Wywołaj interfejs API przy użyciu nazwy FQDN własnej bramy uruchomionej w aplikacji kontenera. Znajdź nazwę FQDN na stronie Przegląd aplikacji kontenera w witrynie Azure Portal lub uruchom następujące az containerapp show polecenie.

#!/bin/bash
az containerapp show --name my-gateway --resource-group myResourceGroup \
    --query "properties.configuration.ingress.fqdn" --output tsv

Uruchom na przykład następujące curl polecenie, aby wywołać interfejs API w punkcie /albumapi/albums końcowym. Jeśli interfejs API wymaga klucza subskrypcji, przekaż prawidłowy klucz subskrypcji dla wystąpienia usługi API Management jako nagłówek w żądaniu:

curl -i https://my-gateway.happyvalley-abcd1234.centralus.azurecontainerapps.io/albumapi/albums -H "Ocp-Apim-Subscription-Key: <subscription-key>"

Po pomyślnym zakończeniu testu zaplecze odpowiada z pomyślnym kodem odpowiedzi HTTP i pewnymi danymi.

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"}]

Napiwek

Jeśli włączono rejestrowanie interfejsu API w usłudze Application Insights, możesz wykonać zapytanie dotyczące dzienników, aby wyświetlić żądania i odpowiedzi.