Munkamenet-készletek használata az Azure Container Apps-ben

A munkamenetkészletek részszekundumos munkamenet-foglalási időt biztosítanak, és kezelik az egyes munkamenetek életciklusát.

Mindkét halmaz közös fogalmai

A készlet létrehozásának folyamata kissé eltér attól függően, hogy kódértelmezési munkamenetkészletet vagy egyéni tárolókészletet hoz létre. Az alábbi fogalmak mindkét fogalomra vonatkoznak.

Ha munkamenetkészleteket szeretne létrehozni a Azure CLI használatával, győződjön meg arról, hogy a Azure CLI és a Azure Container Apps bővítmény legújabb verzióival rendelkezik:

# Upgrade the Azure CLI
az upgrade

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

Gyakori munkamenet-készlet parancsok:

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

Bármely --help paranccsal megtekintheti az elérhető argumentumokat és a támogatott értékeket.

A munkamenetkészlet állapotának ellenőrzéséhez használja a az containerapp sessionpool show következő parancsot:

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

Készlet létrehozásakor vagy frissítésekor megadhatja az egyidejű munkamenetek maximális számát, az inaktív leállási időszakot, valamint azt, hogy a kimenő hálózati forgalom engedélyezve van-e a munkamenetekhez.

Fontos

Ha engedélyezi a kimenő forgalmat, a munkamenetben futó kód hozzáférhet az internethez. Körültekintően járjon el, ha a kód nem megbízható, mert rosszindulatú tevékenységek, például szolgáltatásmegtagadásos támadások végrehajtására használható.

Fontos

Ha a munkamenet nem megbízható kód futtatására szolgál, ne tartalmazzon olyan adatokat vagy adatokat, amelyekhez nem szeretné, hogy a nem megbízható kód hozzáférjen. Tegyük fel, hogy a kód rosszindulatú, és teljes hozzáféréssel rendelkezik a tárolóhoz, beleértve a környezeti változókat, titkos kulcsokat és fájlokat.

Készlet konfigurálása

A az containerapp sessionpool create --help segítségével megtekintheti a session pool konfigurálásának legújabb parancssori argumentumait. Ez a szakasz az API-verziókra vonatkozó speciális konfigurációs beállításokra összpontosít.

Munkamenet-életciklus konfigurálása

Munkamenetkészlet létrehozásakor vagy frissítésekor a munkamenetek leállításának módját a beállítással properties.dynamicPoolConfiguration.lifecycleConfigurationkonfigurálhatja. Az API-verziótól 2025-01-01kezdve válasszon két életciklus-típus egyikét.

A teljes API-specifikációért tekintse meg a SessionPools API specifikációját.

Időzített (alapértelmezett)

Az életciklus során egy Timed munkamenet egy inaktivitási időszak után törlődik. Bármely lekérdezés, amelyet egy munkamenethez küldenek, újraindítja a várakozási időzítőt, ezáltal meghosszabbítva a munkamenet élettartamát cooldownPeriodInSeconds.

Megjegyzés:

Timed minden munkamenetkészlet-típus támogatott, és ugyanúgy működik, mint executionType: Timed a korábbi API-verziókban.

{
  "dynamicPoolConfiguration": {
    "lifecycleConfiguration": {
      "cooldownPeriodInSeconds": 600,
      "lifecycleType": "Timed"
    }
  }
}
Ingatlan Description
cooldownPeriodInSeconds A munkamenet akkor törlődik, ha erre az időtartamra nem érkezett kérés.
maxAlivePeriodInSeconds Nem támogatott az Timed életciklus számára.

Felügyeleti végpont

Fontos

A munkamenet-azonosító bizalmas információ, amely biztonságos folyamatot igényel az érték létrehozása és kezelése során. Az érték védelme érdekében az alkalmazásnak biztosítania kell, hogy minden felhasználó vagy bérlő csak a saját munkameneteihez férhessen hozzá.

A munkamenetekhez való hozzáférés biztonságossá tételének elmulasztása a felhasználói munkamenetekben tárolt adatokkal való visszaélést vagy jogosulatlan hozzáférést eredményezhet. További információ: Munkamenet-azonosítók

A készletkezelési végpontra irányuló összes kérésnek tartalmaznia kell egy Authorization tulajdonosi jogkivonattal rendelkező fejlécet. A készletkezelési API-val való hitelesítésről a Hitelesítés című témakörben olvashat.

A legtöbb API-kéréshez szükség van a munkamenet-azonosítóval rendelkező lekérdezési sztring paraméterre identifier is. Ez az egyedi munkamenet-azonosító lehetővé teszi az alkalmazás számára az adott munkamenetek kezelését. Az olyan halmazszintű műveletek, mint a munkamenetek listázása, nem igényelnek azonosítót. A munkamenet-azonosítókkal kapcsolatos további információkért lásd a munkamenet-azonosítókat.

Kép gyorsítótárazása

