Ustawianie zmiennych środowiskowych w wystąpieniach kontenera
Ustawienie zmiennych środowiskowych w wystąpieniach kontenerów umożliwia udostępnienie dynamicznej konfiguracji aplikacji lub skryptu uruchamianego przez kontener. Ta funkcja jest podobna do argumentu --env
wiersza polecenia do docker run
.
Aby ustawić zmienne środowiskowe w kontenerze, określ je podczas tworzenia wystąpienia kontenera. W tym artykule przedstawiono przykłady ustawiania zmiennych środowiskowych podczas uruchamiania kontenera przy użyciu interfejsu wiersza polecenia platformy Azure, programu Azure PowerShell i witryny Azure Portal.
Jeśli na przykład uruchomisz obraz kontenera aci-wordcount firmy Microsoft, możesz zmodyfikować jego zachowanie, określając następujące zmienne środowiskowe:
NumWords: liczba słów wysłanych do STDOUT.
MinLength: minimalna liczba znaków w słowie do zliczenia. Większa liczba ignoruje typowe słowa, takie jak "of" i "the".
Jeśli musisz przekazać wpisy tajne jako zmienne środowiskowe, usługa Azure Container Instances obsługuje bezpieczne wartości zarówno dla kontenerów systemu Windows, jak i Linux.
Uwaga
Do interakcji z platformą Azure zalecamy używanie modułu Azure Az w programie PowerShell. Aby rozpocząć, zobacz Instalowanie programu Azure PowerShell. Aby dowiedzieć się, jak przeprowadzić migrację do modułu Az PowerShell, zobacz Migracja programu Azure PowerShell z modułu AzureRM do modułu Az.
Przykład interfejsu wiersza polecenia platformy Azure
Aby wyświetlić domyślne dane wyjściowe kontenera aci-wordcount, uruchom go najpierw za pomocą tego polecenia az container create (bez określonych zmiennych środowiskowych):
az container create \
--resource-group myResourceGroup \
--name mycontainer1 \
--image mcr.microsoft.com/azuredocs/aci-wordcount:latest \
--restart-policy OnFailure
Aby zmodyfikować dane wyjściowe, uruchom drugi kontener z dodanym argumentem --environment-variables
, określając wartości zmiennych NumWords i MinLength . (W tym przykładzie przyjęto założenie, że uruchamiasz interfejs wiersza polecenia w powłoce Bash lub usłudze Azure Cloud Shell. Jeśli używasz wiersza polecenia systemu Windows, określ zmienne z podwójnymi cudzysłowymi, takimi jak --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'
Gdy stan obu kontenerów będzie wyświetlany jako Zakończony (użyj polecenia az container show , aby sprawdzić stan), wyświetl dzienniki za pomocą polecenia az container logs , aby wyświetlić dane wyjściowe.
az container logs --resource-group myResourceGroup --name mycontainer1
az container logs --resource-group myResourceGroup --name mycontainer2
Dane wyjściowe kontenerów pokazują, jak zmodyfikowano zachowanie skryptu drugiego kontenera przez ustawienie zmiennych środowiskowych.
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)]
Przykład programu Azure PowerShell
Ustawianie zmiennych środowiskowych w programie PowerShell jest podobne do interfejsu wiersza polecenia, ale używa argumentu -EnvironmentVariable
wiersza polecenia.
Najpierw uruchom kontener aci-wordcount w domyślnej konfiguracji za pomocą tego polecenia New-AzContainerGroup :
New-AzContainerGroup `
-ResourceGroupName myResourceGroup `
-Name mycontainer1 `
-Image mcr.microsoft.com/azuredocs/aci-wordcount:latest
Teraz uruchom następujące polecenie New-AzContainerGroup . Ten określa zmienne środowiskowe NumWords i MinLength po wypełnieniu zmiennej tablicy: 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
)
Gdy stan obu kontenerów zostanie zakończony (użyj polecenia Get-AzContainerInstanceLog , aby sprawdzić stan), pobierz dzienniki za pomocą polecenia Get-AzContainerInstanceLog .
Get-AzContainerInstanceLog -ResourceGroupName myResourceGroup -ContainerGroupName mycontainer1
Get-AzContainerInstanceLog -ResourceGroupName myResourceGroup -ContainerGroupName mycontainer2
Dane wyjściowe dla każdego kontenera pokazują, jak zmodyfikowano skrypt uruchamiany przez kontener, ustawiając zmienne środowiskowe.
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:\
Przykład witryny Azure Portal
Aby ustawić zmienne środowiskowe podczas uruchamiania kontenera w witrynie Azure Portal, określ je na stronie Zaawansowane podczas tworzenia kontenera.
- Na stronie Zaawansowane ustaw zasady ponownego uruchamiania na Wartość Po awarii
- W obszarze Zmienne środowiskowe wprowadź
NumWords
wartość5
dla pierwszej zmiennej i wprowadźMinLength
wartość z wartością8
dla drugiej zmiennej. - Wybierz pozycję Przejrzyj i utwórz , aby zweryfikować, a następnie wdrożyć kontener.
Aby wyświetlić dzienniki kontenera, w obszarze Ustawienia wybierz pozycję Kontenery, a następnie pozycję Dzienniki. Podobnie jak w poprzednich sekcjach interfejsu wiersza polecenia i programu PowerShell, można zobaczyć, jak zmienne środowiskowe zmieniają zachowanie skryptu. Wyświetlane są tylko pięć wyrazów, z których każda ma minimalną długość ośmiu znaków.
Zabezpiecz wartości
Obiekty z bezpiecznymi wartościami są przeznaczone do przechowywania poufnych informacji, takich jak hasła lub klucze dla aplikacji. Używanie bezpiecznych wartości zmiennych środowiskowych jest bezpieczniejsze i bardziej elastyczne niż uwzględnianie ich w obrazie kontenera. Inną opcją jest użycie woluminów wpisów tajnych opisanych w temacie Instalowanie woluminu tajnego w usłudze Azure Container Instances.
Zmienne środowiskowe z bezpiecznymi wartościami nie są widoczne we właściwościach kontenera — do ich wartości można uzyskać dostęp tylko z poziomu kontenera. Na przykład właściwości kontenera wyświetlane w witrynie Azure Portal lub interfejsie wiersza polecenia platformy Azure wyświetlają tylko nazwę bezpiecznej zmiennej, a nie jej wartość.
Ustaw bezpieczną zmienną środowiskową, określając secureValue
właściwość zamiast zwykłego value
typu zmiennej. Dwie zmienne zdefiniowane w poniższym języku YAML przedstawiają dwa typy zmiennych.
Wdrażanie YAML
secure-env.yaml
Utwórz plik przy użyciu następującego fragmentu kodu.
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
Uruchom następujące polecenie, aby wdrożyć grupę kontenerów przy użyciu kodu YAML (dostosuj nazwę grupy zasobów w razie potrzeby):
az container create --resource-group myResourceGroup --file secure-env.yaml
Weryfikowanie zmiennych środowiskowych
Uruchom polecenie az container show, aby wykonać zapytanie o zmienne środowiskowe kontenera:
az container show --resource-group myResourceGroup --name securetest --query 'containers[].environmentVariables'
Odpowiedź JSON pokazuje zarówno niezabezpieczoną wartość klucza zmiennej środowiskowej, jak i wartość, ale tylko nazwę bezpiecznej zmiennej środowiskowej:
[
[
{
"name": "NOTSECRET",
"secureValue": null,
"value": "my-exposed-value"
},
{
"name": "SECRET",
"secureValue": null,
"value": null
}
]
]
Za pomocą polecenia az container exec, które umożliwia wykonywanie polecenia w uruchomionym kontenerze, można sprawdzić, czy ustawiono bezpieczną zmienną środowiskową. Uruchom następujące polecenie, aby uruchomić interaktywną sesję powłoki bash w kontenerze:
az container exec --resource-group myResourceGroup --name securetest --exec-command "/bin/sh"
Po otwarciu interaktywnej powłoki w kontenerze możesz uzyskać dostęp do wartości zmiennej SECRET
:
root@caas-ef3ee231482549629ac8a40c0d3807fd-3881559887-5374l:/# echo $SECRET
my-secret-value
Następne kroki
Scenariusze oparte na zadaniach, takie jak przetwarzanie wsadowe dużego zestawu danych z kilkoma kontenerami, mogą korzystać z niestandardowych zmiennych środowiskowych w czasie wykonywania. Aby uzyskać więcej informacji na temat uruchamiania kontenerów opartych na zadaniach, zobacz Run containerized tasks with restart policies (Uruchamianie konteneryzowanych zadań przy użyciu zasad ponownego uruchamiania).