gizli dizi birimini Azure Container Instances bağlama
Bir 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 birim içindeki 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.
- Bir kapsayıcı grubundaki gizli dizilerle dağıtıldıktan sonra gizli dizi birimi salt okunur olur.
- Tüm gizli dizi birimleri, RAM destekli bir dosya sistemi olan tmpfs tarafından desteklenir; içeriği hiçbir zaman geçici olmayan depolama alanına yazılmamıştır.
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 ve --secrets-mount-path
parametrelerini ekleyin--secrets
. Bu örnek, konumunda " mysecret1" ve "mysecret2" /mnt/secrets
gizli dizilerini içeren iki dosyadan oluşan bir gizli dizi birimini 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 çıktısı, çalışan kapsayıcıda bir kabuk açmayı, gizli birim içindeki dosyaları listelemeyi ve ardından bunların içeriğini 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.
BIR YAML ş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.
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 biriminde gizli diziler içeren iki dosya 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 ve 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. bir Resource Manager şablonuyla dağıttığı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 dizi birimini 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, dizinine /mnt/secrets
gizli dizi birimi takan bir kapsayıcı içeren bir kapsayıcı grubu tanımlar. Gizli dizi biriminin 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, ardından az deployment group create komutunu parametresiyle yürütür--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 diğer birim türlerini bağlamayı öğrenin:
- Azure Container Instances'ta Azure dosya paylaşımı bağlama
- Azure Container Instances'da emptyDir birimi bağlama
- gitRepo birimini Azure Container Instances bağlama
Güvenli ortam değişkenleri
Kapsayıcılara (Windows kapsayıcıları dahil) hassas bilgiler sağlamanın bir diğer yöntemi de güvenli ortam değişkenleri kullanmaktır.