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

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

Als u bijvoorbeeld de containerinstallatiekopieën 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 moet doorgeven, ondersteunt Azure Container Instances veilige waarden voor zowel Windows- als Linux-containers.

Notitie

U wordt aangeraden 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 opdracht az container create (er zijn 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 toegevoegd, waarbij waarden worden opgegeven 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 om de status te controleren), geeft u hun logboeken weer met az containerlogboeken om de uitvoer te bekijken.

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. Deze geeft de omgevingsvariabelen NumWords en MinLength 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 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 start in de 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 Aan fout
  2. Voer NumWords onder Omgevingsvariabelen in met de waarde van 5 voor de eerste variabele en voer MinLength in met de waarde van 8 voor de tweede variabele.
  3. Selecteer Beoordelen en maken om de container te verifiëren en vervolgens te implementeren.

Portalpagina met de knop Inschakelen van de omgevingsvariabele en tekstvakken

Als u de logboeken van de container wilt weergeven, selecteert u onder Instellingende optie 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

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

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

Stel een beveiligde omgevingsvariabele in door de secureValue eigenschap op te geven in plaats van de reguliere value voor het type 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 met YAML te implementeren (pas de naam van de resourcegroep zo nodig 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'

In het JSON-antwoord worden zowel de sleutel als de waarde van de onveilige omgevingsvariabele weergegeven, 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 u een opdracht kunt uitvoeren in een actieve container, kunt u controleren of de variabele beveiligde omgeving 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 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 meerdere containers, kunnen profiteren van aangepaste omgevingsvariabelen tijdens runtime. Zie Taken in een container uitvoeren met beleid voor opnieuw opstarten voor meer informatie over het uitvoeren van op taken gebaseerde containers.