Anpassade containersessioner i Azure Container Apps (förhandsversion)
Förutom den inbyggda kodtolkaren som dynamiska Azure Container Apps-sessioner tillhandahåller kan du också använda anpassade containrar för att definiera dina egna sessionssandlådor.
Kommentar
Dynamiska Sessioner i Azure Container Apps är för närvarande i förhandsversion. Mer information finns i förhandsversionsbegränsningar .
Används för anpassade containersessioner
Med anpassade containrar kan du skapa lösningar som är skräddarsydda för dina behov. De gör att du kan köra kod eller köra program i miljöer som är snabba och tillfälliga och erbjuder säkra, begränsade utrymmen med Hyper-V. Dessutom kan de konfigureras med valfri nätverksisolering. Vissa exempel inkluderar:
Kodtolkar: När du behöver köra obetrodd kod i säkra sandbox-miljöer med ett språk som inte stöds i den inbyggda tolken, eller om du behöver fullständig kontroll över kodtolkarmiljön.
Isolerad körning: När du behöver köra program i fientliga scenarier med flera klienter där varje klientorganisation eller användare har en egen sandbox-miljö. Dessa miljöer är isolerade från varandra och från värdprogrammet. Några exempel är program som kör kod som tillhandahålls av användaren, kod som ger slutanvändare åtkomst till ett molnbaserat gränssnitt, AI-agenter och utvecklingsmiljöer.
Använda anpassade containersessioner
Om du vill använda anpassade containersessioner skapar du först en sessionspool med en anpassad containeravbildning. Azure Container Apps startar automatiskt containrar i sina egna Hyper-V-sandbox-miljö med hjälp av den angivna avbildningen. När containern har startats är den tillgänglig för sessionspoolen.
När ditt program begär en session allokeras en instans omedelbart från poolen. Sessionen förblir aktiv tills den går in i ett inaktivt tillstånd, som sedan stoppas och förstörs automatiskt.
Skapa en anpassad containersessionspool
Om du vill skapa en anpassad containersessionspool måste du ange konfigurationsinställningar för containeravbildningar och pooler.
Du anropar eller kommunicerar med varje session med hjälp av HTTP-begäranden. Den anpassade containern måste exponera en HTTP-server på en port som du anger för att svara på dessa begäranden.
Om du vill skapa en anpassad containersessionspool med hjälp av Azure CLI kontrollerar du att du har de senaste versionerna av Azure CLI och Azure Container Apps-tillägget med följande kommandon:
az upgrade
az extension add --name containerapp --upgrade --allow-preview true -y
Anpassade containersessionspooler kräver en arbetsbelastningsprofilaktiverad Azure Container Apps-miljö. Om du inte har en miljö använder du az containerapp env create -n <ENVIRONMENT_NAME> -g <RESOURCE_GROUP> --location <LOCATION> --enable-workload-profiles
kommandot för att skapa en.
az containerapp sessionpool create
Använd kommandot för att skapa en anpassad containersessionspool.
I följande exempel skapas en sessionspool med namnet my-session-pool
med en anpassad containeravbildning myregistry.azurecr.io/my-container-image:1.0
.
Innan du skickar begäran ersätter du platshållarna mellan <>
hakparenteserna med lämpliga värden för sessionspoolen och sessionsidentifieraren.
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"
Det här kommandot skapar en sessionspool med följande inställningar:
Parameter | Värde | beskrivning |
---|---|---|
--name |
my-session-pool |
Namnet på sessionspoolen. |
--resource-group |
my-resource-group |
Resursgruppen som innehåller sessionspoolen. |
--environment |
my-environment |
Namnet eller resurs-ID:t för containerappens miljö. |
--container-type |
CustomContainer |
Containertypen för sessionspoolen. Måste vara CustomContainer för anpassade containersessioner. |
--image |
myregistry.azurecr.io/my-container-image:1.0 |
Containeravbildningen som ska användas för sessionspoolen. |
--registry-server |
myregistry.azurecr.io |
Värdnamnet för containerregisterservern. |
--registry-username |
my-username |
Användarnamnet för att logga in i containerregistret. |
--registry-password |
my-password |
Lösenordet för att logga in i containerregistret. |
--cpu |
0.25 |
Den processor som krävs i kärnor. |
--memory |
0.5Gi |
Det minne som krävs. |
--target-port |
80 |
Sessionsporten som används för inkommande trafik. |
--cooldown-period |
300 |
Antalet sekunder som en session kan vara inaktiv innan sessionen avslutas. Inaktivitetsperioden återställs varje gång sessionens API anropas. Värdet måste vara mellan 300 och 3600 . |
--network-status |
Anger om utgående nätverkstrafik tillåts från sessionen. Giltiga värden är EgressDisabled (standard) och EgressEnabled . |
|
--max-sessions |
10 |
Det maximala antalet sessioner som kan allokeras samtidigt. |
--ready-sessions |
5 |
Målantalet sessioner som är klara i sessionspoolen hela tiden. Öka det här antalet om sessioner allokeras snabbare än poolen fylls på. |
--env-vars |
"key1=value1" "key2=value2" |
Miljövariablerna som ska anges i containern. |
Om du vill uppdatera sessionspoolen använder du az containerapp sessionpool update
kommandot .
Viktigt!
Om sessionen används för att köra kod som inte är betrodd ska du inte inkludera information eller data som du inte vill att den ej betrodda koden ska komma åt. Anta att koden är skadlig och har fullständig åtkomst till containern, inklusive dess miljövariabler, hemligheter och filer.
Arbeta med sessioner
Ditt program interagerar med en session med hjälp av sessionspoolens hanterings-API.
En slutpunkt för poolhantering för anpassade containersessioner följer det här formatet: https://<SESSION_POOL>.<ENVIRONMENT_ID>.<REGION>.azurecontainerapps.io
.
Om du vill hämta sessionspoolens hanteringsslutpunkt använder du az containerapp sessionpool show
kommandot:
az containerapp sessionpool show \
--name <SESSION_POOL_NAME> \
--resource-group <RESOURCE_GROUP> \
--query "properties.poolManagementEndpoint" \
--output tsv
Alla begäranden till slutpunkten för poolhantering måste innehålla ett Authorization
huvud med en ägartoken. Information om hur du autentiserar med API:et för poolhantering finns i Autentisering.
Varje API-begäran måste också innehålla frågesträngsparametern identifier
med sessions-ID:t. Med det här unika sessions-ID:t kan ditt program interagera med specifika sessioner. Mer information om sessionsidentifierare finns i Sessionsidentifierare.
Viktigt!
Sessionsidentifieraren är känslig information som kräver en säker process när du skapar och hanterar dess värde. För att skydda det här värdet måste programmet se till att varje användare eller klient endast har åtkomst till sina egna sessioner. Om du inte kan skydda åtkomsten till sessioner kan det leda till missbruk eller obehörig åtkomst till data som lagras i användarnas sessioner. Mer information finns i Sessionsidentifierare
Vidarebefordra begäranden till sessionens container:
Allt i sökvägen efter baspoolens hanteringsslutpunkt vidarebefordras till sessionens container.
Om du till <POOL_MANAGEMENT_ENDPOINT>/api/uploadfile
exempel anropar dirigeras begäran till sessionens container på 0.0.0.0:<TARGET_PORT>/api/uploadfile
.
Kontinuerlig sessionsinteraktion:
Du kan fortsätta att göra begäranden till samma session. Om det inte finns några begäranden till sessionen längre än nedkylningsperioden tas sessionen bort automatiskt.
Exempelbegäran
I följande exempel visas en begäran till en anpassad containersession av ett användar-ID.
Innan du skickar begäran ersätter du platshållarna mellan <>
hakparenteserna med värden som är specifika för din begäran.
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!'"
}
Den här begäran vidarebefordras till den anpassade containersessionen med identifieraren för användarens ID. Om sessionen inte redan körs allokerar Azure Container Apps en session från poolen innan begäran vidarebefordras.
I exemplet tar sessionens container emot begäran på http://0.0.0.0:<INGRESS_PORT>/<API_PATH_EXPOSED_BY_CONTAINER>
.
Nästa steg
Feedback
https://aka.ms/ContentUserFeedback.
Kommer snart: Under hela 2024 kommer vi att fasa ut GitHub-problem som feedbackmekanism för innehåll och ersätta det med ett nytt feedbacksystem. Mer information finns i:Skicka och visa feedback för