Sdílet prostřednictvím


Použití poolů relací v Azure Container Apps

Skupiny relací poskytují podsekundové časy přidělování relací pro nové skupiny; jsou zodpovědné za správu a životní cyklus každé relace.

Konfigurace

Chování fondů relací můžete řídit pomocí následujících parametrů, které je možné použít u az containerapp sessionpool create.

Účel Vlastnictví Description
Nastavte maximální počet relací max-sessions Maximální počet souběžných relací povolených ve fondu. Požadavky, které přicházejí po dosažení maximálního limitu, jsou vráceny s chybou serveru 404, která značí, že do fondu nejsou přidělovány žádné další relace.
Doba čekání cooldown-period Počet sekund, po které může být relace nečinná, než je relace ukončena. Období nečinnosti se resetuje při každém volání rozhraní API relace. Hodnota musí být mezi 300 a 3600.
Cílové množství relací ready-sessions Cílový počet relací, které mají být připravené ve fondu.

Vytvořit bazén

Proces vytvoření fondu se mírně liší podle toho, jestli vytváříte fond interpretů kódu nebo vlastní fond kontejnerů.

Fond interpretů kódu

Pokud chcete vytvořit fond relací interpretu kódu pomocí Azure CLI, ujistěte se, že máte nejnovější verze Azure CLI a rozšíření Azure Container Apps pomocí následujících příkazů:

# Upgrade the Azure CLI
az upgrade

# Install or upgrade the Azure Container Apps extension
az extension add --name containerapp --upgrade --allow-preview true -y

az containerapps sessionpool create Pomocí příkazu vytvořte fond. Následující příklad vytvoří fond relací pro výklad kódu Pythonu s názvem my-session-pool. Před spuštěním příkazu nezapomeňte nahradit <RESOURCE_GROUP> názvem vaší skupiny prostředků.

az containerapp sessionpool create \
    --name my-session-pool \
    --resource-group <RESOURCE_GROUP> \
    --location westus2 \
    --container-type PythonLTS \
    --max-sessions 100 \
    --cooldown-period 300 \
    --network-status EgressDisabled

Při vytváření fondu relací můžete definovat následující nastavení:

Setting Description
--container-type Typ interpretu kódu, který se má použít. Mezi podporované hodnoty patří PythonLTS, NodeLTSa Shell.
--max-sessions Maximální povolený počet přidělených sezení současně. Maximální hodnota je 600.
--cooldown-period Počet povolených nečinných sekund před ukončením. Období nečinnosti se resetuje při každém volání rozhraní API relace. Povolený rozsah je mezi 300 a 3600.
--network-status Určuje, jestli je odchozí síťový provoz z relace povolený. Platné hodnoty jsou EgressDisabled (výchozí) a EgressEnabled.

Důležité

Pokud povolíte výchozí přenos dat, bude mít kód spuštěný v relaci přístup k internetu. Buďte opatrní, pokud je kód nedůvěryhodný, protože se dá použít k provádění škodlivých aktivit, jako jsou útoky na dostupnost služby.

Získání koncového bodu rozhraní API pro správu

Pokud chcete používat relace interpretu kódu prostřednictvím integrací s architekturou LLM nebo voláním koncových bodů API pro správu přímo, potřebujete koncový bod API pro správu daného fondu.

Koncový bod je ve formátu https://<REGION>.dynamicsessions.io/subscriptions/<SUBSCRIPTION_ID>/resourceGroups/<RESOURCE_GROUP>/sessionPools/<SESSION_POOL_NAME>.

Pokud chcete načíst koncový bod rozhraní API pro správu pro fond relací, použijte az containerapps sessionpool show příkaz. Před spuštěním příkazu nezapomeňte nahradit <RESOURCE_GROUP> názvem vaší skupiny prostředků.

az containerapp sessionpool show \
    --name my-session-pool \
    --resource-group <RESOURCE_GROUP> \
    --query 'properties.poolManagementEndpoint' -o tsv

Vlastní fond kontejnerů

Pokud chcete vytvořit vlastní fond relací pro kontejnery, musíte poskytnout obraz kontejneru a nastavení konfigurace fondu.

Každou relaci vyvoláte nebo komunikujete pomocí požadavků HTTP. Vlastní kontejner musí vystavit server HTTP na portu, který zadáte, aby na tyto požadavky reagoval.

Pokud chcete vytvořit vlastní fond relací kontejnerů pomocí Azure CLI, ujistěte se, že máte nejnovější verze Azure CLI a rozšíření Azure Container Apps tím, že použijete následující příkazy:

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

Vlastní fondy relací kontejneru vyžadují prostředí Azure Container Apps s povoleným profilem úlohy. Pokud prostředí nemáte, vytvořte ho az containerapp env create -n <ENVIRONMENT_NAME> -g <RESOURCE_GROUP> --location <LOCATION> --enable-workload-profiles pomocí příkazu.

Pomocí příkazu az containerapp sessionpool create vytvořte vlastní fond relací kontejneru.

Následující příklad vytvoří pool sezení s názvem my-session-pool a vlastním kontejnerovým image myregistry.azurecr.io/my-container-image:1.0.

