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
Wykonaj procedury przedstawione w następującym przewodniku Szybki start: Tworzenie wystąpienia usługi Azure API Management.
W przypadku interfejsu wiersza polecenia platformy Azure:
Użyj środowiska powłoki Bash w usłudze Azure Cloud Shell. Aby uzyskać więcej informacji, zobacz Szybki start dotyczący powłoki Bash w usłudze Azure Cloud Shell.
Jeśli wolisz uruchamiać polecenia referencyjne interfejsu wiersza polecenia lokalnie, zainstaluj interfejs wiersza polecenia platformy Azure. Jeśli korzystasz z systemu Windows lub macOS, rozważ uruchomienie interfejsu wiersza polecenia platformy Azure w kontenerze Docker. Aby uzyskać więcej informacji, zobacz Jak uruchomić interfejs wiersza polecenia platformy Azure w kontenerze platformy Docker.
Jeśli korzystasz z instalacji lokalnej, zaloguj się do interfejsu wiersza polecenia platformy Azure za pomocą polecenia az login. Aby ukończyć proces uwierzytelniania, wykonaj kroki wyświetlane w terminalu. Aby uzyskać inne opcje logowania, zobacz Logowanie się przy użyciu interfejsu wiersza polecenia platformy Azure.
Po wyświetleniu monitu zainstaluj rozszerzenie interfejsu wiersza polecenia platformy Azure podczas pierwszego użycia. Aby uzyskać więcej informacji na temat rozszerzeń, zobacz Korzystanie z rozszerzeń w interfejsie wiersza polecenia platformy Azure.
Uruchom polecenie az version, aby znaleźć zainstalowane wersje i biblioteki zależne. Aby uaktualnić do najnowszej wersji, uruchom polecenie az upgrade.
Uwaga
Przykłady poleceń interfejsu wiersza polecenia platformy Azure w tym artykule wymagają rozszerzenia interfejsu wiersza polecenia platformy
containerapp
Azure. Jeśli nie użytoaz containerapp
poleceń, rozszerzenie jest instalowane dynamicznie po uruchomieniu pierwszegoaz containerapp
polecenia. Dowiedz się więcej o rozszerzeniach interfejsu wiersza polecenia platformy Azure.
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:
- Zaloguj się do witryny Azure Portal i przejdź do wystąpienia usługi API Management.
- W menu po lewej stronie w obszarze Wdrażanie i infrastruktura wybierz pozycję Bramy.
- Wybierz aprowizowany zasób bramy, a następnie wybierz pozycję Wdrożenie.
- 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
wmyResourceGroup
grupie zasobów. W tym przykładzie aplikacja kontenera jest tworzonamcr.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 taktrue
, aby brama hostowana samodzielnie korzystała zX-Forwarded-Proto
nagłówka w celu określenia oryginalnego protokołu żądania.
Upewnij się, że aplikacja kontenera jest uruchomiona
Zaloguj się do witryny Azure Portal i przejdź do aplikacji kontenera.
Na stronie Przegląd aplikacji kontenera sprawdź, czy stan to Uruchomiono.
Wyślij żądanie testowe do punktu końcowego stanu w witrynie
/status-012345678990abcdef
. Na przykład użyjcurl
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
Zaloguj się do witryny Azure Portal i przejdź do wystąpienia usługi API Management.
W menu po lewej stronie w obszarze Wdrażanie i infrastruktura wybierz pozycję Bramy.
Na stronie Przegląd sprawdź stan bramy. Jeśli brama jest w dobrej kondycji, zgłasza regularne pulsy bramy.
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.
- Wdrażanie aplikacji kontenera hostująca interfejs API w tym samym środowisku co brama hostowana samodzielnie
- Dodawanie interfejsu API do wystąpienia usługi API Management
- 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:
Pobierz kod źródłowy języka Python na komputer lokalny. Jeśli wolisz, pobierz kod źródłowy w innym wybranym języku.
Wyodrębnij kod źródłowy do folderu lokalnego i przejdź do folderu containerapps-albumapi-python-main/src .
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 .
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.
- Zaloguj się do witryny Azure Portal i przejdź do aplikacji kontenera.
- W menu po lewej stronie wybierz pozycję Ruch przychodzący.
- Ustaw opcję Ruch przychodzący na wartość Włączone.
- W obszarze Ruch przychodzący wybierz pozycję Ograniczone do środowiska aplikacji kontenera.
- 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
- W portalu przejdź do wystąpienia usługi API Management, w którym skonfigurowano bramę self-hosted.
- W menu po lewej stronie wybierz pozycję Interfejsy> API+ Dodaj interfejs API.
- Wybierz pozycję HTTP i wybierz pozycję Pełny. Wprowadź następujące ustawienia:
- Nazwa wyświetlana: wprowadź opisową nazwę. Przykład: interfejs API albumów.
- 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
. - Schemat adresów URL: wybierz pozycję HTTP(S).
- Sufiks adresu URL interfejsu API: wprowadź wybrany sufiks. Przykład: albumapi.
- Bramy: wybierz aprowizowaną bramę self-hosted. Przykład: my-gateway.
- Skonfiguruj inne ustawienia interfejsu API zgodnie ze scenariuszem. Wybierz pozycję Utwórz.
Dodawanie operacji interfejsu API
- W menu po lewej stronie wybierz pozycję Interfejs API Albumy interfejsów>API.
- Wybierz pozycję + Dodaj operację.
- Wprowadź ustawienia operacji:
- Nazwa wyświetlana: wprowadź opisową nazwę operacji. Przykład: Pobieranie albumów.
- Adres URL: wybierz pozycję Pobierz i wprowadź
/albums
dla punktu końcowego. - 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.