Környezeti változók beállítása tárolópéldányokban

A tárolópéldányok környezeti változóinak beállítása lehetővé teszi a tárolóban futó alkalmazás vagy szkript dinamikus konfigurálását. Ez hasonló a --env parancssori argumentumhoz a következőhöz: docker run.

Ha környezeti változókat szeretne beállítani egy tárolóban, adja meg őket egy tárolópéldány létrehozásakor. Ez a cikk példákat mutat be a környezeti változók beállítására, amikor egy tárolót az Azure CLI-vel, Azure PowerShell és a Azure Portal indít el.

Ha például a Microsoft aci-wordcount tárolórendszerképét futtatja, a viselkedését a következő környezeti változók megadásával módosíthatja:

NumWords: Az STDOUT-nak küldött szavak száma.

MinLength: A szavakban szereplő karakterek számának minimális száma. A nagyobb szám figyelmen kívül hagyja az olyan gyakori szavakat, mint az "of" és a "the".

Ha környezeti változóként kell titkos kulcsokat átadnia, Azure Container Instances támogatja a windowsos és a Linux-tárolók biztonságos értékeit is.

Megjegyzés

Javasoljuk, hogy az Azure Az PowerShell-modult használja az Azure-ral való kommunikációhoz. Az első lépésekhez tekintse meg az Azure PowerShell telepítését ismertető szakaszt. Az Az PowerShell-modulra történő migrálás részleteiről lásd: Az Azure PowerShell migrálása az AzureRM modulból az Az modulba.

Azure CLI-példa

Az aci-wordcount tároló alapértelmezett kimenetének megtekintéséhez először futtassa az az container create paranccsal (nincs megadva környezeti változó):

az container create \
    --resource-group myResourceGroup \
    --name mycontainer1 \
    --image mcr.microsoft.com/azuredocs/aci-wordcount:latest \
    --restart-policy OnFailure

A kimenet módosításához indítsa el a második tárolót a --environment-variables hozzáadott argumentummal, és adja meg a NumWords és a MinLength változók értékeit. (Ez a példa feltételezi, hogy a parancssori felületet Bash-rendszerhéjban vagy Azure Cloud Shell futtatja. Ha a Windows parancssorát használja, adja meg a változókat dupla idézőjelekkel, például --environment-variables "NumWords"="5" "MinLength"="8".)

az container create \
    --resource-group myResourceGroup \
    --name mycontainer2 \
    --image mcr.microsoft.com/azuredocs/aci-wordcount:latest \
    --restart-policy OnFailure \
    --environment-variables 'NumWords'='5' 'MinLength'='8'

Ha mindkét tároló állapota Leállítva állapotúként jelenik meg (az az container show használatával ellenőrizze az állapotot), a kimenet megtekintéséhez az az container logs (az container logs ) állapotban jelenítse meg a naplókat.

az container logs --resource-group myResourceGroup --name mycontainer1
az container logs --resource-group myResourceGroup --name mycontainer2

A tárolók kimenetei bemutatják, hogyan módosította a második tároló szkriptjének viselkedését a környezeti változók beállításával.

mycontainer1

[('the', 990),
 ('and', 702),
 ('of', 628),
 ('to', 610),
 ('I', 544),
 ('you', 495),
 ('a', 453),
 ('my', 441),
 ('in', 399),
 ('HAMLET', 386)]

mycontainer2

[('CLAUDIUS', 120),
 ('POLONIUS', 113),
 ('GERTRUDE', 82),
 ('ROSENCRANTZ', 69),
 ('GUILDENSTERN', 54)]

Azure PowerShell példa

A Környezeti változók beállítása a PowerShellben hasonló a parancssori felülethez, de a parancssori -EnvironmentVariable argumentumot használja.

Először indítsa el az aci-wordcount tárolót az alapértelmezett konfigurációban ezzel a New-AzContainerGroup paranccsal:

New-AzContainerGroup `
    -ResourceGroupName myResourceGroup `
    -Name mycontainer1 `
    -Image mcr.microsoft.com/azuredocs/aci-wordcount:latest

Most futtassa a következő New-AzContainerGroup parancsot. Ez megadja a NumWords és a MinLength környezeti változókat egy tömbváltozó feltöltése után: envVars

$envVars = @(
    New-AzContainerInstanceEnvironmentVariableObject -Name "NumWords" -Value "5"
    New-AzContainerInstanceEnvironmentVariableObject -Name "MinLength" -Value "8"
)

$containerGroup = New-AzContainerGroup -ResourceGroupName "myResourceGroup" `
    -Name "mycontainer2" `
    -Image "mcr.microsoft.com/azuredocs/aci-wordcount:latest" `
    -RestartPolicy "OnFailure" `
    -Container @(
        New-AzContainerGroupContainer -Name "mycontainer2" `
            -EnvironmentVariable $envVars
    )

Ha mindkét tároló állapota leállt (az állapot ellenőrzéséhez használja a Get-AzContainerInstanceLog parancsot), kérje le a naplókat a Get-AzContainerInstanceLog paranccsal.

Get-AzContainerInstanceLog -ResourceGroupName myResourceGroup -ContainerGroupName mycontainer1
Get-AzContainerInstanceLog -ResourceGroupName myResourceGroup -ContainerGroupName mycontainer2

Az egyes tárolók kimenete bemutatja, hogyan módosította a tároló által futtatott szkriptet környezeti változók beállításával.

