Použijte fondy relací v Azure Container Apps

Pooly relací umožňují přidělení relací během zlomku sekundy a řídí životní cyklus každé relace.

Běžné koncepty obou fondů

Proces vytvoření fondu se mírně liší podle toho, jestli vytváříte fond relací interpretu kódu nebo vlastní fond kontejnerů. Následující koncepty platí pro obojí.

Pokud chcete vytvořit fondy relací pomocí Azure CLI, ujistěte se, že máte nejnovější verze Azure CLI a rozšíření Azure Container Apps:

# Upgrade the Azure CLI
az upgrade

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

Mezi běžné příkazy fondu relací patří:

  • az containerapp sessionpool create
  • az containerapp sessionpool show
  • az containerapp sessionpool list
  • az containerapp sessionpool update
  • az containerapp sessionpool delete

Pomocí --help libovolného příkazu můžete zobrazit dostupné argumenty a podporované hodnoty.

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

Při vytváření nebo aktualizaci fondu můžete nastavit maximální počet souběžných relací, dobu nečinnosti a to, jestli je pro relace povolený odchozí síťový provoz.

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.

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ů.

Konfigurujte fond

Použijte az containerapp sessionpool create --help pro zobrazení nejnovějších argumentů rozhraní příkazového řádku pro konfiguraci fondu relací. Tato část se zaměřuje na pokročilé možnosti konfigurace, které platí pro různé verze rozhraní API.

Konfigurace životního cyklu relace

Při vytváření nebo aktualizaci fondu relací můžete nakonfigurovat způsob ukončení relací nastavením properties.dynamicPoolConfiguration.lifecycleConfiguration. Počínaje verzí 2025-01-01rozhraní API zvolte jeden ze dvou typů životního cyklu.

Úplnou specifikaci rozhraní API najdete ve specifikaci rozhraní API SessionPools.

Časový limit (výchozí)

S životním cyklem Timed se relace odstraní po určité době nečinnosti. Každý požadavek odeslaný do relace resetuje časovač odpočítávání a prodlužuje dobu relace před jejím ukončením o cooldownPeriodInSeconds.

Poznámka:

Timed podporuje se pro všechny typy fondů relací a funguje stejně jako executionType: Timed v předchozích verzích rozhraní API.

{
  "dynamicPoolConfiguration": {
    "lifecycleConfiguration": {
      "cooldownPeriodInSeconds": 600,
      "lifecycleType": "Timed"
    }
  }
}
Vlastnictví Description
cooldownPeriodInSeconds Relaci se odstraní, pokud během tohoto období neexistují žádné požadavky.
maxAlivePeriodInSeconds Není podporováno pro Timed životní cyklus.

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í.

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í.

Většina požadavků rozhraní API také vyžaduje parametr řetězce dotazu identifier s ID relace. Toto jedinečné ID relace umožňuje vaší aplikaci pracovat s konkrétními relacemi. Operace v rámci celého fondu, jako je výpis relací, nevyžadují identifikátor. Další informace o identifikátorech relací najdete v tématu Identifikátory relací.

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

Při vytvoření nebo aktualizaci fondu relací Azure Container Apps ukládá image kontejneru do mezipaměti ve fondu. Toto ukládání do mezipaměti 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.

Fond relací pro interpret kódu

az containerapps sessionpool create Pomocí příkazu vytvořte fond. Následující příklad vytvoří fond relací pro interpretaci kódu Python 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, NodeLTS, Shella CustomContainer.
--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.

Koncový bod správy interpreta kódu

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í, podívejte se na předchozí část s názvem "Obecná sekce" pro příklad příkazu.

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í.
.management/getSession POST Získejte podrobnosti o konkrétní relaci.
.management/listSessions POST Zobrazit všechny relace v rámci fondu pomocí stránkování.

Ú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. Verze rozhraní API se můžou změnit, takže před použitím v produkčním prostředí vždy ověřte nejnovější verzi v dokumentaci k rozhraní REST API.

