Omgevingsvariabelen instellen in container-exemplaren

Door omgevingsvariabelen in uw containerinstanties in te stellen, kunt u dynamische configuratie mogelijk maken van de toepassing die of het script dat door de container wordt uitgevoerd. Dit is vergelijkbaar met het --env opdrachtregelargument voor docker run .

Als u omgevingsvariabelen in een container wilt instellen, geeft u deze op wanneer u een container-instantie maakt. Dit artikel bevat voorbeelden van het instellen van omgevingsvariabelen wanneer u een container start met de Azure CLI , Azure PowerShellen de Azure Portal.

Als u bijvoorbeeld de containerafbeelding Microsoft aci-wordcount hebt uitgevoerd, kunt u het gedrag ervan wijzigen door de volgende omgevingsvariabelen op te geven:

NumWords: het aantal woorden dat naar STDOUT wordt verzonden.

MinLength: het minimale aantal tekens in een woord dat moet worden geteld. Een hoger getal negeert veelvoorkomende woorden zoals 'van' en 'de'.

Als u geheimen wilt doorgeven als omgevingsvariabelen, Azure Container Instances beveiligde waarden voor zowel Windows als Linux-containers.

Notitie

In dit artikel wordt de Azure Az PowerShell-module gebruikt. Dit is de aanbevolen PowerShell-module voor interactie met Azure. Raadpleeg Azure PowerShell installeren om aan de slag te gaan met de Az PowerShell-module. Raadpleeg Azure PowerShell migreren van AzureRM naar Az om te leren hoe u naar de Azure PowerShell-module migreert.

Azure CLI-voorbeeld

Als u de standaarduitvoer van de container aci-wordcount wilt zien, moet u deze eerst uitvoeren met deze opdracht az container create (geen omgevingsvariabelen opgegeven):

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

Als u de uitvoer wilt wijzigen, start u een tweede container met het toegevoegde argument, waarin u waarden opgeeft voor de --environment-variables variabelen NumWords en MinLength. (In dit voorbeeld wordt ervan uitgenomen dat u de CLI in een Bash-shell of in een Azure Cloud Shell. Als u de opdrachtprompt Windows, geeft u de variabelen met dubbele aanhalingstekens op, zoals --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'

Zodra de status van beide containers wordt weergegeven als Beƫindigd (gebruik az container show om de status te controleren), geeft u de logboeken weer met az container logs om de uitvoer te zien.

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

De uitvoer van de containers laat zien hoe u het scriptgedrag van de tweede container hebt gewijzigd door omgevingsvariabelen in te stellen.

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 voorbeeld

Het instellen van omgevingsvariabelen in PowerShell is vergelijkbaar met de CLI, maar maakt gebruik van het -EnvironmentVariable opdrachtregelargument.

Start eerst de container aci-wordcount in de standaardconfiguratie met deze opdracht New-AzContainerGroup:

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

Voer nu de volgende Opdracht New-AzContainerGroup uit. Hiermee geeft u de omgevingsvariabelen NumWords en MinLength op na het vullen van een matrixvariabele, envVars :

$envVars = @{'NumWords'='5';'MinLength'='8'}
New-AzContainerGroup `
    -ResourceGroupName myResourceGroup `
    -Name mycontainer2 `
    -Image mcr.microsoft.com/azuredocs/aci-wordcount:latest `
    -RestartPolicy OnFailure `
    -EnvironmentVariable $envVars

Zodra de status van beide containers Beƫindigd is (gebruik Get-AzContainerInstanceLog om de status te controleren), haalt u de logboeken op met de opdracht Get-AzContainerInstanceLog.

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

De uitvoer voor elke container laat zien hoe u het script dat door de container wordt uitgevoerd, hebt gewijzigd door omgevingsvariabelen in te stellen.

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 voorbeeld

Als u omgevingsvariabelen wilt instellen wanneer u een container in het Azure Portal, geeft u deze op de pagina Geavanceerd op wanneer u de container maakt.

  1. Stel op de pagina Geavanceerd het beleid Voor opnieuw opstarten in op Bij fout
  2. Voer onder Omgevingsvariabelen in met een waarde van voor de eerste variabele en voer in met NumWords een waarde van voor de tweede 5 MinLength 8 variabele.
  3. Selecteer Beoordelen en maken om de container te controleren en vervolgens te implementeren.

Portalpagina met omgevingsvariabele knop inschakelen en tekstvakken

Als u de logboeken van de container wilt weergeven, Instellingen u Containers en vervolgens Logboeken. Net als bij de uitvoer in de vorige cli- en PowerShell-secties, kunt u zien hoe het gedrag van het script is gewijzigd door de omgevingsvariabelen. Er worden slechts vijf woorden weergegeven, elk met een minimale lengte van acht tekens.

Portal met uitvoer van containerlogboek

Waarden beveiligen

Objecten met beveiligde waarden zijn bedoeld voor het opslaan van gevoelige informatie, zoals wachtwoorden of sleutels voor uw toepassing. Het gebruik van beveiligde waarden voor omgevingsvariabelen is veiliger en flexibeler dan het op te geven in de containerafbeelding. Een andere optie is om geheime volumes te gebruiken, zoals beschreven in Een geheim volume in Azure Container Instances.

Omgevingsvariabelen met beveiligde waarden zijn niet zichtbaar in de eigenschappen van uw container. De waarden zijn alleen toegankelijk vanuit de container. Containereigenschappen die worden weergegeven in de Azure Portal of Azure CLI geven bijvoorbeeld alleen de naam van een beveiligde variabele weer, niet de waarde ervan.

Stel een beveiligde omgevingsvariabele in door de eigenschap secureValue op te geven in plaats van de reguliere voor het type van de value variabele. De twee variabelen die in de volgende YAML zijn gedefinieerd, demonstreren de twee variabeletypen.

YAML-implementatie

Maak een secure-env.yaml bestand met het volgende codefragment.

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

Voer de volgende opdracht uit om de containergroep met YAML te implementeren (pas indien nodig de naam van de resourcegroep aan):

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

Omgevingsvariabelen controleren

Voer de opdracht az container show uit om een query uit te voeren op de omgevingsvariabelen van uw container:

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

Het JSON-antwoord toont zowel de sleutel als de waarde van de onveilige omgevingsvariabele, maar alleen de naam van de beveiligde omgevingsvariabele:

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

Met de opdracht az container exec, waarmee een opdracht kan worden uitgevoerd in een container die wordt uitgevoerd, kunt u controleren of de beveiligde omgevingsvariabele is ingesteld. Voer de volgende opdracht uit om een interactieve bash-sessie in de container te starten:

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

Zodra u een interactieve shell in de container hebt geopend, hebt u toegang tot de waarde SECRET van de variabele:

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

Volgende stappen

Op taken gebaseerde scenario's, zoals batchverwerking van een grote gegevensset met verschillende containers, kunnen profiteren van aangepaste omgevingsvariabelen tijdens runtime. Zie Taken in containers uitvoeren met beleid voor opnieuw opstarten voor meer informatie over het uitvoeren van op taken gebaseerde containers.