Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
DOTYCZY: Deweloper | Premium
Ten artykuł zawiera kroki wdrażania własnej bramy składnika usługi Azure API Management w celu usługi 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 kroki opisane w szybkim starcie: Tworzenie wystąpienia usługi Azure API Management.
Dla Azure CLI:
Użyj środowiska Bash w Azure Cloud Shell. Aby uzyskać więcej informacji, zobacz Get started with Azure Cloud Shell.
Jeśli wolisz uruchamiać polecenia referencyjne interfejsu wiersza polecenia lokalnie, zainstaluj Azure CLI. Jeśli korzystasz z systemu Windows lub macOS, rozważ uruchomienie interfejsu wiersza polecenia platformy Azure w kontenerze platformy 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 zakończyć proces uwierzytelniania, wykonaj kroki wyświetlane w terminalu. Aby uzyskać inne opcje logowania, zobacz Uwierzytelnianie na platformie Azure przy użyciu interfejsu wiersza polecenia platformy Azure.
Gdy zostaniesz o to poproszony, zainstaluj rozszerzenie Azure CLI przy pierwszym użyciu. Aby uzyskać więcej informacji na temat rozszerzeń, zobacz Używanie rozszerzeń i zarządzanie nimi za pomocą interfejsu wiersza polecenia platformy Azure.
Uruchom az version, aby sprawdzić zainstalowaną wersję i biblioteki zależne. Aby przeprowadzić uaktualnienie do najnowszej wersji, uruchom polecenie az upgrade.
Uwaga
Przykłady poleceń w Azure CLI w tym artykule wymagają rozszerzenia
containerappdla Azure CLI. Jeśli nie użytoaz containerapppoleceń, rozszerzenie jest instalowane dynamicznie po uruchomieniu pierwszego poleceniaaz containerapp. Dowiedz się więcej o rozszerzeniach interfejsu wiersza polecenia platformy Azure.
Aprowizuj bramę w wystąpieniu usługi Azure API Management
Przed wdrożeniem lokalnej bramy utwórz zasób bramy w wystąpieniu usługi Azure API Management. Aby uzyskać instrukcje, zobacz Przygotowanie bramy hostowanej lokalnie. W przykładach tego artykułu brama nosi nazwę my-gateway.
Pobierz ustawienia wdrażania bramy z API Management
Aby wdrożyć bramę, potrzebne są wartości punktu końcowego tokenu i punktu końcowego konfiguracji. Można je znaleźć w witrynie Azure Portal:
- Zaloguj się do portalu Azure i przejdź do wystąpienia usługi Azure API Management.
- W menu po lewej stronie w obszarze Wdrażanie i infrastruktura wybierz pozycję Bramy hostowane samodzielnie.
- Wybierz aprowizowany zasób bramy, a następnie wybierz pozycję Ustawienia>Wdrożenie.
- Skopiuj wartości Token i Configuration punktu końcowego.
Deplojuj samodzielnie hostowaną bramę do aplikacji kontenerowej
Obraz kontenera własnej bramy można wdrożyć w aplikacji kontenera przy użyciu witryny Azure Portal, interfejsu wiersza polecenia platformy Azurelub innych narzędzi. W tym artykule przedstawiono kroki korzystania z interfejsu wiersza polecenia platformy Azure.
Tworzenie środowiska aplikacji kontenera
Najpierw utwórz środowisko dla konteneryzowanych aplikacji używając 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-environmentużywane do grupowania aplikacji kontenera. - Obszar roboczy usługi Log Analytics
Stworzyć aplikację kontenera dla samodzielnie hostowanej bramy
Aby wdrożyć samodzielnie hostowaną bramę do aplikacji kontenerowej w środowisku, uruchom polecenie az containerapp create.
Najpierw ustaw zmienne dla wartości Token i punktu końcowego Konfiguracja z zasobu bramy usługi Azure API Management.
#!/bin/bash
endpoint="<API Management configuration endpoint>"
token="<API Management gateway token>"
Utwórz aplikację kontenera przy użyciu polecenia az containerapp create:
#!/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"
To polecenie tworzy:
Aplikacja kontenera o nazwie
my-gatewayw grupie zasobówmyResourceGroup. W tym przykładzie aplikacja kontenera używa obrazumcr.microsoft.com/azure-api-management/gateway:2.9.2. Aby uzyskać więcej informacji na temat bramy hostowanej samodzielnie, zobacz obrazy kontenerów.Obsługa zewnętrznego wejścia do aplikacji kontenerowej na porcie 8080.
Co najmniej 1 i maksymalnie 3 repliki aplikacji kontenera.
Połączenie z samodzielnie hostowanej bramy do wystąpienia usługi Azure API Management, poprzez przekazanie wartości konfiguracji w zmiennych środowiskowych. Aby uzyskać szczegółowe informacje, zapoznaj się z ustawieniami konfiguracji kontenera dla własnej bramy.
Uwaga
Ingers aplikacji kontenerowych Azure przekazuje żądania HTTPS do własnej aplikacji kontenera bramy jako HTTP. W tym miejscu zmienna środowiskowa
net.server.http.forwarded.proto.enabledjest ustawiona natrue, aby brama hostowana samodzielnie korzystała z nagłówkaX-Forwarded-Protow 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ądu aplikacji kontenera sprawdź, czy stan jest uruchomiona.
Wyślij żądanie testowe do punktu końcowego stanu w
/status-012345678990abcdef. Na przykład użyjcurlpolecenia podobnego do poniższego polecenia.curl -i https://my-gateway.happyvalley-abcd1234.centralus.azurecontainerapps.io/status-012345678990abcdefPomyślne żądanie zwraca odpowiedź
200 OK.
Wskazówka
Za pomocą interfejsu wiersza polecenia można również uruchomić polecenie az containerapp show w celu sprawdzenia stanu aplikacji kontenerowej.
Upewnij się, że brama jest w dobrej kondycji
Zaloguj się do portalu Azure i przejdź do wystąpienia usługi Azure API Management.
W menu po lewej stronie w obszarze Wdrażanie i infrastruktura wybierz pozycję Bramy hostowane samodzielnie.
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.
- Wdróż aplikację kontenera hostująca interfejs API w tym samym środowisku co brama hostowana samodzielnie.
- Dodaj API do instancji usługi Azure API Management.
- Wywołaj interfejs API za pośrednictwem bramy hostowanej samodzielnie.
Wdrażanie aplikacji kontenerowej hostującej API w tym samym środowisku co brama hostowana samodzielnie
W tym przykładzie wdrożysz przykładowy interfejs API albumu muzycznego w aplikacji kontenera. Aby później uzyskać dostęp do interfejsu API za pomocą samodzielnie hostowanej bramy, wdróż interfejs API w tym samym środowisku, co brama. 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ć API w aplikacji kontenerowej w tym samym środowisku co bramą hostowaną lokalnie. Zanotuj
.na końcu polecenia, które 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 końcowym
/albums. Przykład:https://albums-api.happyvalley-abcd1234.centralus.azurecontainerapps.io/albums/albums.
Skonfiguruj API dla wewnętrznego ruchu przychodzącego
Teraz zaktualizuj aplikację kontenerową hostującą przykładowy interfejs API, aby umożliwić ruch sieciowy tylko w środowisku kontenerowym. To ustawienie ogranicza dostęp do API tylko z samodzielnie hostowanej bramy, którą wdrożyłeś.
- Zaloguj się do witryny Azure Portal i przejdź do aplikacji kontenera.
- W menu po lewej stronie wybierz pozycję Sieci>Ruch przychodzący.
- Ustaw Ruch przychodzący na Włączone.
- W ruchu przychodzącegowybierz pozycję Ograniczone do środowiska usługi Container Apps Environment.
- Przejrzyj pozostałe ustawienia i wybierz pozycję Zapisz.
Dodawanie interfejsu API do wystąpienia usługi Azure API Management
W poniższych krokach pokazano, jak dodać API do wystąpienia usługi Azure API Management i skonfigurować zaplecze 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 Azure przejdź do instancji zarządzania interfejsem API, w której skonfigurowano bramę lokalnie hostowaną.
- W menu po lewej stronie wybierz pozycję API>API>+ Dodaj API.
- Wybierz HTTP i Full. Wprowadź następujące ustawienia:
- nazwa wyświetlana: wprowadź opisową nazwę. Przykład: interfejs API albumów .
-
adres URL usługi sieci Web: wprowadź wewnętrzną nazwę FQDN aplikacji kontenera hostowania interfejsu API. Przykład:
http://albums-api.internal.happyvalley-abcd1234.centralus.azurecontainerapps.io. - schemat adresów URL: wybierz HTTP(S).
- sufiks adresu URL interfejsu API: wprowadź wybrany sufiks. Przykład: albumapi.
- Bramy: Wybierz lokalnie hostowaną bramę, którą aprowizowałeś. Przykład: my-gateway.
- Skonfiguruj inne ustawienia interfejsu API zgodnie ze scenariuszem. Wybierz Utwórz.
Dodawanie operacji interfejsu API
- W menu po lewej stronie wybierz API>API albumów.
- Wybierz pozycję + Dodaj operację.
- Wprowadź ustawienia operacji:
- nazwa wyświetlana: wprowadź opisową nazwę operacji. Przykład: Pobierz albumy.
-
adres URL: wybierz Pobierz i wprowadź
/albumsjako punkt końcowy. - Wybierz Zapisz.
Wywoływanie interfejsu API za pośrednictwem bramy hostowanej samodzielnie
Wywołaj interfejs API przy użyciu FQDN bramy samoobsługowej działającej w aplikacji kontenerowej. Znajdź nazwę FQDN na stronie Przegląd aplikacji kontenera w portalu Azure lub uruchom następujące polecenie az containerapp show.
#!/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 polecenie curl, aby wywołać interfejs API w punkcie końcowym /albumapi/albums. Jeśli API wymaga klucza subskrypcji, przekaż prawidłowy klucz subskrypcji dla wystąpienia API Management w nagłówku żądania:
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"}]
Wskazówka
Jeśli włączysz rejestrowanie dla interfejsu API w usłudze Application Insights, możesz przeglądać dzienniki, aby wyświetlić żądania i odpowiedzi.
Ograniczenia
Wystąpienia bramy hostowanej samodzielnie korzystają z protokołu UDP na potrzeby sygnalizacji aktywności i komunikacji ograniczeń szybkości. Ponieważ usługa Azure Container Apps obecnie nie obsługuje protokołu UDP, ani dla ruchu przychodzącego, ani wewnętrznego, polityka rate-limit nie może synchronizować swojego licznika między wystąpieniami. W związku z tym utrzymywanie trzech replik samodzielnie hostowanej aplikacji kontenera bramy z limitem X może spowodować trzykrotnie większy ruch do momentu osiągnięcia limitu X.
Azure Container Apps dystrybuuje żądania równomiernie między każdą dostępną i sprawną repliką. Aby zaimplementować ograniczanie szybkości, można podzielić żądany limit przez liczbę replik, które chcesz uruchomić, i ustawić wynikową wartość w konfiguracji. Takie podejście ma własne wady, ponieważ możesz nie być w stanie uwzględnić dostosowanych liczników, jeśli i kiedy aplikacje kontenera są skalowane.