Kapsayıcı örneklerinde ortam değişkenlerini ayarlama

Kapsayıcı örneklerinizde ortam değişkenleri ayarlamanız, kapsayıcı tarafından çalıştırılan uygulamanın veya betiğin dinamik yapılandırmasını sağlamanıza imkan tanır. Bu, komut satırı bağımsız değişkenine --envdocker runbenzer.

Kapsayıcıda ortam değişkenlerini ayarlamak için, kapsayıcı örneği oluştururken bunları belirtin. Bu makalede Azure CLI, Azure PowerShell ve Azure portal ile kapsayıcı başlattığınızda ortam değişkenlerini ayarlama örnekleri gösterilmektedir.

Örneğin, Microsoft aci-wordcount kapsayıcı görüntüsünü çalıştırırsanız, aşağıdaki ortam değişkenlerini belirterek davranışını değiştirebilirsiniz:

NumWords: STDOUT'a gönderilen sözcük sayısı.

MinLength: Bir sözcükte sayılacak en az karakter sayısı. Daha yüksek bir sayı "of" ve "the" gibi yaygın sözcükleri yoksayar.

Gizli dizileri ortam değişkenleri olarak geçirmeniz gerekiyorsa, Azure Container Instances hem Windows hem de Linux kapsayıcıları için güvenli değerleri destekler.

Not

Azure ile etkileşime geçmek için Azure Az PowerShell modülünü kullanmanızı öneririz. Başlamak için bkz. Azure PowerShell'i yükleme. Az PowerShell modülüne nasıl geçeceğinizi öğrenmek için bkz. Azure PowerShell’i AzureRM’den Az’ye geçirme.

Azure CLI örneği

aci-wordcount kapsayıcısının varsayılan çıkışını görmek için önce şu az container create komutuyla çalıştırın (ortam değişkeni belirtilmedi):

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

Çıkışı değiştirmek için, bağımsız değişkeni eklenmiş --environment-variables olarak ikinci bir kapsayıcı başlatın ve NumWords ve MinLength değişkenleri için değerler belirtin. (Bu örnekte CLI'yi bir Bash kabuğunda veya Azure Cloud Shell çalıştırdığınız varsayılır. Windows Komut İstemi'ni kullanıyorsanız, değişkenleri çift tırnakla belirtin, örneğin--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'

Her iki kapsayıcının durumu da Sonlandırıldı olarak gösterildikten sonra (durumu denetlemek için az container show komutunu kullanın), çıktıyı görmek için günlüklerini az container logs ile görüntüleyin.

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

Kapsayıcıların çıktıları, ortam değişkenlerini ayarlayarak ikinci kapsayıcının betik davranışını nasıl değiştirdiğiniz gösterir.

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 örnek

PowerShell'de ortam değişkenlerini ayarlamak CLI'ya benzer, ancak komut satırı bağımsız değişkenini -EnvironmentVariable kullanır.

İlk olarak, bu New-AzContainerGroup komutuyla aci-wordcount kapsayıcısını varsayılan yapılandırmasında başlatın:

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

Şimdi aşağıdaki New-AzContainerGroup komutunu çalıştırın. Bu, bir dizi değişkeni dolduruldıktan sonra NumWords ve MinLength ortam değişkenlerini belirtir: 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
    )

Her iki kapsayıcının durumu da sonlandırıldıktan sonra (durumu denetlemek için Get-AzContainerInstanceLog kullanın), Get-AzContainerInstanceLog komutuyla günlüklerini çekin.

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

Her kapsayıcının çıktısı, ortam değişkenlerini ayarlayarak kapsayıcı tarafından çalıştırılan betiği nasıl değiştirdiğiniz gösterir.

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 örnek

Azure portal bir kapsayıcı başlattığınızda ortam değişkenlerini ayarlamak için, kapsayıcıyı oluştururken Bunları Gelişmiş sayfasında belirtin.

  1. Gelişmiş sayfasında Yeniden başlatma ilkesiniAçık hata olarak ayarlayın
  2. Ortam değişkenleri'nin5 altında, NumWords ilk değişken için değeriyle girin ve ikinci değişken için değeriyle 8 girinMinLength.
  3. Kapsayıcıyı doğrulamak ve dağıtmak için Gözden geçir + oluştur'u seçin.

Ortam değişkeni Etkinleştir düğmesini ve metin kutularını gösteren portal sayfası

Kapsayıcının günlüklerini görüntülemek için Ayarlar'ın altında Kapsayıcılar'ı ve ardından Günlükler'i seçin. Önceki CLI ve PowerShell bölümlerinde gösterilen çıkışa benzer şekilde, betiğin davranışının ortam değişkenleri tarafından nasıl değiştirildiğini görebilirsiniz. Her biri en az sekiz karakter uzunluğunda olmak üzere yalnızca beş sözcük görüntülenir.

Kapsayıcı günlüğü çıkışını gösteren portal

Güvenli değerler

Güvenli değerlere sahip nesneler, uygulamanız için parolalar veya anahtarlar gibi hassas bilgileri barındırmaya yöneliktir. Ortam değişkenleri için güvenli değerler kullanmak, kapsayıcınızın görüntüsüne dahil etmekten daha güvenli ve daha esnektir. Bir diğer seçenek de gizli birimi Azure Container Instances bağlama bölümünde açıklanan gizli dizi birimlerini kullanmaktır.

Güvenli değerlere sahip ortam değişkenleri kapsayıcınızın özelliklerinde görünmez; değerlerine yalnızca kapsayıcı içinden erişilebilir. Örneğin, Azure portal veya Azure CLI'da görüntülenen kapsayıcı özellikleri, değerini değil yalnızca güvenli bir değişkenin adını görüntüler.

Değişkenin türü için normal value yerine özelliğini belirterek secureValue güvenli bir ortam değişkeni ayarlayın. Aşağıdaki YAML'de tanımlanan iki değişken, iki değişken türünü gösterir.

YAML dağıtımı

Aşağıdaki kod parçacığıyla bir secure-env.yaml dosya oluşturun.

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

Kapsayıcı grubunu YAML ile dağıtmak için aşağıdaki komutu çalıştırın (kaynak grubu adını gerektiği gibi ayarlayın):

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

Ortam değişkenlerini doğrulama

Kapsayıcınızın ortam değişkenlerini sorgulamak için az container show komutunu çalıştırın:

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

JSON yanıtı hem güvenli olmayan ortam değişkeninin anahtarını hem de değerini gösterir, ancak yalnızca güvenli ortam değişkeninin adını gösterir:

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

Komutunun çalışan bir kapsayıcıda yürütülmesini sağlayan az container exec komutuyla güvenli ortam değişkeninin ayarlandığını doğrulayabilirsiniz. Kapsayıcıda etkileşimli bir bash oturumu başlatmak için aşağıdaki komutu çalıştırın:

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

Kapsayıcı içinde etkileşimli bir kabuk açtıktan sonra değişkenin SECRET değerine erişebilirsiniz:

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

Sonraki adımlar

Çeşitli kapsayıcılara sahip büyük bir veri kümesini toplu olarak işleme gibi görev tabanlı senaryolar, çalışma zamanında özel ortam değişkenlerinden yararlanabilir. Görev tabanlı kapsayıcıları çalıştırma hakkında daha fazla bilgi için bkz. Kapsayıcılı görevleri yeniden başlatma ilkeleriyle çalıştırma.