Příklad: {sessionManagementEndpoint}/code/execute?api-version=2024-02-02-preview&identifier=<IDENTIFIER>

getSession a listSessions koncové body naleznete v části Načtení informací o relaci pro podrobnosti o žádosti a odpovědi.

Referenční informace k rozhraní REST API najdete v tématu Rozhraní API roviny dat Služby Container Apps a přehled operací roviny dat Container Apps.

Vlastní pool relací pro kontejnery

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.

Následující funkce platí jenom pro vlastní pooly relací kontejnerů.

Vlastní koncový bod správy kontejnerů

Pro vlastní fondy relací kontejnerů získejte koncový bod správy z portálu Azure nebo výstupu Azure CLI. Koncový bod se vrátí jako poolManagementEndpoint.

Koncový bod je ve formátu https://<SESSION_POOL_NAME>.<ENVIRONMENT_ID>.<REGION>.azurecontainerapps.io.

Vlastní fondy kontejnerů podporují stejné koncové body správy jako fondy interpretů kódu a vlastní koncové body aplikace, které definujete:

Cesta ke koncovému bodu Metoda Description
* (vlastní cesty) POST, GET Vlastní koncové body definované vaší aplikací kontejneru
.management/getSession POST Získejte podrobnosti o konkrétní relaci.
.management/listSessions POST Zobrazit všechny relace v rámci fondu pomocí stránkování.

getSession a listSessions koncové body naleznete v části Načtení informací o relaci pro podrobnosti o žádosti a odpovědi.

OnContainerExit

OnContainerExit Při životním cyklu zůstane relace aktivní, dokud se kontejner sám nedokončí nebo nedosáhne maximální doby života.

{
  "dynamicPoolConfiguration": {
    "lifecycleConfiguration": {
      "maxAlivePeriodInSeconds": 6000,
      "lifecycleType": "OnContainerExit"
    }
  }
}
Vlastnictví Description
maxAlivePeriodInSeconds Maximální doba, po kterou může relace zůstat aktivní, než ji odstraníte.
cooldownPeriodInSeconds Není podporováno pro OnContainerExit životní cyklus.

Sondy kontejnerů

Sondy kontejnerů umožňují definovat kontroly stavu kontejnerů relací, aby fond mohl detekovat relace, které nejsou v pořádku, a nahradit je, aby byl readySessionInstances cíl v pořádku.

Pooly relací podporují kontroly Liveness a Startup. Další informace o chování sondy najdete v tématu Health probes in Azure Container Apps.

Při vytváření nebo aktualizaci fondu relací zadejte sondy v properties.customContainerTemplate.containers. Kompletní schéma těla požadavku najdete v referenční dokumentaci rozhraní API pro vytvoření nebo aktualizaci SessionPools. Následující příklad ukazuje částečnou konfiguraci s definicemi sondy:

{
  "properties": {
    "customContainerTemplate": {
      "containers": [
        {
          "name": "my-session-container",
          "image": "myregistry.azurecr.io/my-session-image:latest",
          "probes": [
            {
              "type": "Liveness",
              "httpGet": {
                "path": "/health",
                "port": 8080
              },
              "periodSeconds": 10,
              "failureThreshold": 3
            },
            {
              "type": "Startup",
              "httpGet": {
                "path": "/ready",
                "port": 8080
              },
              "periodSeconds": 5,
              "failureThreshold": 30
            }
          ]
        }
      ]
    },
    "dynamicPoolConfiguration": {
      "readySessionInstances": 5
    }
  }
}

Vlastní fondy relací kontejnerů vyžadují prostředí Azure Container Apps s povolenými profily úloh. Pokud prostředí nemáte, vytvořte ho az containerapp env create -n <ENVIRONMENT_NAME> -g <RESOURCE_GROUP> --location <LOCATION> 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ž 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.
--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 aktualizovat fond relací, použijte az containerapp sessionpool update příkaz.