Подключение тома secret в службе "Экземпляры контейнеров Azure"
Используйте том secret, чтобы предоставить конфиденциальную информацию контейнерам в группе контейнеров. В томе secret в файлах хранятся секреты, к которым у контейнеров в группе контейнеров есть доступ. С помощью секретов в томе secret можно избежать добавления конфиденциальных данных, например ключей SSH или учетных данных базы данных, в коде приложения.
- После развертывания тома secret с секретами в группе контейнеров он будет доступен только для чтения.
- Tmpfs, файловая система с поддержкой ОЗУ, поддерживает все секретные тома; их содержимое никогда не записывается в неразрешемое хранилище.
Примечание.
Тома secret сейчас ограничены контейнерами Linux. Сведения о том, как передавать переменные безопасной среды для контейнеров Windows и Linux см. в статье Настройка переменных среды. Мы работаем над тем, чтобы обеспечить все функции для контейнеров Windows, но для текущей платформы имеются отличия, подробнее о которых можно узнать в обзоре службы.
Подключение тома secret в Azure CLI
Чтобы развернуть контейнер с одним или несколькими секретами с помощью Azure CLI, добавьте параметры --secrets
и --secrets-mount-path
в команду az container create. В этом примере том secret, состоящий из двух файлов с секретами, "mysecret1" и "mysecret2", подключается к /mnt/secrets
:
az container create \
--resource-group myResourceGroup \
--name secret-volume-demo \
--image mcr.microsoft.com/azuredocs/aci-helloworld \
--secrets mysecret1="My first secret FOO" mysecret2="My second secret BAR" \
--secrets-mount-path /mnt/secrets
В следующих выходных данных az container exec показано открытие оболочки в выполняемом контейнере, список файлов в томе secret, а затем их содержимое:
az container exec \
--resource-group myResourceGroup \
--name secret-volume-demo --exec-command "/bin/sh"
/usr/src/app # ls /mnt/secrets
mysecret1
mysecret2
/usr/src/app # cat /mnt/secrets/mysecret1
My first secret FOO
/usr/src/app # cat /mnt/secrets/mysecret2
My second secret BAR
/usr/src/app # exit
Bye.
Подключение тома secret с помощью YAML
Вы также можете развернуть группы контейнеров с помощью Azure CLI и шаблона YAML. При развертывании группы контейнеров, состоящей из нескольких контейнеров, рекомендуется использовать шаблон YAML.
При развертывании с помощью шаблона YAML значения секретов в шаблоне должны быть в кодировке Base64. Тем не менее значения секретов отображаются в виде обычного текста в файлах в контейнере.
Следующий шаблон YAML определяет группу контейнеров с одним контейнером, где том secret подключается к /mnt/secrets
. Том secret имеет два файла с секретами, "mysecret1" и "mysecret2".
apiVersion: '2019-12-01'
location: eastus
name: secret-volume-demo
properties:
containers:
- name: aci-tutorial-app
properties:
environmentVariables: []
image: mcr.microsoft.com/azuredocs/aci-helloworld:latest
ports: []
resources:
requests:
cpu: 1.0
memoryInGB: 1.5
volumeMounts:
- mountPath: /mnt/secrets
name: secretvolume1
osType: Linux
restartPolicy: Always
volumes:
- name: secretvolume1
secret:
mysecret1: TXkgZmlyc3Qgc2VjcmV0IEZPTwo=
mysecret2: TXkgc2Vjb25kIHNlY3JldCBCQVIK
tags: {}
type: Microsoft.ContainerInstance/containerGroups
Для развертывания с помощью шаблона YAML сохраните предыдущий YAML в файл с именем deploy-aci.yaml
, а затем выполните команду az container create с параметром --file
:
# Deploy with YAML template
az container create \
--resource-group myResourceGroup \
--file deploy-aci.yaml
Подключение тома secret с помощью Resource Manager
Помимо развертывания с помощью CLI и шаблона YAML группу контейнеров также можно развернуть с помощью шаблона Azure Resource Manager.
Сначала заполните массив volumes
в разделе properties
группы контейнеров шаблона. При развертывании с помощью шаблона Resource Manager значения секретов в шаблоне должны быть в кодировке Base64. Тем не менее значения секретов отображаются в виде обычного текста в файлах в контейнере.
Затем для каждого контейнера в группе контейнеров, в которой нужно подключить том secret, заполните массив volumeMounts
в разделе properties
определения контейнера.
Следующий шаблон Resource Manager определяет группу контейнеров с одним контейнером, где том secret подключается к /mnt/secrets
. Том secret имеет два секрета, "mysecret1" и "mysecret2".
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"variables": {
"container1name": "aci-tutorial-app",
"container1image": "microsoft/aci-helloworld:latest"
},
"resources": [
{
"type": "Microsoft.ContainerInstance/containerGroups",
"apiVersion": "2021-03-01",
"name": "secret-volume-demo",
"location": "[resourceGroup().location]",
"properties": {
"containers": [
{
"name": "[variables('container1name')]",
"properties": {
"image": "[variables('container1image')]",
"resources": {
"requests": {
"cpu": 1,
"memoryInGb": 1.5
}
},
"ports": [
{
"port": 80
}
],
"volumeMounts": [
{
"name": "secretvolume1",
"mountPath": "/mnt/secrets"
}
]
}
}
],
"osType": "Linux",
"ipAddress": {
"type": "Public",
"ports": [
{
"protocol": "tcp",
"port": "80"
}
]
},
"volumes": [
{
"name": "secretvolume1",
"secret": {
"mysecret1": "TXkgZmlyc3Qgc2VjcmV0IEZPTwo=",
"mysecret2": "TXkgc2Vjb25kIHNlY3JldCBCQVIK"
}
}
]
}
}
]
}
Для развертывания с помощью шаблона Resource Manager сохраните предыдущий JSON в файл с именем deploy-aci.json
, а затем выполните команду az deployment group create с параметром --template-file
:
# Deploy with Resource Manager template
az deployment group create \
--resource-group myResourceGroup \
--template-file deploy-aci.json
Следующие шаги
Объемы
Сведения о подключении других типов томов в службе "Экземпляры контейнеров Azure" см. в следующих статьях:
- Mount an Azure file share in Azure Container Instances (Подключение файлового ресурса Azure с помощью службы "Экземпляры контейнеров Azure")
- Mount an emptyDir volume in Azure Container Instances (Подключение тома emptyDir в службе "Экземпляры контейнеров Azure")
- Подключение тома gitRepo в службе "Экземпляры контейнеров Azure"
Защита переменных среды
Другим способом предоставления конфиденциальной информации контейнерам (включая контейнеры Windows) является использование безопасных переменных среды.