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, --env için komut satırı bağımsız değişkenine benzerdir docker run .

Bir kapsayıcıda ortam değişkenlerini ayarlamak için, bir kapsayıcı örneği oluşturduğunuzda bunları belirtin. bu makalede, Azure clı, Azure PowerShellve Azure portalile bir 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üklerin sayısı.

MinLength: sayılacak bir sözcükteki karakter sayısı alt sınırı. Daha yüksek bir sayı, "/" ve "The" gibi yaygın kelimeleri 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

Bu makalede, Azure ile etkileşim kurmak için önerilen PowerShell modülü olan Azure Az PowerShell modülü kullanılır. Az PowerShell modülünü kullanmaya başlamak için Azure PowerShell’i yükleyin. Az PowerShell modülüne nasıl geçeceğinizi öğrenmek için bkz. Azure PowerShell’i AzureRM’den Az’ye geçirme.

Azure CLı örneği

Aci-WORDCOUNT kapsayıcısının varsayılan çıktısını görmek için, bunu önce bu az Container Create komutuyla çalıştırın (ortam değişkeni belirtilmemiş):

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

Çıktıyı değiştirmek için, eklenen bağımsız değişkenle ikinci bir kapsayıcı başlatın --environment-variables , NumWords ve minLength değişkenlerinin değerlerini belirtin. (Bu örnek, bir bash kabuğunda veya Azure Cloud Shell CLı kullandığınızı varsayar. Windows komut istemi kullanıyorsanız, çift tırnak (gibi) değişkenlerini belirtin --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 sonlandırıldığını gösterir (durumu denetlemek için az Container Show kullanın), çıktıyı görmek için az Container logs ile günlüklerini 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ısı, ortam değişkenlerini ayarlayarak ikinci kapsayıcının betik davranışını nasıl değiştirmiş olduğunu 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 örneği

PowerShell 'de ortam değişkenlerinin ayarlanması CLı 'ye benzerdir, ancak -EnvironmentVariable komut satırı bağımsız değişkenini 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 doldurulduktan sonra NumWords ve minLength ortam değişkenlerini belirtir envVars :

$envVars = @{'NumWords'='5';'MinLength'='8'}
New-AzContainerGroup `
    -ResourceGroupName myResourceGroup `
    -Name mycontainer2 `
    -Image mcr.microsoft.com/azuredocs/aci-wordcount:latest `
    -RestartPolicy OnFailure `
    -EnvironmentVariable $envVars

Her iki kapsayıcının durumu 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ştirmiş olduğunu 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 örneği

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

  1. Gelişmiş sayfasında, yeniden başlatma ilkesini hata durumunda olarak ayarlayın
  2. Ortam değişkenleri' nın altında, NumWords 5 ilk değişken için değerini girin ve MinLength 8 ikinci değişken için değerini girin.
  3. Kapsayıcıyı doğrulamak ve sonra dağıtmak için gözden geçir + oluştur ' u seçin.

Ortam değişkeni etkinleştir düğme ve metin kutularını gösteren Portal sayfası

kapsayıcının günlüklerini görüntülemek için Ayarlar kapsayıcılar ' ın altında kapsayıcılar' ı ve ardından günlükler' i seçin. Önceki CLı ve PowerShell bölümlerinde gösterilen çıktıya benzer şekilde, komut dosyasının 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 olan 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 parola veya anahtarlar gibi hassas bilgileri tutmak üzere tasarlanmıştır. Ortam değişkenlerinin güvenli değerlerinin kullanılması, kapsayıcının görüntüsüne dahil etme özelliğinden daha güvenli ve daha esnektir. Başka bir seçenek de Azure Container Instances bir gizli birim bağlamabölümünde açıklanan gizli birimleri kullanmaktır.

Güvenli değerlere sahip ortam değişkenleri, kapsayıcının özelliklerinde görünmez, ancak değerleri yalnızca kapsayıcının içinden erişilebilir. Örneğin, Azure portal veya Azure CLı 'de 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.

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

YAML dağıtımı

secure-env.yamlAşağıdaki kod parçacığına sahip bir 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

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

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

Ortam değişkenlerini doğrulama

Kapsayıcını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üvensiz ortam değişkeninin anahtarını hem de değerini gösterir, ancak yalnızca güvenli ortam değişkeninin adı:

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

Çalışan bir kapsayıcıda bir komutun 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 SECRET değişkenin değerine erişebilirsiniz:

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

Sonraki adımlar

Birden çok kapsayıcı içeren 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 faydalanabilir. Görev tabanlı kapsayıcılar çalıştırma hakkında daha fazla bilgi için bkz. yeniden başlatma ilkeleriyle Kapsayıcılı görevleri çalıştırma.