Nastavení proměnných prostředí v instancích kontejneru

Když v instancích kontejnerů nastavíte proměnné prostředí, můžete dynamicky konfigurovat aplikaci nebo skript, které kontejner spustí. Podobá se argumentu příkazového --env řádku pro docker run.

Pokud chcete nastavit proměnné prostředí v kontejneru, zadejte je při vytváření instance kontejneru. Tento článek ukazuje příklady nastavení proměnných prostředí při spuštění kontejneru pomocí Azure CLI, Azure PowerShell a Azure Portal.

Pokud například spustíte image kontejneru Microsoft aci-wordcount , můžete změnit její chování zadáním následujících proměnných prostředí:

NumWords: Počet slov odeslaných do funkce STDOUT.

MinLength: Minimální počet znaků ve slově, které se mají spočítat. Vyšší číslo ignoruje běžná slova, jako jsou "of" a "the".

Pokud potřebujete předat tajné kódy jako proměnné prostředí, Azure Container Instances podporuje zabezpečené hodnoty pro kontejnery Windows i Linux.

Poznámka

K interakci s Azure doporučujeme použít modul Azure Az PowerShell. Začněte tím, že si projdete téma Instalace Azure PowerShellu. Informace o tom, jak migrovat na modul Az PowerShell, najdete v tématu Migrace Azure PowerShellu z AzureRM na Az.

Příklad Azure CLI

Pokud chcete zobrazit výchozí výstup kontejneru aci-wordcount , nejprve ho spusťte pomocí příkazu az container create (nezadá se žádné proměnné prostředí):

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

Chcete-li upravit výstup, spusťte druhý kontejner s --environment-variables přidaným argumentem a zadejte hodnoty proměnných NumWords a MinLength . (Tento příklad předpokládá, že používáte rozhraní příkazového řádku v prostředí Bash nebo v Azure Cloud Shell. Pokud používáte příkazový řádek systému Windows, zadejte proměnné s dvojitými uvozovkami, například --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'

Jakmile se stav obou kontejnerů zobrazí jako Terminated (ke kontrole stavu použijte az container show ), zobrazte jejich protokoly pomocí příkazu az container logs , abyste viděli výstup.

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

Výstupy kontejnerů ukazují, jak jste nastavením proměnných prostředí upravili chování skriptů druhého kontejneru.

mycontainer1

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

kontejner mycontainer2

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

Azure PowerShell příklad

Nastavení proměnných prostředí v PowerShellu se podobá rozhraní příkazového řádku, ale používá se argument příkazového -EnvironmentVariable řádku.

Nejprve spusťte kontejner aci-wordcount ve výchozí konfiguraci pomocí tohoto příkazu New-AzContainerGroup :

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

Teď spusťte následující příkaz New-AzContainerGroup . Tento parametr určuje proměnné prostředí NumWords a MinLength po naplnění maticové proměnné: 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
    )

Jakmile je stav obou kontejnerů Ukončeno (ke kontrole stavu použijte Rutinu Get-AzContainerInstanceLog ), načte jejich protokoly pomocí příkazu Get-AzContainerInstanceLog .

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

Výstup každého kontejneru ukazuje, jak jste upravili skript spuštěný kontejnerem nastavením proměnných prostředí.

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říklad

Pokud chcete nastavit proměnné prostředí při spuštění kontejneru v Azure Portal, zadejte je při vytváření kontejneru na stránce Upřesnit.

  1. Na stránce Upřesnit nastavte zásadu restartování na při selhání.
  2. V části Proměnné prostředí zadejte NumWords jako první proměnnou hodnotu 5 a jako druhou proměnnou zadejte MinLength hodnotu 8 .
  3. Výběrem možnosti Zkontrolovat a vytvořit kontejner ověřte a pak nasaďte.

Stránka portálu zobrazující tlačítko Povolit a textová pole proměnné prostředí

Pokud chcete zobrazit protokoly kontejneru, v části Nastavení vyberte Kontejnery a pak Protokoly. Podobně jako v předchozích částech rozhraní příkazového řádku a PowerShellu můžete vidět, jak proměnné prostředí změnily chování skriptu. Zobrazí se pouze pět slov, každé s minimální délkou osmi znaků.

Portál zobrazující výstup protokolu kontejneru

Zabezpečené hodnoty

Objekty se zabezpečenými hodnotami jsou určené k uchovávání citlivých informací, jako jsou hesla nebo klíče pro vaši aplikaci. Použití zabezpečených hodnot pro proměnné prostředí je bezpečnější a flexibilnější než jejich zahrnutí do image kontejneru. Další možností je použít tajné svazky, které jsou popsané v tématu Připojení tajného svazku v Azure Container Instances.

Proměnné prostředí se zabezpečenými hodnotami se ve vlastnostech kontejneru nezobrazují – k jejich hodnotám je možné přistupovat pouze z kontejneru. Například vlastnosti kontejneru zobrazené v Azure Portal nebo Azure CLI zobrazují pouze název zabezpečené proměnné, nikoli její hodnotu.

Nastavte zabezpečenou proměnnou prostředí zadáním secureValue vlastnosti místo normální value pro typ proměnné. Dvě proměnné definované v následujícím YAML demonstrují tyto dva typy proměnných.

Nasazení YAML

Vytvořte secure-env.yaml soubor s následujícím fragmentem kódu.

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

Spuštěním následujícího příkazu nasaďte skupinu kontejnerů pomocí YAML (podle potřeby upravte název skupiny prostředků):

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

Ověření proměnných prostředí

Spuštěním příkazu az container show zadejte dotaz na proměnné prostředí kontejneru:

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

V odpovědi JSON se zobrazí klíč a hodnota nezabezpečené proměnné prostředí, ale jenom název zabezpečené proměnné prostředí:

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

Pomocí příkazu az container exec , který umožňuje spuštění příkazu ve spuštěném kontejneru, můžete ověřit, že je nastavená proměnná zabezpečeného prostředí. Spuštěním následujícího příkazu spusťte interaktivní relaci Bash v kontejneru:

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

Po otevření interaktivního prostředí v kontejneru můžete získat přístup k hodnotě SECRET proměnné:

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

Další kroky

Scénáře založené na úlohách, jako je dávkové zpracování velké datové sady s několika kontejnery, mohou využívat výhod vlastních proměnných prostředí za běhu. Další informace o spouštění kontejnerů založených na úlohách najdete v tématu Spouštění kontejnerizovaných úloh se zásadami restartování.