Delen via


Sessiegroepen gebruiken in Azure Container Apps

Sessie pools bieden subseconde sessietoewijzingstijden en beheren de levenscyclus van elke sessie.

Algemene concepten voor beide pools

Het proces voor het maken van een pool verschilt enigszins, afhankelijk van of u een code-interpretersessiegroep of een aangepaste containergroep maakt. De volgende concepten zijn van toepassing op beide.

Als u sessiegroepen 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:

# Upgrade the Azure CLI
az upgrade

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

Algemene opdrachten voor sessiepools zijn onder andere:

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

Gebruik --help met elke opdracht om beschikbare argumenten en ondersteunde waarden te bekijken.

Gebruik de az containerapp sessionpool show opdracht om de status van een sessiegroep te controleren:

az containerapp sessionpool show \
    --name <SESSION_POOL_NAME> \
    --resource-group <RESOURCE_GROUP> \
    --query "properties.poolManagementEndpoint" \
    --output tsv

Wanneer u een pool maakt of bijwerkt, kunt u een maximum aantal gelijktijdige sessies, een niet-actieve cooldownperiode instellen en of uitgaand netwerkverkeer is toegestaan voor sessies.

Belangrijk

Als u uitgaande verbindingen inschakelt, heeft code die in de sessie wordt uitgevoerd toegang tot internet. Wees voorzichtig wanneer de code niet wordt vertrouwd omdat deze kan worden gebruikt voor het uitvoeren van schadelijke activiteiten, zoals Denial of Service-aanvallen.

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.

Een pool configureren

Gebruik az containerapp sessionpool create --help deze functie om de meest recente CLI-argumenten voor de configuratie van sessiegroepen weer te geven. Deze sectie is gericht op geavanceerde configuratieopties die van toepassing zijn op API-versies.

Configuratie van de levenscyclus van sessies

Wanneer u een sessiegroep maakt of bijwerkt, kunt u configureren hoe sessies worden beëindigd door de instelling in te stellen properties.dynamicPoolConfiguration.lifecycleConfiguration. Kies een van de twee levenscyclustypen die beginnen met de API-versie 2025-01-01.

Zie de specificatie van de SessionPools-API voor de volledige API.

Getimed (standaard)

Met de Timed levenscyclus wordt een sessie verwijderd na een periode van inactiviteit. Elke aanvraag die naar een sessie wordt verzonden, stelt de afkoeltimer opnieuw in, waardoor de time-to-live van de sessie wordt uitgebreid.cooldownPeriodInSeconds

Opmerking

Timed wordt ondersteund voor alle typen sessiegroepen en werkt hetzelfde als executionType: Timed in eerdere API-versies.

{
  "dynamicPoolConfiguration": {
    "lifecycleConfiguration": {
      "cooldownPeriodInSeconds": 600,
      "lifecycleType": "Timed"
    }
  }
}
Vastgoed Description
cooldownPeriodInSeconds De sessie wordt verwijderd wanneer er voor deze duur geen aanvragen zijn.
maxAlivePeriodInSeconds Niet ondersteund voor Timed levenscyclus.

Beheereindpunt

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

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.

Afbeeldingscache

Wanneer een sessiepool wordt gemaakt of bijgewerkt, cachet Azure Container Apps de containerafbeeldingen in de pool. Deze caching helpt het proces van het maken van nieuwe sessies te versnellen.

Eventuele wijzigingen in de afbeelding worden niet automatisch doorgevoerd in de sessies. Werk de afbeelding bij door de sessiegroep bij te werken met een nieuwe afbeeldingstag. Gebruik een unieke tag voor elke afbeeldingupdate om ervoor te zorgen dat de nieuwe afbeelding wordt geüpload.

Code-interpreter sessiepool

Gebruik de az containerapps sessionpool create opdracht om de pool te maken. In het volgende voorbeeld wordt een python-code-interpretersessiegroep gemaakt met de naam my-session-pool. Zorg ervoor dat je <RESOURCE_GROUP> vervangt door de naam van een resourcegroep voordat je de opdracht uitvoert.

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

U kunt de volgende instellingen definiëren wanneer u een sessiegroep maakt:

Configuratie Description
--container-type Het type code-interpreter dat moet worden gebruikt. Ondersteunde waarden zijn onder andere PythonLTS, NodeLTS, Shellen CustomContainer.
--max-sessions Het maximum aantal toegewezen sessies dat gelijktijdig is toegestaan. De maximumwaarde is 600.
--cooldown-period Het aantal toegestane seconden voor inactiviteit vóór beëindiging. De niet-actieve periode wordt opnieuw ingesteld telkens wanneer de API van de sessie wordt aangeroepen. Het toegestane bereik ligt tussen 300 en 3600.
--network-status Hiermee geeft u op of uitgaand netwerkverkeer is toegestaan vanuit de sessie. Geldige waarden zijn EgressDisabled (standaard) en EgressEnabled.

