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/secretsgizli 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/secretsbir 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.yamlbir 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/secretsbir 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.jsonbir 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:

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.