Vlastní relace kontejnerů Azure Container Apps (Preview)
Kromě integrovaného interpretu kódu, který poskytují dynamické relace Azure Container Apps, můžete také použít vlastní kontejnery k definování vlastních sandboxů relací.
Poznámka:
Dynamické relace Azure Container Apps jsou aktuálně ve verzi Preview. Další informace najdete v omezeních preview.
Používá se pro vlastní relace kontejneru.
Vlastní kontejnery umožňují vytvářet řešení přizpůsobená vašim potřebám. Umožňují spouštět kód nebo spouštět aplikace v prostředích, která jsou rychlá a dočasné a nabízejí zabezpečené a izolované prostory s hyper-V. Kromě toho je možné je nakonfigurovat s volitelnou izolací sítě. Mezi některé příklady patří:
Interprety kódu: Pokud potřebujete spustit nedůvěryhodný kód v zabezpečených sandboxech jazykem, který není podporovaný v integrovaném interpretu, nebo potřebujete plnou kontrolu nad prostředím interpretu kódu.
Izolované spouštění: Pokud potřebujete spouštět aplikace v nehostinných scénářích s více tenanty, ve kterých má každý tenant nebo uživatel vlastní prostředí v izolovaném prostoru (sandbox). Tato prostředí jsou izolovaná od sebe a od hostitelské aplikace. Mezi příklady patří aplikace, které spouštějí uživatelský kód, kód, který koncovým uživatelům uděluje přístup ke cloudovým prostředím, agentům AI a vývojovým prostředím.
Použití vlastních relací kontejneru
Pokud chcete použít vlastní relace kontejneru, nejprve vytvoříte fond relací s vlastní imagí kontejneru. Azure Container Apps automaticky spouští kontejnery ve vlastních sandboxech Hyper-V pomocí poskytnuté image. Jakmile se kontejner spustí, bude dostupný pro fond relací.
Když aplikace požádá o relaci, instance se okamžitě přidělí z fondu. Relace zůstane aktivní, dokud nezajde do nečinného stavu, který se pak automaticky zastaví a zničí.
Vytvoření vlastního fondu relací kontejneru
Pokud chcete vytvořit vlastní fond relací kontejneru, musíte zadat nastavení konfigurace image kontejneru a 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 pomocí následujících příkazů:
az upgrade
az extension add --name containerapp --upgrade --allow-preview true -y
Vlastní fondy relací kontejneru vyžadují profil úlohy s povoleným prostředím Azure Container Apps. 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.
az containerapp sessionpool create
Pomocí příkazu vytvořte vlastní fond relací kontejneru.
Následující příklad vytvoří fond relací s názvem my-session-pool
vlastní image kontejneru 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:
Parametr | Hodnota | Popis |
---|---|---|
--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 nebo ID prostředku prostředí aplikace kontejneru. |
--container-type |
CustomContainer |
Typ kontejneru fondu relací. Musí se jednat CustomContainer o vlastní relace kontejneru. |
--image |
myregistry.azurecr.io/my-container-image:1.0 |
Image 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ý procesor v jádrech. |
--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 |
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 připravené ve fondu relací po celou dobu. Pokud jsou relace přiděleny rychleji, než je fond doplňován, zvyšte toto číslo. |
--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 k nedůvěryhodnému kódu 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ů.
Ukládání obrázků do mezipaměti
Když se vytvoří nebo aktualizuje fond 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í.
Všechny změny obrázku se v relacích neprojeví automaticky. 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.
Práce s relacemi
Aplikace komunikuje s relací pomocí rozhraní API pro správu fondu relací.
Koncový bod správy fondu pro vlastní relace kontejneru se řídí tímto formátem: https://<SESSION_POOL>.<ENVIRONMENT_ID>.<REGION>.azurecontainerapps.io
.
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 nosným tokenem. 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í obsahovat také parametr identifier
řetězce dotazu s 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í.
Důležité
Identifikátor relace je citlivé informace, které vyžadují zabezpečený proces při vytváření a správě jeho hodnoty. 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. Selhání zabezpečeného přístupu k relacím může mít za následek zneužití nebo neoprávněný přístup k datům uloženým v relacích uživatelů. Další informace najdete v tématu Identifikátory relací.
Předávání požadavků do kontejneru relace:
Cokoli v cestě za koncovým bodem správy základního fondu se předá kontejneru relace.
Pokud například voláte <POOL_MANAGEMENT_ENDPOINT>/api/uploadfile
, požadavek se směruje do kontejneru relace na adrese 0.0.0.0:<TARGET_PORT>/api/uploadfile
.
Průběžná interakce relace:
Žádosti můžete pokračovat ve stejné relaci. Pokud relace neobsahuje žádné požadavky na delší dobu, než je období cooldownu, relace se automaticky odstraní.
Ukázkový požadavek
Následující příklad ukazuje požadavek na vlastní relaci kontejneru podle ID uživatele.
Před odesláním požadavku nahraďte zástupné symboly mezi <>
hranatými závorkami hodnotami specifickými pro váš požadavek.
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!'"
}
Tento požadavek se předá vlastní relaci kontejneru s identifikátorem ID uživatele. Pokud relace ještě není spuštěná, Azure Container Apps před předáním požadavku přidělí relaci z fondu.
V tomto příkladu kontejner relace obdrží požadavek na http://0.0.0.0:<INGRESS_PORT>/<API_PATH_EXPOSED_BY_CONTAINER>
adrese .
Použití spravované identity
Spravovaná identita z Microsoft Entra ID umožňuje vašim vlastním fondům relací kontejnerů a jejich relacím přístup k dalším prostředkům chráněným Microsoft Entra. Další informace o spravovaných identitách v Microsoft Entra ID najdete v tématu Spravované identity pro prostředky Azure.
Spravované identity můžete povolit pro vlastní fondy relací kontejneru. Podporují se spravované identity přiřazené systémem i spravované uživatelem.
Spravované identity s vlastními fondy relací kontejnerů můžete používat dvěma způsoby:
Ověřování vyžádáním image: Použijte spravovanou identitu k ověření v registru kontejneru k načtení image kontejneru.
Přístup k prostředkům: Použijte spravovanou identitu fondu relací v relaci pro přístup k dalším prostředkům chráněným microsoftem Entra. Vzhledem k tomu, že to má vliv na zabezpečení, je tato funkce ve výchozím nastavení zakázaná.
Důležité
Pokud povolíte přístup ke spravované identitě v relaci, může jakýkoli kód nebo programy spuštěné v relaci vytvořit tokeny Entra pro spravovanou identitu fondu. Vzhledem k tomu, že relace obvykle spouštějí nedůvěryhodný kód, použijte tuto funkci s opatrností.
Pokud chcete povolit spravovanou identitu pro vlastní fond relací kontejneru, použijte Azure Resource Manager.
Protokolování
Protokoly konzoly z vlastních relací kontejneru jsou k dispozici v pracovním prostoru Služby Azure Log Analytics přidruženém k prostředí Azure Container Apps v tabulce s názvem AppEnvSessionConsoleLogs_CL
.
Fakturace
Vlastní relace kontejneru se účtují na základě prostředků spotřebovaných fondem relací. Další informace najdete v tématu Fakturace azure Container Apps.