Udostępnij za pośrednictwem


Niestandardowe sesje kontenera usługi Azure Container Apps

Oprócz wbudowanego interpretera kodu, który udostępnia dynamiczne sesje usługi Azure Container Apps, można również użyć kontenerów niestandardowych do zdefiniowania własnych piaskownic sesji.

Zastosowania dla niestandardowych sesji kontenera

Kontenery niestandardowe umożliwiają tworzenie rozwiązań dostosowanych do Twoich potrzeb. Umożliwiają one wykonywanie kodu lub uruchamianie aplikacji w środowiskach, które są szybkie i efemeryczne oraz oferują bezpieczne, piaskownicowe miejsca z funkcją Hyper-V. Ponadto można je skonfigurować z opcjonalną izolacją sieci. Przykłady obejmują:

  • Interpretery kodu: jeśli musisz wykonać niezaufany kod w bezpiecznych piaskownicach przez język, który nie jest obsługiwany w wbudowanym interpreterze, lub potrzebujesz pełnej kontroli nad środowiskiem interpretera kodu.

  • Wykonanie izolowane: jeśli musisz uruchamiać aplikacje w wrogich scenariuszach wielodostępnych, w których każda dzierżawa lub użytkownik ma własne środowisko piaskownicy. Te środowiska są odizolowane od siebie i od aplikacji hosta. Niektóre przykłady obejmują aplikacje, które uruchamiają kod dostarczony przez użytkownika, kod, który przyznaje użytkownikowi końcowemu dostęp do powłoki opartej na chmurze, agentów sztucznej inteligencji i środowisk deweloperskich.

Używanie niestandardowych sesji kontenera

Aby użyć niestandardowych sesji kontenera, należy najpierw utworzyć pulę sesji z niestandardowym obrazem kontenera. Usługa Azure Container Apps automatycznie uruchamia kontenery we własnych piaskownicach funkcji Hyper-V przy użyciu podanego obrazu. Po uruchomieniu kontenera jest on dostępny dla puli sesji.

Gdy aplikacja żąda sesji, wystąpienie jest natychmiast przydzielane z puli. Sesja pozostaje aktywna, dopóki nie wejdzie w stan bezczynności, który zostanie automatycznie zatrzymany i zniszczony.

Tworzenie niestandardowej puli sesji kontenera

Aby utworzyć niestandardową pulę sesji kontenera, należy podać ustawienia konfiguracji obrazu kontenera i puli.

Wywoływanie lub komunikowanie się z każdą sesją przy użyciu żądań HTTP. Kontener niestandardowy musi uwidocznić serwer HTTP na porcie określonym w celu odpowiadania na te żądania.

Aby utworzyć niestandardową pulę sesji kontenera przy użyciu interfejsu wiersza polecenia platformy Azure, upewnij się, że masz najnowsze wersje interfejsu wiersza polecenia platformy Azure i rozszerzenie Azure Container Apps za pomocą następujących poleceń:

az upgrade
az extension add --name containerapp --upgrade --allow-preview true -y

Niestandardowe pule sesji kontenerów wymagają środowiska usługi Azure Container Apps z włączoną obsługą profilu obciążenia. Jeśli nie masz środowiska, użyj az containerapp env create -n <ENVIRONMENT_NAME> -g <RESOURCE_GROUP> --location <LOCATION> --enable-workload-profiles polecenia , aby go utworzyć.

Użyj polecenia , az containerapp sessionpool create aby utworzyć niestandardową pulę sesji kontenera.

Poniższy przykład tworzy pulę sesji o nazwie my-session-pool z niestandardowym obrazem myregistry.azurecr.io/my-container-image:1.0kontenera .

Przed wysłaniem żądania zastąp symbole zastępcze między <> nawiasami odpowiednimi wartościami dla puli sesji i identyfikatorem sesji.

az containerapp sessionpool create \
    --name my-session-pool \
    --resource-group <RESOURCE_GROUP> \
    --environment <ENVIRONMENT> \
    --registry-server myregistry.azurecr.io \
    --registry-username <USER_NAME> \
    --registry-password <PASSWORD> \
    --container-type CustomContainer \
    --image myregistry.azurecr.io/my-container-image:1.0 \
    --cpu 0.25 --memory 0.5Gi \
    --target-port 80 \
    --cooldown-period 300 \
    --network-status EgressDisabled \
    --max-sessions 10 \
    --ready-sessions 5 \
    --env-vars "key1=value1" "key2=value2" \
    --location <LOCATION>