Před odesláním požadavku nahraďte zástupné symboly mezi hranatými závorkami <> příslušnými hodnotami pro váš fond relací a identifikátor relace.

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>

Tento příkaz vytvoří fond relací s následujícím nastavením:

Parameter Hodnota Description
--name my-session-pool Název fondu relací.
--resource-group my-resource-group Skupina prostředků, která obsahuje fond relací.
--environment my-environment Název prostředí aplikace kontejneru nebo ID prostředku.
--container-type CustomContainer Typ kontejneru fondu relací. Musí to být CustomContainer pro vlastní relace kontejneru.
--image myregistry.azurecr.io/my-container-image:1.0 Obraz kontejneru, který se má použít pro fond relací.
--registry-server myregistry.azurecr.io Název hostitele serveru registru kontejneru.
--registry-username my-username Uživatelské jméno pro přihlášení k registru kontejneru.
--registry-password my-password Heslo pro přihlášení k registru kontejneru.
--cpu 0.25 Požadovaný počet jader procesoru (CPU).
--memory 0.5Gi Požadovaná paměť.
--target-port 80 Port relace používaný pro příchozí přenos dat.
--cooldown-period 300 Počet sekund, po které může být relace nečinná, než se relace ukončí. Období nečinnosti se resetuje při každém volání rozhraní API relace. Hodnota musí být mezi 300 a 3600.
--network-status EgressDisabled Určuje, jestli je odchozí síťový provoz z relace povolený. Platné hodnoty jsou EgressDisabled (výchozí) a EgressEnabled.
--max-sessions 10 Maximální počet relací, které lze přidělit současně.
--ready-sessions 5 Cílový počet relací, které jsou neustále připravené ve fondu relací. Zvyšte toto číslo, pokud jsou relace přidělovány rychleji než je fond doplňován.
--env-vars "key1=value1" "key2=value2" Proměnné prostředí, které se mají nastavit v kontejneru.
--location "Supported Location" Umístění fondu relací.

Pokud chcete zkontrolovat stav fondu relací, použijte az containerapp sessionpool show příkaz:

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

Pokud chcete aktualizovat fond relací, použijte az containerapp sessionpool update příkaz.

Důležité

Pokud se relace používá ke spuštění nedůvěryhodného kódu, nezahrnujte informace ani data, ke kterým nechcete, aby nedůvěryhodný kód přistupoval. Předpokládejme, že kód je škodlivý a má úplný přístup ke kontejneru, včetně jeho proměnných prostředí, tajných kódů a souborů.

Koncový bod správy

Důležité

Identifikátor relace je citlivá informace, která vyžaduje zabezpečený proces, když vytvoříte a spravujete jeho hodnotu. Aby byla tato hodnota chráněná, musí vaše aplikace zajistit, aby každý uživatel nebo tenant měl přístup jenom k vlastním relacím.

Pokud se nepodaří zabezpečit přístup k relacím, může dojít ke zneužití nebo neoprávněnému přístupu k datům uloženým v relacích uživatelů. Další informace naleznete v části Identifikátory relací.

Pro správu relací v poolu jsou k dispozici následující koncové body:

Cesta ke koncovému bodu Metoda Description
code/execute POST Spusťte kód v relaci.
files/upload POST Nahrajte soubor do relace.
files/content/{filename} GET Stáhněte si soubor z relace.
files GET Vypište soubory v sezení.

Úplnou adresu URL pro každý koncový bod vytvoříte zřetězením koncového bodu rozhraní API pro správu fondu s cestou koncového bodu. Řetězec dotazu musí obsahovat identifier parametr obsahující identifikátor relace a api-version parametr s hodnotou 2024-02-02-preview.

Příklad: https://<REGION>.dynamicsessions.io/subscriptions/<SUBSCRIPTION_ID>/resourceGroups/<RESOURCE_GROUP>/sessionPools/<SESSION_POOL_NAME>/code/execute?api-version=2024-02-02-preview&identifier=<IDENTIFIER>

Pokud chcete načíst koncový bod správy fondu relací, použijte az containerapp sessionpool show příkaz:

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

Všechny požadavky na koncový bod správy fondu musí obsahovat hlavičku Authorization s tokenem typu Bearer. Informace o ověřování pomocí rozhraní API pro správu fondů najdete v tématu Ověřování.

Každý požadavek rozhraní API musí také obsahovat řetězec dotazu s parametrem identifier a ID relace. Toto jedinečné ID relace umožňuje vaší aplikaci pracovat s konkrétními relacemi. Další informace o identifikátorech relací najdete v tématu Identifikátory relací.

Ukládání obrázků do mezipaměti

Když je fond relací vytvořen nebo aktualizován, Azure Container Apps uloží image kontejneru do mezipaměti v tomto fondu. Cacheování pomáhá urychlit proces vytváření nových relací.

Žádné změny obrázku se automaticky neprojeví v relacích. Pokud chcete image aktualizovat, aktualizujte fond relací novou značkou image. Pro každou aktualizaci image použijte jedinečnou značku, abyste zajistili, že se nová image natáhne.