تعيين متغيرات البيئة في حالات الحاوية

يتيح لك تعيين متغيرات البيئة في مثيلات الحاوية توفير تكوين ديناميكي للتطبيق أو البرنامج النصي الذي يتم تشغيله بواسطة الحاوية. هذا مشابه لـ --env وسيطة سطر الأوامر لـ docker run.

لتعيين متغيرات البيئة في حاوية، حددها عند إنشاء مثيل حاوية. تعرض هذه المقالة أمثلة لإعداد متغيرات البيئة عند بدء حاوية باستخدام Azure CLI و Azure PowerShell و مدخل Microsoft Azure .

على سبيل المثال، إذا قمت بتشغيل صورة حاوية Microsoft aci-wordcount ، فيمكنك تعديل سلوكها عن طريق تحديد متغيرات البيئة التالية:

NumWords: عدد الكلمات المرسلة إلى STDOUT.

MinLength: الحد الأدنى لعدد الأحرف في الكلمة المطلوب حسابها. يتجاهل العدد الأكبر الكلمات الشائعة مثل "من" و"ال".

إذا كنت بحاجة إلى تمرير الأسرار كمتغيرات البيئة، فإن مثيلات Azure Container تدعم القيم الآمنة لكل من حاويات Windows وLinux.

ملاحظة

نوصي باستخدام وحدة Azure Az PowerShell للتفاعل مع Azure. راجع تثبيت Azure PowerShell للبدء. لمعرفة كيفية الترحيل إلى الوحدة النمطية Az PowerShell، راجع ترحيل Azure PowerShell من AzureRM إلى Az.

مثال Azure CLI

لمشاهدة الإخراج الافتراضي للحاوية aci-wordcount ، قم بتشغيله أولاً باستخدام الأمر az container create (لم يتم تحديد متغيرات بيئة):

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

لتعديل الناتج، ابدأ حاوية ثانية بإضافة الوسيطة --environment-variables، مع تحديد القيم لمتغيري NumWords وMinLength. (يفترض هذا المثال أنك تقوم بتشغيل CLI في Bash shell أو Azure Cloud Shell، إذا كنت تستخدم موجه أوامر Windows، فحدد المتغيرات مع علامات الاقتباس المزدوجة، مثل --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'

بمجرد أن تظهر حالة كلتا الحاويتين على أنها منتهية (استخدم عرض الحاوية من az للتحقق من الحالة)، اعرض سجلاتها مع سجلات حاوية az لمشاهدة الإخراج.

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

تُظهر مخرجات الحاويات كيف قمت بتعديل سلوك البرنامج النصي للحاوية الثانية عن طريق تعيين متغيرات البيئة.

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

إن إعداد متغيرات البيئة في PowerShell مشابه لـ CLI، ولكنه يستخدم -EnvironmentVariable وسيطة سطر الأوامر.

أولاً، قم بتشغيل حاوية aci-wordcount في تكوينها الافتراضي باستخدام هذا الأمر New-AzContainerGroup :

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

الآن قم بتشغيل الأمر التالي New-AzContainerGroup . يحدد هذا المتغير متغيري البيئة NumWords وMinLength بعد ملء متغير مصفوفة، 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
    )

بمجرد أن تكون حالة كلتا الحاويتين منتهية (استخدم Get-Az Container Instance Log للتحقق من الحالة)، اسحب سجلاتهما باستخدام الأمر Get-AzContainerInstanceLog .

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

يُظهر الإخراج لكل حاوية كيف قمت بتعديل البرنامج النصي الذي تديره الحاوية عن طريق تعيين متغيرات البيئة.

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

لتعيين متغيرات البيئة عند بدء حاوية في بوابة Azure، حددها في صفحة خيارات متقدمة عند إنشاء الحاوية.

  1. في صفحة الخيارات المتقدمة، عيّن سياسة إعادة التشغيل على عند الإخفاق
  2. ضمن متغيرات البيئة، أدخل NumWords بقيمة 5 للمتغير الأول، وأدخل MinLength بقيمة 8 للمتغير الثاني.
  3. حدد مراجعة + إنشاء للتحقق ثم انشر الحاوية.

تعرض صفحة المدخل زر تمكين متغير البيئة ومربعات النص

لعرض سجلات الحاوية، ضمن الإعدادات حدد الحاويات، ثم السجلات. على غرار الإخراج الموضح في أقسام CLI وPowerShell السابقة، يمكنك أن ترى كيف تم تعديل سلوك البرنامج النصي بواسطة متغيرات البيئة. يتم عرض خمس كلمات فقط، لا يقل طول كل منها عن ثمانية أحرف.

تعرض البوابة مخرجات سجل الحاوية

قيم آمنة

تهدف الكائنات ذات القيم الآمنة إلى الاحتفاظ بمعلومات حساسة مثل كلمات المرور أو المفاتيح لتطبيقك. يعد استخدام القيم الآمنة لمتغيرات البيئة أكثر أماناً ومرونة من تضمينها في صورة الحاوية الخاصة بك. هناك خيار آخر وهو استخدام وحدات التخزين السرية، الموضحة في تحميل وحدة تخزين سرية في مثيلات حاوية Azure .

لا تظهر متغيرات البيئة ذات القيم الآمنة في خصائص الحاوية - لا يمكن الوصول إلى قيمها إلا من داخل الحاوية. على سبيل المثال، تعرض خصائص الحاوية المعروضة في مدخل Microsoft Azure أو Azure CLI اسم المتغير الآمن فقط، وليس قيمته.

قم بتعيين متغير بيئة آمنة عن طريق تحديد الخاصية secureValue بدلاً من الخاصية العادية value لنوع المتغير. يوضح المتغيران المحددان في YAML التالي نوعي المتغيرات.

نشر YAML

قم بإنشاء ملف secure-env.yaml بالمقتطف التالي.

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

قم بتشغيل الأمر التالي لنشر مجموعة الحاويات باستخدام YAML (اضبط اسم مجموعة الموارد حسب الضرورة):

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

تحقق من متغيرات البيئة

قم بتشغيل الأمر az container show للاستعلام عن متغيرات بيئة الحاوية الخاصة بك:

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

تعرض استجابة JSON كلاً من مفتاح وقيمة متغير البيئة غير الآمن، ولكن فقط اسم متغير البيئة الآمنة:

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

باستخدام الأمر az container exec ، الذي يتيح تنفيذ أمر في حاوية قيد التشغيل، يمكنك التحقق من تعيين متغير البيئة الآمنة. قم بتشغيل الأمر التالي لبدء جلسة bash تفاعلية في الحاوية:

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

بمجرد فتح غلاف تفاعلي داخل الحاوية، يمكنك الوصول إلى قيمة المتغير SECRET:

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

الخطوات التالية

يمكن أن تستفيد السيناريوهات المستندة إلى المهام، مثل معالجة مجموعة بيانات كبيرة مع عدة حاويات، من متغيرات البيئة المخصصة في وقت التشغيل. لمزيد من المعلومات حول تشغيل الحاويات المستندة إلى المهام، راجع تشغيل المهام المعبأة في حاويات باستخدام سياسات إعادة التشغيل .