Mengatur variabel lingkungan dalam beberapa instans kontainer

Mengatur variabel lingkungan dalam instans kontainer memungkinkan Anda untuk memberikan konfigurasi dinamis dari aplikasi atau skrip yang dijalankan oleh kontainer. Perilaku ini serupa dengan argumen baris perintah --env ke docker run.

Untuk mengatur variabel lingkungan dalam kontainer, tentukan variabel tersebut saat Anda membuat instans kontainer. Artikel ini memperlihatkan contoh pengaturan variabel lingkungan saat Anda memulai kontainer dengan Azure CLI, Azure PowerShell, dan portal Microsoft Azure.

Misalnya, jika menjalankan gambar kontainer aci-wordcount Microsoft, Anda dapat mengubah perilakunya dengan menentukan variabel lingkungan berikut:

NumWords: Jumlah kata yang dikirim ke STDOUT.

MinLength: Jumlah karakter minimum dalam kata yang akan dihitung. Jumlah yang lebih tinggi mengabaikan kata-kata umum seperti "of" dan "the."

Jika Anda perlu meneruskan rahasia sebagai variabel lingkungan, Azure Container Instances mendukung nilai aman untuk kontainer Windows dan Linux.

Catatan

Kami menyarankan agar Anda menggunakan modul Azure Az PowerShell untuk berinteraksi dengan Azure. Lihat Menginstal Azure PowerShell untuk memulai. Untuk mempelajari cara bermigrasi ke modul Az PowerShell, lihat Memigrasikan Azure PowerShell dari AzureRM ke Az.

Contoh Azure CLI

Untuk melihat output default kontainer aci-wordcount, jalankan terlebih dahulu dengan perintah buat kontainer az ini (tidak ada variabel lingkungan yang ditentukan):

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

Untuk memodifikasi output, mulai kontainer kedua dengan argumen --environment-variables ditambahkan, menentukan nilai untuk variabel NumWords dan MinLength. (Contoh ini mengasumsikan Anda menjalankan CLI di shell Bash atau Azure Cloud Shell. Jika Anda menggunakan Perintah Windows, tentukan variabel dengan tanda kutip ganda, seperti --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'

Setelah status kedua kontainer muncul sebagai Dihentikan (gunakan perintah az container show untuk memeriksa status), tampilkan log kontainer ini dengan perintah log kontainer az untuk melihat outputnya.

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

Output kontainer menunjukkan bagaimana Anda telah memodifikasi perilaku skrip kontainer kedua dengan mengatur variabel lingkungan.

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)]

Contoh Azure PowerShell

Mengatur variabel lingkungan di PowerShell serupa dengan CLI, tetapi menggunakan argumen baris perintah -EnvironmentVariable.

Pertama, luncurkan kontainer aci-wordcount dalam konfigurasi default-nya dengan perintah New-AzContainerGroup ini:

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

Sekarang jalankan perintah New-AzContainerGroup berikut. Perintah ini menentukan variabel lingkungan NumWords dan MinLength setelah mengisi variabel array, 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
    )

Setelah kedua status kontainer Dihentikan (gunakanGet-AzContainerInstanceLog untuk memeriksa status), tarik log dengan perintah Get-AzContainerInstanceLog.

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

Output untuk setiap kontainer memperlihatkan bagaimana Anda telah memodifikasi skrip yang dijalankan oleh kontainer dengan mengatur variabel lingkungan.

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:\

Contoh portal Microsoft Azure

Untuk mengatur variabel lingkungan saat Anda memulai kontainer di portal Microsoft Azure, tentukan di halaman Tingkat Lanjut saat membuat kontainer.

  1. Di halaman Tingkat Lanjut, atur Kebijakan hidupkan ulang ke Pada kegagalan
  2. Di Variabel lingkungan, masukkan NumWords dengan nilai 5 untuk variabel pertama, dan masukkan MinLength dengan nilai 8 untuk variabel kedua.
  3. Pilih Tinjau + buat untuk memverifikasi lalu menyebarkan kontainer.

Halaman portal memperlihatkan tombol Aktifkan dan kotak teks variabel lingkungan

Untuk menampilkan log kontainer, di Pengaturan, pilih Kontainer, kemudian Log. Serupa dengan output yang diperlihatkan di bagian CLI dan PowerShell sebelumnya, Anda dapat melihat bagaimana perilaku skrip telah dimodifikasi oleh variabel lingkungan. Hanya lima kata yang ditampilkan, masing-masing dengan panjang minimal delapan karakter.

Portal memperlihatkan output log kontainer

Nilai aman

Objek dengan nilai aman ditujukan untuk menyimpan informasi sensitif seperti kata sandi atau kunci untuk aplikasi Anda. Menggunakan nilai aman untuk variabel lingkungan lebih aman dan fleksibel daripada memasukkannya ke dalam gambar kontainer Anda. Opsi lain adalah menggunakan volume rahasia, dijelaskan dalam Memasang volume rahasia di Azure Container Instances.

Variabel lingkungan dengan nilai aman tidak terlihat di properti kontainer Anda--nilainya hanya dapat diakses dari dalam kontainer. Misalnya, properti kontainer yang ditampilkan di portal Microsoft Azure atau Azure CLI hanya menampilkan nama variabel aman, bukan nilainya.

Atur variabel lingkungan aman dengan menentukan properti secureValue bukannya value yang biasa untuk tipe variabel. Dua variabel yang ditentukan dalam YAML berikut menunjukkan dua jenis variabel.

Penyebaran YAML

Buat file secure-env.yaml dengan cuplikan berikut.

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

Jalankan perintah berikut untuk menyebarkan grup kontainer dengan YAML (sesuaikan nama grup sumber daya seperlunya):

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

Memverifikasi variabel lingkungan

Jalankan perintah az container show untuk mengkueri variabel lingkungan kontainer Anda:

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

Respons JSON memperlihatkan kunci dan nilai variabel lingkungan yang tidak aman, tetapi hanya nama variabel lingkungan aman:

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

Dengan perintah az container exec, yang memungkinkan menjalankan perintah dalam kontainer yang sedang berjalan, Anda dapat memverifikasi bahwa variabel lingkungan aman telah ditetapkan. Jalankan perintah berikut untuk memulai sesi bash interaktif dalam kontainer:

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

Setelah membuka shell interaktif dalam kontainer, Anda dapat mengakses nilai variabel SECRET:

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

Langkah berikutnya

Skenario berbasis tugas, seperti pemrosesan batch himpunan data besar dengan beberapa kontainer, dapat memanfaatkan variabel lingkungan kustom saat runtime. Untuk informasi selengkapnya tentang menjalankan kontainer berbasis tugas, lihat Menjalankan tugas dalam kontainer dengan kebijakan hidupkan ulang.