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ılara taşımaya ç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/secretsgizli 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/secretsbir 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.yamlbir 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/secretsgizli 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.jsonbir 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:

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şkenlerinin kullanılmasıdır.