Azure Container Instances'a gizli dizi birimi bağlama
Kapsayıcı grubundaki kapsayıcılara hassas bilgiler sağlamak için gizli dizi birimi kullanın. Gizli dizi birimi, gizli dizilerinizi kapsayıcı grubundaki kapsayıcılar tarafından erişilebilen birimdeki dosyalarda depolar. Gizli dizileri bir gizli dizi biriminde depolayarak, uygulama kodunuz için SSH anahtarları veya veritabanı kimlik bilgileri gibi hassas veriler eklemekten kaçınabilirsiniz.
- Kapsayıcı grubundaki gizli dizilerle dağıtıldıktan sonra gizli dizi birimi salt okunur olur.
- Tüm gizli birimler, RAM destekli bir dosya sistemi olan tmpfs tarafından desteklenir; içerikleri hiçbir zaman geçici olmayan depolama alanına yazılamaz.
Not
Gizli dizi birimleri şu anda Linux kapsayıcılarıyla sınırlıdır. Ortam değişkenlerini ayarlama bölümünde hem Windows hem de Linux kapsayıcıları için güvenli ortam değişkenlerini geçirmeyi öğrenin. Tüm özellikleri Windows kapsayıcılarına getirmeye çalışırken, genel bakış bölümünde geçerli platform farklarını bulabilirsiniz.
Gizli dizi birimini bağlama - Azure CLI
Azure CLI kullanarak bir veya daha fazla gizli dizi içeren bir kapsayıcı dağıtmak için az container create komutuna --secrets
ve --secrets-mount-path
parametrelerini ekleyin. Bu örnek, konumunda "mysecret1" ve "mysecret2" /mnt/secrets
gizli dizilerini içeren iki dosyadan oluşan bir gizli dizi birimi bağlar:
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
Aşağıdaki az container exec çıkışı, çalışan kapsayıcıda bir kabuk açmayı, gizli dizi birimi içindeki dosyaları listelemeyi ve ardından içeriklerini görüntülemeyi gösterir:
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.
Gizli dizi birimini bağlama - YAML
Kapsayıcı gruplarını Azure CLI ve YAML şablonuyla da dağıtabilirsiniz. Birden çok kapsayıcıdan oluşan kapsayıcı gruplarını dağıtırken tercih edilen yöntem YAML şablonuyla dağıtmaktır.
YAML şablonuyla dağıttığınızda, gizli dizi değerlerinin şablonda Base64 kodlanmış olması gerekir. Ancak, gizli dizi değerleri kapsayıcıdaki dosyaların içinde düz metin olarak görünür.
Aşağıdaki YAML şablonu, 'de /mnt/secrets
bir gizli dizi birimi takan bir kapsayıcı içeren bir kapsayıcı grubu tanımlar. Gizli dizi biriminin gizli dizileri içeren iki dosyası vardır: "mysecret1" ve "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 şablonuyla dağıtmak için, önceki YAML'yi adlı deploy-aci.yaml
bir dosyaya kaydedin, ardından az container create komutunu parametresiyle yürütür--file
:
# Deploy with YAML template
az container create \
--resource-group myResourceGroup \
--file deploy-aci.yaml
Gizli dizi birimini bağlama - Resource Manager
CLI ve YAML dağıtımına ek olarak, Azure Resource Manager şablonu kullanarak bir kapsayıcı grubu dağıtabilirsiniz.
İlk olarak, şablonun volumes
kapsayıcı grubu properties
bölümündeki diziyi doldurun. Resource Manager şablonuyla dağıtım yaptığınızda, gizli dizi değerlerinin şablonda Base64 ile kodlanmış olması gerekir. Ancak, gizli dizi değerleri kapsayıcıdaki dosyaların içinde düz metin olarak görünür.
Ardından, gizli birimi bağlamak istediğiniz kapsayıcı grubundaki her kapsayıcı için kapsayıcı tanımının properties
bölümündeki diziyi doldurunvolumeMounts
.
Aşağıdaki Resource Manager şablonu, 'de /mnt/secrets
bir gizli dizi birimi takan bir kapsayıcı grubu tanımlar. Gizli birimin iki gizli dizisi vardır: "mysecret1" ve "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 şablonuyla dağıtmak için, önceki JSON dosyasını adlı deploy-aci.json
bir dosyaya kaydedin ve ardından az deployment group create komutunu parametresiyle yürütebilirsiniz--template-file
:
# Deploy with Resource Manager template
az deployment group create \
--resource-group myResourceGroup \
--template-file deploy-aci.json
Sonraki adımlar
Birimler
Azure Container Instances'ta diğer birim türlerini bağlamayı öğrenin:
- Azure Container Instances'ta Azure dosya paylaşımı bağlama
- Azure Container Instances'a emptyDir birimi bağlama
- Azure Container Instances'a gitRepo birimi bağlama
Güvenli ortam değişkenleri
Kapsayıcılara (Windows kapsayıcıları dahil) hassas bilgi sağlamanın bir diğer yöntemi de güvenli ortam değişkenlerinin kullanılmasıdır.