Amikor létrehoz vagy frissít egy munkamenet-medencét, az Azure Container Apps gyorsítótárazza a konténerképet a medencében. Ez a gyorsítótárazás felgyorsítja az új munkamenetek létrehozásának folyamatát.

A képen végzett módosítások nem tükröződnek automatikusan a munkamenetekben. A kép frissítéséhez frissítse a munkamenet-készletet egy új képcímkével. Minden képfrissítéshez használjon egyedi címkét, hogy az új kép be legyen töltve.

Kódértelmező munkamenetkészlete

A készlet létrehozásához használja a az containerapps sessionpool create parancsot. Az alábbi példa létrehoz egy Python kódértelmező munkamenetkészletet my-session-pool néven. A parancs futtatása előtt mindenképpen cserélje le <RESOURCE_GROUP> az erőforráscsoport nevét.

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

Munkamenetkészlet létrehozásakor a következő beállításokat határozhatja meg:

Setting Description
--container-type A használni kívánt kódértelmező típusa. A támogatott értékek a következők: PythonLTS, NodeLTS, Shellés CustomContainer.
--max-sessions Az egyidejűleg engedélyezett lefoglalt munkamenetek maximális száma. A maximális érték az 600.
--cooldown-period Az engedélyezett tétlen másodpercek száma a befejezés előtt. A tétlenségi időszak minden alkalommal visszaállításra kerül, amikor a munkamenet API hívás történik. Az engedélyezett tartomány 300 és 3600 között van.
--network-status Megadja, hogy engedélyezett-e a kimenő hálózati forgalom a munkamenetből. Az érvényes értékek az (alapértelmezett) és a EgressDisabledEgressEnabled.

Kódértelmező felügyeleti végpontja

A kódértelmező-munkamenetek LLM-keretrendszer-integrációkkal való használatához vagy a felügyeleti API-végpontok közvetlen meghívásához szüksége van a készlet felügyeleti API-végpontjára.

A végpont formátuma https://<REGION>.dynamicsessions.io/subscriptions/<SUBSCRIPTION_ID>/resourceGroups/<RESOURCE_GROUP>/sessionPools/<SESSION_POOL_NAME>.

A munkamenetkészlet felügyeleti API-végpontjának lekéréséhez tekintse meg a fenti gyakori szakaszt egy példaparancshoz.

A következő végpontok érhetők el egy készlet munkameneteinek kezeléséhez:

Végpont elérési útja Metódus Description
code/execute POST Kód végrehajtása munkamenetben.
files/upload POST Fájl feltöltése munkamenetbe.
files/content/{filename} GET Fájl letöltése munkamenetből.
files GET A munkamenetben lévő fájlok listázása.
session GET Egy adott munkamenet részleteinek lekérése.
listSessions GET A készletben lévő összes munkamenet listázása lapszámozással.
session DELETE Munkamenet leállása és törlése.

Az egyes végpontok teljes URL-címét úgy hozhatja létre, hogy összefűzi a készlet felügyeleti API-végpontját a végpont elérési útjával. A lekérdezési sztringnek tartalmaznia kell egy identifier , a munkamenet-azonosítót tartalmazó paramétert és egy api-version értéket 2024-02-02-previewtartalmazó paramétert. Az API-verziók változhatnak, ezért az éles használat előtt mindig ellenőrizze a REST API-dokumentumok legújabb verzióját.

Például: {sessionManagementEndpoint}/code/execute?api-version=2024-02-02-preview&identifier=<IDENTIFIER>

Az , get session és delete session API-k esetében lásd: list sessionsMunkamenetadatok lekérése a kérések és a válaszok részleteihez.

A REST API-referenciákért tekintse meg a Container Apps adatsík API-jait és a Container Apps adatsík-műveleteinek áttekintését.

Egyéni tároló munkamenetkészlete

Egyéni tároló-munkamenetkészlet létrehozásához meg kell adnia egy tárolórendszerképet és a készlet konfigurációs beállításait.

Minden munkamenetet HTTP-kérésekkel hívhat meg vagy kommunikálhat. Az egyéni tárolónak közzé kell tennie egy HTTP-kiszolgálót egy megadott porton, hogy válaszoljon ezekre a kérésekre.

Az alábbi képességek csak az egyéni tároló-munkamenetkészletekre vonatkoznak.

Egyéni tárolókezelési végpont

Egyéni tároló-munkamenetkészletek esetén kérje le a felügyeleti végpontot a Azure portálról vagy a Azure CLI kimenetből. A végpont a következőként lesz visszaadva poolManagementEndpoint: .

A végpont formátuma https://<SESSION_POOL_NAME>.<ENVIRONMENT_ID>.<REGION>.azurecontainerapps.io.

Az egyéni tárolókészletek ugyanazokat a felügyeleti végpontokat támogatják, mint a kódértelmező-készletek, valamint az Ön által definiált egyéni alkalmazásvégpontokat:

