Környezeti változók beállítása tárolópéldányokban
A tárolópéldányok környezeti változóinak beállítása lehetővé teszi a tárolóban futó alkalmazás vagy szkript dinamikus konfigurálását. Ez a funkció a parancssori argumentumhoz --env
docker run
hasonló.
Ha környezeti változókat szeretne beállítani egy tárolóban, adja meg őket egy tárolópéldány létrehozásakor. Ez a cikk példákat mutat be a környezeti változók beállítására, amikor elindít egy tárolót az Azure CLI-vel, az Azure PowerShell-lel és az Azure Portallal.
Ha például a Microsoft aci-wordcount tárolórendszerképét futtatja, a viselkedését a következő környezeti változók megadásával módosíthatja:
NumWords: Az STDOUT-nak küldött szavak száma.
MinLength: A szavakban szereplő karakterek minimális száma a megszámláláshoz. A nagyobb szám figyelmen kívül hagyja az olyan gyakori szavakat, mint az "of" és a "the".
Ha környezeti változóként titkos kulcsokat kell átadnia, az Azure Container Instances támogatja a windowsos és a Linux-tárolók biztonságos értékeit is.
Feljegyzés
Javasoljuk, hogy az Azure Az PowerShell modult használja az Azure-ral való interakcióhoz. Első lépésként tekintse meg az Azure PowerShell telepítését ismertető témakört. Az Az PowerShell-modulra történő migrálás részleteiről lásd: Az Azure PowerShell migrálása az AzureRM modulból az Az modulba.
Azure CLI-példa
Az aci-wordcount tároló alapértelmezett kimenetének megtekintéséhez futtassa először az az container create paranccsal (nincs megadva környezeti változó):
az container create \
--resource-group myResourceGroup \
--name mycontainer1 \
--image mcr.microsoft.com/azuredocs/aci-wordcount:latest \
--restart-policy OnFailure
A kimenet módosításához indítsa el a második tárolót a --environment-variables
hozzáadott argumentummal, és adja meg a NumWords és a MinLength változók értékeit. (Ez a példa feltételezi, hogy a parancssori felületet Bash-rendszerhéjban vagy Azure Cloud Shellben futtatja. Ha a Windows parancssorát használja, adja meg a változókat idézőjelekkel( például --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'
Ha mindkét tároló állapota Leállítva állapotúként jelenik meg (az az container show használatával ellenőrizze az állapotot), a kimenet megtekintéséhez jelenítse meg a naplókat az az container logs használatával.
az container logs --resource-group myResourceGroup --name mycontainer1
az container logs --resource-group myResourceGroup --name mycontainer2
A tárolók kimenetei azt mutatják, hogyan módosította a második tároló szkriptjének viselkedését a környezeti változók beállításával.
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-példa
A Környezeti változók beállítása a PowerShellben hasonló a parancssori felülethez, de a -EnvironmentVariable
parancssori argumentumot használja.
Először indítsa el az aci-wordcount tárolót az alapértelmezett konfigurációban ezzel a New-AzContainerGroup paranccsal:
New-AzContainerGroup `
-ResourceGroupName myResourceGroup `
-Name mycontainer1 `
-Image mcr.microsoft.com/azuredocs/aci-wordcount:latest
Most futtassa a következő New-AzContainerGroup parancsot. Ez megadja a NumWords és MinLength környezeti változókat egy tömbváltozó feltöltése után: 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
)
Ha mindkét tároló állapota leállt (az állapot ellenőrzéséhez használja a Get-AzContainerInstanceLog parancsot), kérje le a naplókat a Get-AzContainerInstanceLog paranccsal.
Get-AzContainerInstanceLog -ResourceGroupName myResourceGroup -ContainerGroupName mycontainer1
Get-AzContainerInstanceLog -ResourceGroupName myResourceGroup -ContainerGroupName mycontainer2
Az egyes tárolók kimenete bemutatja, hogyan módosította a tároló által futtatott szkriptet környezeti változók beállításával.
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:\
Példa az Azure Portalra
Ha környezeti változókat szeretne beállítani, amikor elindít egy tárolót az Azure Portalon, adja meg őket a Speciális lapon a tároló létrehozásakor.
- A Speciális lapon állítsa be az újraindítási szabályzatot On (Sikertelen) értékre
- A Környezeti változók csoportban adja meg
NumWords
az első változó értékét5
, és adja megMinLength
a második változó értékét8
. - Válassza a Felülvizsgálat + létrehozás lehetőséget a tároló ellenőrzéséhez és üzembe helyezéséhez.
A tároló naplóinak megtekintéséhez a Beállítások területen válassza a Tárolók, majd a Naplók lehetőséget. Az előző CLI- és PowerShell-szakaszokban látható kimenethez hasonlóan láthatja, hogyan változtatják meg a környezeti változók a szkript viselkedését. Csak öt szó jelenik meg, amelyek legalább nyolc karakter hosszúságúak.
Biztonságos értékek
A biztonságos értékekkel rendelkező objektumok bizalmas információkat, például jelszavakat vagy kulcsokat tárolnak az alkalmazáshoz. A környezeti változók biztonságos értékeinek használata biztonságosabb és rugalmasabb, mint a tároló lemezképében való szerepeltetés. Egy másik lehetőség a titkos kötetek használata, amelyet a titkos kötet csatlakoztatása az Azure Container Instancesben című cikkben ismertet.
A biztonságos értékeket tartalmazó környezeti változók nem láthatók a tároló tulajdonságaiban – az értékük csak a tárolón belülről érhető el. Az Azure Portalon vagy az Azure CLI-ben megtekintett tárolótulajdonságok például csak egy biztonságos változó nevét jelenítik meg, az értékét nem.
Állítson be egy biztonságos környezeti változót úgy, hogy a secureValue
tulajdonságot adja meg a változó típusához tartozó normál value
helyett. Az alábbi YAML-ben definiált két változó a két változótípust mutatja be.
YAML üzembe helyezése
Hozzon létre egy secure-env.yaml
fájlt az alábbi kódrészlettel.
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
Futtassa a következő parancsot a tárolócsoport YAML-lel való üzembe helyezéséhez (szükség szerint módosítsa az erőforráscsoport nevét):
az container create --resource-group myResourceGroup --file secure-env.yaml
Környezeti változók ellenőrzése
Futtassa az az container show parancsot a tároló környezeti változóinak lekérdezéséhez:
az container show --resource-group myResourceGroup --name securetest --query 'containers[].environmentVariables'
A JSON-válasz a nem biztonságos környezeti változó kulcsát és értékét is megjeleníti, de csak a biztonságos környezeti változó nevét:
[
[
{
"name": "NOTSECRET",
"secureValue": null,
"value": "my-exposed-value"
},
{
"name": "SECRET",
"secureValue": null,
"value": null
}
]
]
Az az container exec paranccsal, amely lehetővé teszi egy parancs futtatását egy futó tárolóban, ellenőrizheti, hogy a biztonságos környezeti változó be van-e állítva. Futtassa a következő parancsot egy interaktív bash-munkamenet elindításához a tárolóban:
az container exec --resource-group myResourceGroup --name securetest --exec-command "/bin/sh"
Miután megnyitott egy interaktív rendszerhéjat a tárolóban, hozzáférhet a SECRET
változó értékéhez:
root@caas-ef3ee231482549629ac8a40c0d3807fd-3881559887-5374l:/# echo $SECRET
my-secret-value
Következő lépések
A feladatalapú forgatókönyvek, például egy nagy adathalmaz több tárolóval történő kötegelt feldolgozása, futásidőben kihasználhatják az egyéni környezeti változókat. A feladatalapú tárolók futtatásával kapcsolatos további információkért lásd : Tárolóalapú tevékenységek futtatása újraindítási szabályzatokkal.