PS Azure:\> Get-AzContainerInstanceLog -ResourceGroupName myResourceGroup -ContainerGroupName mycontainer1
[('the', 990),
 ('and', 702),
 ('of', 628),
 ('to', 610),
 ('I', 544),
 ('you', 495),
 ('a', 453),
 ('my', 441),
 ('in', 399),
 ('HAMLET', 386)]

Azure:\
PS Azure:\> Get-AzContainerInstanceLog -ResourceGroupName myResourceGroup -ContainerGroupName mycontainer2
[('CLAUDIUS', 120),
 ('POLONIUS', 113),
 ('GERTRUDE', 82),
 ('ROSENCRANTZ', 69),
 ('GUILDENSTERN', 54)]

Azure:\

Azure Portal példa

Ha környezeti változókat szeretne beállítani, amikor elindít egy tárolót a Azure Portal, adja meg őket a Speciális lapon a tároló létrehozásakor.

  1. A Speciális lapon állítsa az Újraindítási szabályzatotSikertelenre
  2. A Környezeti változók területen adja meg NumWords az első változó értékét 5 , majd adja meg MinLength a második változó értékét 8 .
  3. Válassza a Felülvizsgálat + létrehozás lehetőséget a tároló ellenőrzéséhez és üzembe helyezéséhez.

Portállap az Enable (Engedélyezés) környezeti változóval és szövegdobozokkal

A tároló naplóinak megtekintéséhez a Beállítások területen válassza a Tárolók, majd a Naplók lehetőséget. Az előző CLI- és PowerShell-szakaszokban látható kimenethez hasonlóan láthatja, hogyan módosították a szkript viselkedését a környezeti változók. Csak öt szó jelenik meg, amelyek mindegyike legalább nyolc karakter hosszúságú.

A tárolónapló kimenetét megjelenítő portál

Biztonságos értékek

A biztonságos értékekkel rendelkező objektumok bizalmas információkat, például jelszavakat vagy kulcsokat tárolnak az alkalmazáshoz. A környezeti változók biztonságos értékeinek használata biztonságosabb és rugalmasabb, mint a tároló lemezképében. Egy másik lehetőség a titkos kötetek használata, amely a Titkos kötet csatlakoztatása Azure Container Instances című cikkben található.

A biztonságos értékeket tartalmazó környezeti változók nem láthatók a tároló tulajdonságaiban – az értékeik csak a tárolóból érhetők el. A Azure Portal vagy az Azure CLI-ben megtekintett tárolótulajdonságok például csak egy biztonságos változó nevét jelenítik meg, az értékét nem.

Állítson be egy biztonságos környezeti változót úgy, hogy a secureValue tulajdonságot adja meg a változó típusának normál value értéke helyett. Az alábbi YAML-ben definiált két változó a két változótípust mutatja be.

YAML-üzembe helyezés

Hozzon létre egy secure-env.yaml fájlt az alábbi kódrészlettel.

apiVersion: 2019-12-01
location: eastus
name: securetest
properties:
  containers:
  - name: mycontainer
    properties:
      environmentVariables:
        - name: 'NOTSECRET'
          value: 'my-exposed-value'
        - name: 'SECRET'
          secureValue: 'my-secret-value'
      image: mcr.microsoft.com/oss/nginx/nginx:1.15.5-alpine
      ports: []
      resources:
        requests:
          cpu: 1.0
          memoryInGB: 1.5
  osType: Linux
  restartPolicy: Always
tags: null
type: Microsoft.ContainerInstance/containerGroups

Futtassa a következő parancsot a tárolócsoport YAML-lel való üzembe helyezéséhez (szükség szerint módosítsa az erőforráscsoport nevét):

az container create --resource-group myResourceGroup --file secure-env.yaml

Környezeti változók ellenőrzése

Futtassa az az container show parancsot a tároló környezeti változóinak lekérdezéséhez:

az container show --resource-group myResourceGroup --name securetest --query 'containers[].environmentVariables'

A JSON-válasz a nem biztonságos környezeti változó kulcsát és értékét is megjeleníti, de csak a biztonságos környezeti változó nevét:

[
  [
    {
      "name": "NOTSECRET",
      "secureValue": null,
      "value": "my-exposed-value"
    },
    {
      "name": "SECRET",
      "secureValue": null,
      "value": null
    }
  ]
]

Az az container exec paranccsal, amely lehetővé teszi egy parancs futtatását egy futó tárolóban, ellenőrizheti, hogy a biztonságos környezeti változó be van-e állítva. Futtassa a következő parancsot egy interaktív bash-munkamenet elindításához a tárolóban:

az container exec --resource-group myResourceGroup --name securetest --exec-command "/bin/sh"

Miután megnyitott egy interaktív rendszerhéjat a tárolóban, hozzáférhet a SECRET változó értékéhez:

root@caas-ef3ee231482549629ac8a40c0d3807fd-3881559887-5374l:/# echo $SECRET
my-secret-value

Következő lépések

A feladatalapú forgatókönyvek, például a több tárolóval rendelkező nagy adathalmaz kötegelt feldolgozása, kihasználhatják az egyéni környezeti változókat futásidőben. A feladatalapú tárolók futtatásával kapcsolatos további információkért lásd: Tárolóalapú tevékenységek futtatása újraindítási szabályzatokkal.