Végpont elérési útja Metódus Description
* (egyéni elérési utak) POST, GET A tárolóalkalmazás által definiált egyéni végpontok.
.management/getSession POST Egy adott munkamenet részleteinek lekérése.
.management/listSessions POST A készletben lévő összes munkamenet listázása lapszámozással.
.management/stopSession POST Munkamenet megszüntetése.

A , getSession és stopSession végpontok esetében lásd: listSessionsMunkamenetadatok lekérése a kérések és a válaszok részleteihez.

OnContainerKilépés

Az életciklus során a OnContainerExit munkamenet addig aktív marad, amíg a tároló önállóan nem lép ki, vagy eléri a maximális élettartamot.

{
  "dynamicPoolConfiguration": {
    "lifecycleConfiguration": {
      "maxAlivePeriodInSeconds": 6000,
      "lifecycleType": "OnContainerExit"
    }
  }
}
Ingatlan Description
maxAlivePeriodInSeconds A munkamenet maximális időtartama a törlés előtt életben maradhat.
cooldownPeriodInSeconds Nem támogatott az OnContainerExit életciklus számára.

Tároló mintavételei

A konténerszondák lehetővé teszik a munkamenet-tárolók állapotának ellenőrzését, hogy a készlet észlelhesse a nem megfelelő munkameneteket, és lecserélhesse őket a célállapot egészségének readySessionInstances megőrzése érdekében.

A munkamenetkészletek támogatják a Liveness és Startup próbákat. A mintavétel működésével kapcsolatos további információkért lásd: Egészségügyi mintavételek Azure Container Apps.

Munkamenetkészlet létrehozásakor vagy frissítésekor adja meg a mintavételeket a következőben properties.customContainerTemplate.containers: . A teljes kérelem törzsséma a SessionPools Create or Update API-referenciában található. Az alábbi példa egy részleges konfigurációt mutat be mintavételdefiníciókkal:

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

Az egyéni tároló-munkamenetkészletekhez számítási feladatprofil-kompatibilis Azure Container Apps környezet szükséges. Ha nincs környezete, hozzon létre egyet a az containerapp env create -n <ENVIRONMENT_NAME> -g <RESOURCE_GROUP> --location <LOCATION> parancs segítségével.

A az containerapp sessionpool create parancs használatával hozzon létre egy egyéni tárolói munkamenetkészletet.

Az alábbi példa létrehoz egy my-session-pool elnevezésű munkamenetkészletet egy egyéni myregistry.azurecr.io/my-container-image:1.0 konténerképpel.

A kérés elküldése előtt cserélje le a zárójelek közötti <> helyőrzőket a munkamenetkészlet és a munkamenet-azonosító megfelelő értékeire.

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>

Ez a parancs létrehoz egy munkamenetkészletet a következő beállításokkal:

Paraméter Érték Description
--name my-session-pool A munkamenet-készlet neve.
--resource-group my-resource-group A munkamenetkészletet tartalmazó erőforráscsoport.
--environment my-environment A tárolóalkalmazás környezetének neve vagy erőforrás-azonosítója.
--container-type CustomContainer A munkamenetkészlet tárolótípusa. Egyéni tároló munkamenetekhez kell lennie CustomContainer .
--image myregistry.azurecr.io/my-container-image:1.0 A munkamenet poolhoz használandó konténerkép.
--registry-server myregistry.azurecr.io A tárolóregisztrációs szerver állomásneve.
--registry-username my-username A tárolóregisztrációs adatbázisba való bejelentkezéshez használt felhasználónév.
--registry-password my-password A tárolóregisztrációs adatbázisba való bejelentkezéshez szükséges jelszó.
--cpu 0.25 A szükséges processzor magok száma.
--memory 0.5Gi A szükséges memória.
--target-port 80 A bejövő forgalomhoz használt munkamenet-port.
--cooldown-period 300 A munkamenet leállítása előtt eltelt másodpercek száma, amíg a munkamenet inaktív lehet. A tétlenségi időszak minden alkalommal visszaállításra kerül, amikor a munkamenet API hívás történik. Az értéknek 300 és 3600 között kell lennie.
--network-status EgressDisabled Megadja, hogy engedélyezett-e a kimenő hálózati forgalom a munkamenetből. Az érvényes értékek az (alapértelmezett) és a EgressDisabledEgressEnabled.
--max-sessions 10 Az egyidejűleg kijelölhető munkamenetek maximális száma.
--ready-sessions 5 A munkamenetkészletben folyamatosan készen álló munkamenetek célszáma. Növelje ezt a számot, ha a munkamenetek gyorsabban vannak lefoglalva, mint a készlet feltöltése.
--env-vars "key1=value1" "key2=value2" A tárolóban beállítandó környezeti változók.
--location "Supported Location" A munkamenetkészlet helye.

A munkamenetkészlet frissítéséhez használja a az containerapp sessionpool update parancsot.