To polecenie tworzy pulę sesji z następującymi ustawieniami:

Parametr Wartość Opis
--name my-session-pool Nazwa puli sesji.
--resource-group my-resource-group Grupa zasobów zawierająca pulę sesji.
--environment my-environment Nazwa lub identyfikator zasobu środowiska aplikacji kontenera.
--container-type CustomContainer Typ kontenera puli sesji. Musi być CustomContainer przeznaczony dla niestandardowych sesji kontenera.
--image myregistry.azurecr.io/my-container-image:1.0 Obraz kontenera do użycia dla puli sesji.
--registry-server myregistry.azurecr.io Nazwa hosta serwera rejestru kontenerów.
--registry-username my-username Nazwa użytkownika do zalogowania się do rejestru kontenerów.
--registry-password my-password Hasło do logowania się do rejestru kontenerów.
--cpu 0.25 Wymagany procesor CPU w rdzeniach.
--memory 0.5Gi Wymagana pamięć.
--target-port 80 Port sesji używany do ruchu przychodzącego.
--cooldown-period 300 Liczba sekund bezczynności sesji przed zakończeniem sesji. Okres bezczynności jest resetowany za każdym razem, gdy interfejs API sesji jest wywoływany. Wartość musi zawierać się między 300 i 3600.
--network-status Określa, czy wychodzący ruch sieciowy jest dozwolony z sesji. Prawidłowe wartości to EgressDisabled (wartość domyślna) i EgressEnabled.
--max-sessions 10 Maksymalna liczba sesji, które można przydzielić w tym samym czasie.
--ready-sessions 5 Docelowa liczba sesji, które są gotowe w puli sesji przez cały czas. Zwiększ tę liczbę, jeśli sesje są przydzielane szybciej niż pula jest uzupełniana.
--env-vars "key1=value1" "key2=value2" Zmienne środowiskowe do ustawienia w kontenerze.
--location "Supported Location" Lokalizacja puli sesji.

Aby sprawdzić stan puli sesji, użyj az containerapp sessionpool show polecenia :

az containerapp sessionpool show \
    --name <SESSION_POOL_NAME> \
    --resource-group <RESOURCE_GROUP> \
    --query "properties.poolManagementEndpoint" \
    --output tsv

Aby zaktualizować pulę sesji, użyj az containerapp sessionpool update polecenia .

Ważne

Jeśli sesja jest używana do uruchamiania niezaufanego kodu, nie dołączaj informacji ani danych, do których nie chcesz uzyskiwać dostępu za pomocą niezaufanego kodu. Załóżmy, że kod jest złośliwy i ma pełny dostęp do kontenera, w tym jego zmiennych środowiskowych, wpisów tajnych i plików.

Buforowanie obrazów

Po utworzeniu lub zaktualizowaniu puli sesji usługa Azure Container Apps buforuje obraz kontenera w puli. Buforowanie pomaga przyspieszyć proces tworzenia nowych sesji.

Wszelkie zmiany obrazu nie są automatycznie odzwierciedlane w sesjach. Aby zaktualizować obraz, zaktualizuj pulę sesji za pomocą nowego tagu obrazu. Użyj unikatowego tagu dla każdej aktualizacji obrazu, aby upewnić się, że nowy obraz jest ściągany.

Praca z sesjami

Aplikacja wchodzi w interakcję z sesją przy użyciu interfejsu API zarządzania puli sesji.

Punkt końcowy zarządzania pulą dla niestandardowych sesji kontenerów ma następujący format: https://<SESSION_POOL>.<ENVIRONMENT_ID>.<REGION>.azurecontainerapps.io.

Aby pobrać punkt końcowy zarządzania puli sesji, użyj az containerapp sessionpool show polecenia :

az containerapp sessionpool show \
    --name <SESSION_POOL_NAME> \
    --resource-group <RESOURCE_GROUP> \
    --query "properties.poolManagementEndpoint" \
    --output tsv

Wszystkie żądania do punktu końcowego zarządzania pulą Authorization muszą zawierać nagłówek z tokenem elementu nośnego. Aby dowiedzieć się, jak uwierzytelniać się za pomocą interfejsu API zarządzania pulą, zobacz Uwierzytelnianie.

Każde żądanie interfejsu API musi również zawierać parametr identifier ciągu zapytania z identyfikatorem sesji. Ten unikatowy identyfikator sesji umożliwia aplikacji interakcję z określonymi sesjami. Aby dowiedzieć się więcej na temat identyfikatorów sesji, zobacz Identyfikatory sesji.

