Delen via


Omgevingsvariabelen instellen in containerinstanties

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 met docker run.

Als u omgevingsvariabelen in een container wilt instellen, geeft u deze op wanneer u een containerinstantie maakt. In dit artikel vindt u voorbeelden van het instellen van omgevingsvariabelen wanneer u een container start met de Azure CLI, Azure PowerShell en Azure Portal.

Als u bijvoorbeeld de containerinstallatiekopieën van Microsoft aci-wordcount uitvoert, kunt u het gedrag ervan wijzigen door de volgende omgevingsvariabelen op te geven:

NumWords: Het aantal woorden dat naar STDOUT is verzonden.

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

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

Notitie

Het wordt aanbevolen de Azure Az PowerShell-module te gebruiken om te communiceren met Azure. Zie Azure PowerShell installeren om aan de slag te gaan. 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, voert u deze eerst uit met deze az container create-opdracht (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 --environment-variables argument dat is toegevoegd en geeft u waarden op voor de variabelen NumWords en MinLength . (In dit voorbeeld wordt ervan uitgegaan dat u de CLI uitvoert in een Bash-shell of Azure Cloud Shell. Als u de Windows-opdrachtprompt gebruikt, geeft u de variabelen op met dubbele aanhalingstekens, 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 to check state), 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 gebruikt 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 NumWords- en MinLength-omgevingsvariabelen op na het invullen van een matrixvariabele: 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
    )

Zodra de status van beide containers is beëindigd (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 hebt gewijzigd dat door de container wordt uitgevoerd 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 start in Azure Portal, geeft u deze op de pagina Geavanceerd op wanneer u de container maakt.

  1. Stel op de pagina Geavanceerd het beleidOpnieuw opstarten in op On-fout
  2. Voer onder Omgevingsvariabelen een waarde in van 5 de eerste variabele en voer MinLength een waarde in voor 8 de tweede NumWords variabele.
  3. Selecteer Beoordelen en maken om de container te verifiëren en vervolgens te implementeren.

Portalpagina met omgevingsvariabele inschakelen, knop en tekstvakken

Als u de logboeken van de container wilt weergeven, selecteert u onder Instellingen Containers en vervolgens Logboeken. Net als in de vorige CLI- en PowerShell-secties ziet u 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

Veilige waarden

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 opnemen ervan in de installatiekopieën van uw container. Een andere optie is het gebruik van geheime volumes, zoals beschreven in Een geheimvolume koppelen in Azure Container Instances.

Omgevingsvariabelen met beveiligde waarden zijn niet zichtbaar in de eigenschappen van uw container. Hun waarden zijn alleen toegankelijk vanuit de container. Containereigenschappen die worden weergegeven in 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 secureValue eigenschap op te geven in plaats van de normale value waarde voor het type van de variabele. De twee variabelen die in de volgende YAML zijn gedefinieerd, laten de twee variabeletypen zien.

YAML-implementatie

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

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 te implementeren met YAML (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 in een actieve container kan worden 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"

Nadat u een interactieve shell in de container hebt geopend, hebt u toegang tot de waarde van de SECRET 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 tijdens runtime profiteren van aangepaste omgevingsvariabelen. Zie Containertaken uitvoeren met beleid voor opnieuw opstarten voor meer informatie over het uitvoeren van op taken gebaseerde containers.