تعيين متغيرات البيئة في حالات الحاوية
يتيح لك تعيين متغيرات البيئة في مثيلات الحاوية توفير تكوين ديناميكي للتطبيق أو البرنامج النصي الذي يتم تشغيله بواسطة الحاوية. هذا مشابه لـ --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، حددها في صفحة خيارات متقدمة عند إنشاء الحاوية.
- في صفحة الخيارات المتقدمة، عيّن سياسة إعادة التشغيل على عند الإخفاق
- ضمن متغيرات البيئة، أدخل
NumWords
بقيمة5
للمتغير الأول، وأدخلMinLength
بقيمة8
للمتغير الثاني. - حدد مراجعة + إنشاء للتحقق ثم انشر الحاوية.
لعرض سجلات الحاوية، ضمن الإعدادات حدد الحاويات، ثم السجلات. على غرار الإخراج الموضح في أقسام 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
الخطوات التالية
يمكن أن تستفيد السيناريوهات المستندة إلى المهام، مثل معالجة مجموعة بيانات كبيرة مع عدة حاويات، من متغيرات البيئة المخصصة في وقت التشغيل. لمزيد من المعلومات حول تشغيل الحاويات المستندة إلى المهام، راجع تشغيل المهام المعبأة في حاويات باستخدام سياسات إعادة التشغيل .