Ważne

Identyfikator sesji jest poufnymi informacjami, które wymagają bezpiecznego procesu podczas tworzenia wartości i zarządzania nią. Aby chronić tę wartość, aplikacja musi mieć pewność, że każdy użytkownik lub dzierżawa ma dostęp tylko do własnych sesji. Brak bezpiecznego dostępu do sesji może spowodować nieprawidłowe użycie lub nieautoryzowany dostęp do danych przechowywanych w sesjach użytkowników. Aby uzyskać więcej informacji, zobacz Identyfikatory sesji

Przekazywanie żądań do kontenera sesji:

Wszystkie elementy w ścieżce po punkcie końcowym zarządzania pulą podstawową są przekazywane do kontenera sesji.

Jeśli na przykład wykonasz wywołanie metody <POOL_MANAGEMENT_ENDPOINT>/api/uploadfile, żądanie jest kierowane do kontenera sesji pod adresem 0.0.0.0:<TARGET_PORT>/api/uploadfile.

Interakcja z sesją ciągłą:

Możesz nadal wysyłać żądania do tej samej sesji. Jeśli nie ma żadnych żądań do sesji przez dłuższy niż okres ochładzania, sesja zostanie automatycznie usunięta.

Przykładowe żądanie

W poniższym przykładzie pokazano żądanie do niestandardowej sesji kontenera według identyfikatora użytkownika.

Przed wysłaniem żądania zastąp symbole zastępcze między <> nawiasami wartościami specyficznymi dla żądania.

POST https://<SESSION_POOL_NAME>.<ENVIRONMENT_ID>.<REGION>.azurecontainerapps.io/<API_PATH_EXPOSED_BY_CONTAINER>?identifier=<USER_ID>
Authorization: Bearer <TOKEN>
{
  "command": "echo 'Hello, world!'"
}

To żądanie jest przekazywane do niestandardowej sesji kontenera z identyfikatorem identyfikatora użytkownika. Jeśli sesja nie jest jeszcze uruchomiona, usługa Azure Container Apps przydziela sesję z puli przed przekazaniem żądania.

W tym przykładzie kontener sesji odbiera żądanie pod adresem http://0.0.0.0:<INGRESS_PORT>/<API_PATH_EXPOSED_BY_CONTAINER>.

Korzystanie z tożsamości zarządzanej

Tożsamość zarządzana firmy Microsoft Entra ID umożliwia niestandardowe pule sesji kontenera i ich sesje uzyskiwania dostępu do innych chronionych zasobów firmy Microsoft Entra. Aby uzyskać więcej informacji na temat tożsamości zarządzanych w usłudze Microsoft Entra ID, zobacz Tożsamości zarządzane dla zasobów platformy Azure.

Tożsamości zarządzane dla niestandardowych pul sesji kontenerów można włączyć. Obsługiwane są tożsamości zarządzane przypisane przez system i przypisane przez użytkownika.

Istnieją dwa sposoby używania tożsamości zarządzanych z niestandardowymi pulami sesji kontenerów:

  • Uwierzytelnianie ściągania obrazu: użyj tożsamości zarządzanej, aby uwierzytelnić się w rejestrze kontenerów, aby ściągnąć obraz kontenera.

  • Dostęp do zasobów: użyj tożsamości zarządzanej puli sesji w sesji, aby uzyskać dostęp do innych chronionych zasobów firmy Microsoft. Ze względu na jego implikacje dotyczące zabezpieczeń ta funkcja jest domyślnie wyłączona.

    Ważne

    Jeśli włączysz dostęp do tożsamości zarządzanej w sesji, każdy kod lub programy uruchomione w sesji mogą tworzyć tokeny entra dla tożsamości zarządzanej puli. Ponieważ sesje zwykle uruchamiają niezaufany kod, należy używać tej funkcji z ostrożnością.

Aby włączyć tożsamość zarządzaną dla niestandardowej puli sesji kontenerów, użyj usługi Azure Resource Manager.

Rejestrowanie

Dzienniki konsoli z niestandardowych sesji kontenera są dostępne w obszarze roboczym usługi Azure Log Analytics skojarzonym ze środowiskiem usługi Azure Container Apps w tabeli o nazwie AppEnvSessionConsoleLogs_CL.

Rozliczenia

Niestandardowe sesje kontenera są rozliczane na podstawie zasobów używanych przez pulę sesji. Aby uzyskać więcej informacji, zobacz Rozliczenia usługi Azure Container Apps.

Następne kroki