Delen via


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.

Volgende stappen