Aangepaste containersessies van Azure Container Apps
Naast de ingebouwde code-interpreter die dynamische sessies van Azure Container Apps bieden, kunt u ook aangepaste containers gebruiken om uw eigen sessie-sandboxes te definiëren.
Wordt gebruikt voor aangepaste containersessies
Met aangepaste containers kunt u oplossingen bouwen die zijn afgestemd op uw behoeften. Hiermee kunt u code uitvoeren of toepassingen uitvoeren in omgevingen die snel en kortstondig zijn en veilige, sandbox-ruimten bieden met Hyper-V. Daarnaast kunnen ze worden geconfigureerd met optionele netwerkisolatie. Enkele voorbeelden:
Code-interpreters: wanneer u niet-vertrouwde code moet uitvoeren in beveiligde sandboxes door een taal die niet wordt ondersteund in de ingebouwde interpreter, of als u volledige controle over de code-interpreteromgeving nodig hebt.
Geïsoleerde uitvoering: Wanneer u toepassingen moet uitvoeren in vijandige scenario's met meerdere tenants waarbij elke tenant of gebruiker een eigen sandbox-omgeving heeft. Deze omgevingen zijn geïsoleerd van elkaar en van de hosttoepassing. Enkele voorbeelden hiervan zijn toepassingen die door de gebruiker geleverde code uitvoeren, code die eindgebruikers toegang verleent tot een cloudshell, AI-agents en ontwikkelomgevingen.
Aangepaste containersessies gebruiken
Als u aangepaste containersessies wilt gebruiken, maakt u eerst een sessiegroep met een aangepaste containerinstallatiekopieën. Azure Container Apps start automatisch containers in hun eigen Hyper-V-sandboxes met behulp van de opgegeven installatiekopieën. Zodra de container is gestart, is deze beschikbaar voor de sessiegroep.
Wanneer uw toepassing een sessie aanvraagt, wordt een exemplaar direct toegewezen vanuit de pool. De sessie blijft actief totdat deze een niet-actieve status invoert, die vervolgens automatisch wordt gestopt en vernietigd.
Een aangepaste containersessiegroep maken
Als u een aangepaste containersessiegroep wilt maken, moet u een containerinstallatiekopieën en poolconfiguratie-instellingen opgeven.
U roept elke sessie aan of communiceert met behulp van HTTP-aanvragen. De aangepaste container moet een HTTP-server beschikbaar maken op een poort die u opgeeft om op deze aanvragen te reageren.
Als u een aangepaste containersessiegroep wilt maken met behulp van de Azure CLI, moet u ervoor zorgen dat u de nieuwste versies van de Azure CLI en de Azure Container Apps-extensie hebt met de volgende opdrachten:
az upgrade
az extension add --name containerapp --upgrade --allow-preview true -y
Voor aangepaste containersessiegroepen is een Azure Container Apps-omgeving met een workloadprofiel vereist. Als u geen omgeving hebt, gebruikt u de az containerapp env create -n <ENVIRONMENT_NAME> -g <RESOURCE_GROUP> --location <LOCATION> --enable-workload-profiles
opdracht om er een te maken.
Gebruik de az containerapp sessionpool create
opdracht om een aangepaste containersessiegroep te maken.
In het volgende voorbeeld wordt een sessiegroep gemaakt met de naam my-session-pool
met een aangepaste containerinstallatiekopieën myregistry.azurecr.io/my-container-image:1.0
.
Voordat u de aanvraag verzendt, vervangt u de tijdelijke aanduidingen tussen de <>
haken door de juiste waarden voor uw sessiegroep en sessie-id.
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>
Met deze opdracht maakt u een sessiegroep met de volgende instellingen:
Parameter | Weergegeven als | Beschrijving |
---|---|---|
--name |
my-session-pool |
De naam van de sessiegroep. |
--resource-group |
my-resource-group |
De resourcegroep die de sessiegroep bevat. |
--environment |
my-environment |
De naam of resource-id van de omgeving van de container-app. |
--container-type |
CustomContainer |
Het containertype van de sessiegroep. Moet voor aangepaste containersessies zijn CustomContainer . |
--image |
myregistry.azurecr.io/my-container-image:1.0 |
De containerinstallatiekopieën die moeten worden gebruikt voor de sessiegroep. |
--registry-server |
myregistry.azurecr.io |
De hostnaam van de containerregisterserver. |
--registry-username |
my-username |
De gebruikersnaam om u aan te melden bij het containerregister. |
--registry-password |
my-password |
Het wachtwoord om u aan te melden bij het containerregister. |
--cpu |
0.25 |
De vereiste CPU in kernen. |
--memory |
0.5Gi |
Het vereiste geheugen. |
--target-port |
80 |
De sessiepoort die wordt gebruikt voor inkomend verkeer. |
--cooldown-period |
300 |
Het aantal seconden dat een sessie inactief kan zijn voordat de sessie wordt beëindigd. De niet-actieve periode wordt opnieuw ingesteld telkens wanneer de API van de sessie wordt aangeroepen. De waarde moet tussen 300 en 3600 . |
--network-status |
Hiermee wordt aangegeven of uitgaand netwerkverkeer vanaf de sessie is toegestaan. Geldige waarden zijn EgressDisabled (standaard) en EgressEnabled . |
|
--max-sessions |
10 |
Het maximum aantal sessies dat tegelijkertijd kan worden toegewezen. |
--ready-sessions |
5 |
Het doelaantal sessies dat altijd gereed is in de sessiegroep. Verhoog dit aantal als sessies sneller worden toegewezen dan de pool wordt aangevuld. |
--env-vars |
"key1=value1" "key2=value2" |
De omgevingsvariabelen die moeten worden ingesteld in de container. |
--location |
"Supported Location" |
De locatie van de sessiegroep. |
Gebruik de az containerapp sessionpool show
opdracht om de status van de sessiegroep te controleren:
az containerapp sessionpool show \
--name <SESSION_POOL_NAME> \
--resource-group <RESOURCE_GROUP> \
--query "properties.poolManagementEndpoint" \
--output tsv
Gebruik de opdracht om de sessiegroep bij te az containerapp sessionpool update
werken.
Belangrijk
Als de sessie wordt gebruikt om niet-vertrouwde code uit te voeren, neemt u geen informatie of gegevens op die u niet wilt dat de niet-vertrouwde code toegang heeft. Stel dat de code schadelijk is en volledige toegang heeft tot de container, inclusief de omgevingsvariabelen, geheimen en bestanden.
Afbeeldingscache
Wanneer een sessiegroep wordt gemaakt of bijgewerkt, slaat Azure Container Apps de containerinstallatiekopieën in de pool op. Deze caching helpt het proces van het maken van nieuwe sessies te versnellen.
Wijzigingen in de afbeelding worden niet automatisch doorgevoerd in de sessies. Als u de installatiekopieën wilt bijwerken, werkt u de sessiegroep bij met een nieuwe installatiekopieëntag. Gebruik een unieke tag voor elke update van de installatiekopie om ervoor te zorgen dat de nieuwe installatiekopie wordt opgehaald.
Werken met sessies
Uw toepassing communiceert met een sessie met behulp van de beheer-API van de sessiegroep.
Een beheereindpunt voor pools voor aangepaste containersessies volgt deze indeling: https://<SESSION_POOL>.<ENVIRONMENT_ID>.<REGION>.azurecontainerapps.io
.
Gebruik de az containerapp sessionpool show
opdracht om het beheereindpunt van de sessiegroep op te halen:
az containerapp sessionpool show \
--name <SESSION_POOL_NAME> \
--resource-group <RESOURCE_GROUP> \
--query "properties.poolManagementEndpoint" \
--output tsv
Alle aanvragen voor het eindpunt voor poolbeheer moeten een Authorization
header met een Bearer-token bevatten. Zie Verificatie voor meer informatie over verificatie met de poolbeheer-API.
Elke API-aanvraag moet ook de queryreeksparameter identifier
met de sessie-id bevatten. Met deze unieke sessie-id kan uw toepassing communiceren met specifieke sessies. Zie Sessie-id's voor meer informatie over sessie-id's.
Belangrijk
De sessie-id is gevoelige informatie die een veilig proces vereist tijdens het maken en beheren van de waarde. Om deze waarde te beveiligen, moet uw toepassing ervoor zorgen dat elke gebruiker of tenant alleen toegang heeft tot hun eigen sessies. Als u de toegang tot sessies niet kunt beveiligen, kan dit leiden tot misbruik of onbevoegde toegang tot gegevens die zijn opgeslagen in de sessies van uw gebruikers. Zie Sessie-id's voor meer informatie
Aanvragen doorsturen naar de container van de sessie:
Alles in het pad na het eindpunt van het basisgroepbeheer wordt doorgestuurd naar de container van de sessie.
Als u bijvoorbeeld een aanroep doet <POOL_MANAGEMENT_ENDPOINT>/api/uploadfile
, wordt de aanvraag doorgestuurd naar de container van de sessie op 0.0.0.0:<TARGET_PORT>/api/uploadfile
.
Interactie met continue sessie:
U kunt aanvragen blijven indienen bij dezelfde sessie. Als er geen aanvragen voor de sessie langer zijn dan de afkoelperiode, wordt de sessie automatisch verwijderd.
Voorbeeldaanvraag
In het volgende voorbeeld ziet u een aanvraag voor een aangepaste containersessie met een gebruikers-id.
Voordat u de aanvraag verzendt, vervangt u de tijdelijke aanduidingen tussen de <>
vierkante haken door waarden die specifiek zijn voor uw aanvraag.
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!'"
}
Deze aanvraag wordt doorgestuurd naar de aangepaste containersessie met de id voor de gebruikers-id. Als de sessie nog niet wordt uitgevoerd, wijst Azure Container Apps een sessie toe vanuit de pool voordat de aanvraag wordt doorgestuurd.
In het voorbeeld ontvangt de container van de sessie de aanvraag op http://0.0.0.0:<INGRESS_PORT>/<API_PATH_EXPOSED_BY_CONTAINER>
.
Beheerde identiteit gebruiken
Met een beheerde identiteit van Microsoft Entra ID kunnen uw aangepaste containersessiegroepen en hun sessies toegang krijgen tot andere met Microsoft Entra beveiligde resources. Zie Beheerde identiteiten voor Azure-resources voor meer informatie over beheerde identiteiten in Microsoft Entra ID.
U kunt beheerde identiteiten inschakelen voor uw aangepaste containersessiegroepen. Zowel door het systeem toegewezen als door de gebruiker toegewezen beheerde identiteiten worden ondersteund.
Er zijn twee manieren om beheerde identiteiten te gebruiken met aangepaste containersessiegroepen:
Pull-verificatie van installatiekopie: gebruik de beheerde identiteit om te verifiëren met het containerregister om de containerinstallatiekopie op te halen.
Toegang tot resources: gebruik de beheerde identiteit van de sessiegroep in een sessie voor toegang tot andere met Microsoft Entra beveiligde resources. Vanwege de gevolgen voor de beveiliging is deze functie standaard uitgeschakeld.
Belangrijk
Als u toegang tot beheerde identiteit in een sessie inschakelt, kunnen code of programma's die in de sessie worden uitgevoerd Entra-tokens maken voor de beheerde identiteit van de pool. Aangezien sessies doorgaans niet-vertrouwde code uitvoeren, gebruikt u deze functie met voorzichtigheid.
Als u beheerde identiteit wilt inschakelen voor een aangepaste containersessiegroep, gebruikt u Azure Resource Manager.
Logboekregistratie
Consolelogboeken van aangepaste containersessies zijn beschikbaar in de Azure Log Analytics-werkruimte die is gekoppeld aan de Azure Container Apps-omgeving in een tabel met de naam AppEnvSessionConsoleLogs_CL
.
Billing
Aangepaste containersessies worden gefactureerd op basis van de resources die door de sessiegroep worden gebruikt. Zie Azure Container Apps-facturering voor meer informatie.