Beheereindpunt van code-interpreter

Als u code-interpretersessies wilt gebruiken met LLM-frameworkintegraties of door de beheer-API-eindpunten rechtstreeks aan te roepen, hebt u het beheer-API-eindpunt van de pool nodig.

Het eindpunt heeft de indeling https://<REGION>.dynamicsessions.io/subscriptions/<SUBSCRIPTION_ID>/resourceGroups/<RESOURCE_GROUP>/sessionPools/<SESSION_POOL_NAME>.

Als u het beheer-API-eindpunt voor een sessiegroep wilt ophalen, raadpleegt u de algemene sectie hierboven voor een voorbeeldopdracht.

De volgende eindpunten zijn beschikbaar voor het beheren van sessies in een pool:

Pad naar eindpunt Methode Description
code/execute POST Voer code uit in een sessie.
files/upload POST Upload een bestand naar een sessie.
files/content/{filename} GET Een bestand downloaden van een sessie.
files GET De bestanden in een sessie weergeven.

U bouwt de volledige URL voor elk eindpunt door het beheer-API-eindpunt van de pool samen te voegen met het eindpuntpad. De queryreeks moet een identifier parameter bevatten die de sessie-id bevat en een api-version parameter met de waarde 2024-02-02-preview. API-versies kunnen worden gewijzigd, dus bevestig altijd de nieuwste versie in de REST API-documenten voordat u deze in productie gebruikt.

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

Zie Voor REST API-verwijzingen Container Apps-gegevensvlak-API's en het overzicht van bewerkingen op het gegevensvlak van Container Apps.

Aangepaste containersessiegroep

Om een aangepaste containersessiepool te maken, moet u een containerimage en de 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.

De volgende mogelijkheden zijn alleen van toepassing op aangepaste containersessiegroepen.

Eindpunt voor aangepast containerbeheer

Voor aangepaste containersessiegroepen haalt u het beheereindpunt op uit de Azure-portal of de Azure CLI-uitvoer. Het eindpunt wordt geretourneerd als poolManagementEndpoint.

Het eindpunt heeft de indeling https://<SESSION_POOL_NAME>.<ENVIRONMENT_ID>.<REGION>.azurecontainerapps.io.

OnContainerExit

Met de OnContainerExit levenscyclus blijft een sessie actief totdat de container zelfstandig wordt afgesloten of de maximale levensduur is bereikt.

{
  "dynamicPoolConfiguration": {
    "lifecycleConfiguration": {
      "maxAlivePeriodInSeconds": 6000,
      "lifecycleType": "OnContainerExit"
    }
  }
}
Vastgoed Description
maxAlivePeriodInSeconds Maximale tijd dat de sessie actief blijft voordat deze wordt verwijderd.
cooldownPeriodInSeconds Niet ondersteund voor levenscyclus OnContainerExit.

Containerprobes

Met containerprobes kunt u gezondheidscontroles definiëren voor sessiecontainers, zodat de pool beschadigde sessies kan detecteren en deze kan vervangen om het readySessionInstances doel gezond te houden.

Sessiegroepen ondersteunen Livenesstests en opstarttests. Zie Gezondheidspolls in Azure Container Apps voor meer informatie over probegedrag.

Wanneer u een sessiepool maakt of bijwerkt, specificeer u probes in properties.customContainerTemplate.containers. Zie voor het volledige schema voor de requestbody de API-referentie SessionPools maken of bijwerken. In het volgende voorbeeld ziet u een gedeeltelijke configuratie met testdefinities:

{
  "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
    }
  }
}

Voor aangepaste containersessiegroepen is een Azure Container Apps-omgeving met workloadprofielen vereist. Als u geen omgeving hebt, gebruikt u de az containerapp env create -n <ENVIRONMENT_NAME> -g <RESOURCE_GROUP> --location <LOCATION> 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 sessiepool met de naam my-session-pool gemaakt met een aangepaste containerimage 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:

Kenmerk Waarde Description
--name my-session-pool De naam van de sessiegroep.
--resource-group my-resource-group De resourcegroep die de sessiepool bevat.
--environment my-environment De naam of resource-id van de omgeving van de containerapp.
--container-type CustomContainer Het containertype van de sessiepool. Moet CustomContainer zijn voor aangepaste containersessies.
--image myregistry.azurecr.io/my-container-image:1.0 De containerimage die moet worden gebruikt voor de session pool.
--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 Het vereiste aantal CPU-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 EgressDisabled Hiermee geeft u op of uitgaand netwerkverkeer is toegestaan vanuit de sessie. 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 die altijd beschikbaar zijn in de sessiepool. 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 sessiepool.

Gebruik het az containerapp sessionpool update commando om de sessiecluster bij te werken.