Aracılığıyla paylaş


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 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ük sayısı.

MinLength: Bir sözcükte sayılacak en az karakter sayısıdır. 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şim kurmak 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

Çıktıyı değiştirmek için bağımsız değişkeni eklenmiş --environment-variables 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'de çalıştırdığınız varsayılır. Windows Komut İstemi'ni kullanıyorsanız, gibi çift tırnak içeren --environment-variables "NumWords"="5" "MinLength"="8"değişkenleri belirtin.)

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 çıkışları, ortam değişkenlerini ayarlayarak ikinci kapsayıcının betik davranışını nasıl değiştirdiğiniz gösterilir.

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şkenlerini ayarlamak CLI'ya benzer, ancak komut satırı bağımsız değişkenini -EnvironmentVariable kullanır.

İlk olarak, şu 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 envVarsbelirtir:

$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österilir.

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ında 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 ilkesini Açı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 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 Azure Container Instances'ta gizli birim 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ında 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 secureValue türü için normal value yerine özelliğini belirterek 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ılarla büyük bir veri kümesini toplu 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.