Aracılığıyla paylaş


Azure Container Apps'te depolama bağlamalarını kullanma

Kapsayıcı uygulamasının farklı depolama türlerine erişimi vardır. Gerekirse tek bir uygulama birden fazla depolama türünden yararlanabilir.

Depolama türü Açıklama Kalıcılık Kullanım örneği
Kapsayıcı kapsamlı depolama Çalışan bir kapsayıcı için kısa ömürlü depolama kullanılabilir Kapsayıcı kapatana kadar veriler kullanılabilir Yerel uygulama önbelleği yazma.
Çoğaltma kapsamlı depolama Aynı çoğaltmadaki kapsayıcılar arasında dosya paylaşımı için kısa ömürlü depolama Çoğaltma kapatana kadar veriler kullanılabilir Sepet kapsayıcısı tarafından işlenen günlük dosyalarını yazan ana uygulama kapsayıcısı.
Azure Dosyaları Kalıcı depolama Veriler Azure Dosyalar kalıcı hale Verileri diğer sistemler tarafından erişilebilir hale getirmek için dosya paylaşımına dosya yazma.

Kısa ömürlü depolama

Kapsayıcı uygulaması geçici verileri kısa süreli depolama alanına okuyabilir ve yazabilir. Kısa süreli depolamanın kapsamı bir kapsayıcı veya çoğaltma olarak belirtilebilir. Her çoğaltma için kullanılabilir toplam kapsayıcı kapsamlı ve çoğaltma kapsamlı depolama alanı, çoğaltmaya ayrılan toplam vCPU miktarına bağlıdır.

vCPU sayısı Toplam kısa ömürlü depolama
0,25 veya daha düşük 1 GiB
0,5 veya daha düşük 2 GiB
1 veya daha düşük 4 GiB
1'den fazla 8 GiB

Kapsayıcı kapsamlı depolama

Kapsayıcı kendi dosya sistemine yazabilir.

Kapsayıcı dosya sistemi depolama aşağıdaki özelliklere sahiptir:

  • Depolama geçicidir ve kapsayıcı kapatıldığında veya yeniden başlatıldığında kaybolur.
  • Bu depolama alanına yazılan dosyalar yalnızca geçerli kapsayıcıda çalışan işlemlere görünür.

Çoğaltma kapsamlı depolama

Kubernetes'te EmptyDir (boş dizin) ile eşdeğer kısa ömürlü, geçici bir birim bağlayabilirsiniz. Bu depolama alanının kapsamı tek bir çoğaltma olarak belirlenmiştir. Aynı çoğaltmadaki kapsayıcılar arasında veri paylaşmak için birim EmptyDir kullanın.

Çoğaltma kapsamlı depolama aşağıdaki özelliklere sahiptir:

  • Dosyalar çoğaltmanın ömrü boyunca kalıcı hale gelir.
    • Çoğaltmadaki bir kapsayıcı yeniden başlatılırsa, birimdeki dosyalar kalır.
  • Çoğaltmadaki tüm init veya uygulama kapsayıcıları aynı birimi bağlayabilir.
  • Kapsayıcı birden çok EmptyDir birimi bağlayabilir.

Çoğaltma kapsamlı depolamayı yapılandırmak için önce düzeltmede bir EmptyDir birim tanımlayın. Ardından, düzeltmedeki bir veya daha fazla kapsayıcıda birim bağlaması tanımlayın.

Önkoşullar

Gereksinim Yönergeler
Azure hesabı Hesabınız yoksa ücretsiz bir hesap oluşturun.
Azure Container Apps ortamı Kapsayıcı uygulamaları ortamı oluşturun.

Yapılandırma

Azure CLI kullanarak çoğaltma kapsamlı depolamayı yapılandırırken kapsayıcı uygulamanızı oluşturmak veya güncelleştirmek için YAML tanımı kullanmanız gerekir.

  1. Mevcut kapsayıcı uygulamasını çoğaltma kapsamlı depolama kullanacak şekilde güncelleştirmek için uygulamanızın belirtimini app.yaml adlı bir YAML dosyasına aktarın.

    az containerapp show -n <APP_NAME> -g <RESOURCE_GROUP_NAME> -o yaml > app.yaml
    
  2. Kapsayıcı uygulama belirtiminizde aşağıdaki değişiklikleri yapın.

    • Kapsayıcı uygulama tanımınızın bölümüne bir volumes dizi template ekleyin ve bir birim tanımlayın. Zaten bir volumes diziniz varsa, diziye yeni bir birim ekleyin.
      • name birim için bir tanımlayıcıdır.
      • olarak storageTypekullanınEmptyDir.
    • Birime bağlamak istediğiniz şablondaki her kapsayıcı için, kapsayıcı tanımının volumeMounts dizisinde bir birim bağlaması tanımlayın.
      • volumeName, dizide volumes tanımlanan addır.
      • mountPath, birimi bağlamak için kapsayıcıdaki yoldur.
    properties:
      managedEnvironmentId: /subscriptions/<SUBSCRIPTION_ID>/resourceGroups/<RESOURCE_GROUP_NAME>/providers/Microsoft.App/managedEnvironments/<ENVIRONMENT_NAME>
      configuration:
        activeRevisionsMode: Single
      template:
        containers:
        - image: <IMAGE_NAME1>
          name: my-container-1
          volumeMounts:
          - mountPath: /myempty
            volumeName: myempty
        - image: <IMAGE_NAME_2>
          name: my-container-2
          volumeMounts:
          - mountPath: /myempty
            volumeName: myempty
        volumes:
        - name: myempty
          storageType: EmptyDir
    
  3. YAML dosyasını kullanarak kapsayıcı uygulamanızı güncelleştirin.

    az containerapp update --name <APP_NAME> --resource-group <RESOURCE_GROUP_NAME> \
        --yaml app.yaml
    

Tam bir örnek için YAML belirtimine bakın.

Çoğaltma kapsamlı bir birim oluşturmak ve bunu bir kapsayıcıya bağlamak için, ARM şablonundaki kapsayıcı uygulamaları kaynağında aşağıdaki değişiklikleri yapın:

  • Kapsayıcı uygulama tanımınızın bölümüne bir volumes dizi template ekleyin ve bir birim tanımlayın. Zaten bir volumes diziniz varsa, diziye yeni bir birim ekleyin.
    • name birim için bir tanımlayıcıdır.
    • olarak storageTypekullanınEmptyDir.
  • Birime bağlamak istediğiniz şablondaki her kapsayıcı için, kapsayıcı tanımının volumeMounts dizisinde bir birim bağlaması tanımlayın.
    • volumeName, dizide volumes tanımlanan addır.
    • mountPath, birimi bağlamak için kapsayıcıdaki yoldur.

Örnek ARM şablonu parçacığı:

{
  "apiVersion": "2022-03-01",
  "type": "Microsoft.App/containerApps",
  "name": "[parameters('containerappName')]",
  "location": "[parameters('location')]",
  "properties": {

    ...

    "template": {
      "revisionSuffix": "myrevision",
      "containers": [
        {
          "name": "main",
          "image": "[parameters('container_image')]",
          "resources": {
            "cpu": 0.5,
            "memory": "1Gi"
          },
          "volumeMounts": [
            {
              "mountPath": "/myempty",
              "volumeName": "myempty"
            }
          ]
        },
        {
          "name": "sidecar",
          "image": "[parameters('sidecar_image')]",
          "resources": {
            "cpu": 0.5,
            "memory": "1Gi"
          },
          "volumeMounts": [
            {
              "mountPath": "/myempty",
              "volumeName": "myempty"
            }
          ]
        }
      ],
      "scale": {
        "minReplicas": 1,
        "maxReplicas": 3
      },
      "volumes": [
        {
          "name": "myempty",
          "storageType": "EmptyDir"
        }
      ]
    }
  }
}

Tam bir örnek için ARM şablonu API belirtimine bakın.

Çoğaltma kapsamlı bir birim oluşturmak ve bunu bir kapsayıcıya bağlamak için Azure portalını kullanarak kapsayıcı uygulamanızın yeni bir düzeltmesini dağıtın.

  1. Azure portalında kapsayıcı uygulamanıza gidin.

  2. Soldaki menüden Düzeltme yönetimi'ni seçin.

  3. Yeni düzeltme oluştur'u seçin.

  4. Birimi bağlamak istediğiniz kapsayıcıyı seçin.

  5. Kapsayıcı bağlamını düzenle bölmesinde Birim bağlamaları sekmesini seçin.

  6. Kısa ömürlü depolama bölümünün altında aşağıdaki bilgileri içeren yeni bir birim oluşturun.

    • Birim adı: Kısa ömürlü birimin adı.
    • Bağlama yolu: Birimi bağlamak için kapsayıcıdaki mutlak yol.
  7. Değişiklikleri kaydetmek ve bağlam bölmesinden çıkmak için Kaydet'i seçin.

  8. Yeni düzeltmeyi oluşturmak için Oluştur'u seçin.

Azure Dosyaları birimi

Azure Dosyalar bir dosya paylaşımını kapsayıcıya birim olarak bağlayabilirsiniz.

Azure Dosyalar depolama aşağıdaki özelliklere sahiptir:

  • Bağlama konumu altında yazılan dosyalar dosya paylaşımında kalıcı olarak kalır.
  • Paylaşımdaki dosyalar bağlama konumu üzerinden kullanılabilir.
  • Başka bir çoğaltma, düzeltme veya kapsayıcı uygulamasında bulunanlar da dahil olmak üzere birden çok kapsayıcı aynı dosya paylaşımını bağlayabilir.
  • Paylaşımı takan tüm kapsayıcılar, başka bir kapsayıcı veya yöntem tarafından yazılan dosyalara erişebilir.
  • Tek bir kapsayıcıya birden fazla Azure Dosyalar birimi bağlanabilir.

Azure Dosyalar hem SMB hem de NFS protokollerini destekler. bir Azure Dosyalar paylaşımını iki protokolden birini kullanarak bağlayabilirsiniz. Ortamda tanımladığınız dosya paylaşımı, depolama hesabındaki dosya paylaşımı tarafından kullanılan protokolle yapılandırılmalıdır.

Not

Azure Container Apps'te NFS paylaşımlarını bağlama desteği önizleme aşamasındadır.

Kapsayıcınızda Azure Dosyalar depolamayı etkinleştirmek için ortamınızı ve kapsayıcı uygulamanızı aşağıdaki gibi ayarlamanız gerekir:

  • Container Apps ortamında bir depolama tanımı oluşturun.
  • NFS kullanıyorsanız ortamınızın özel bir sanal ağ ile yapılandırılması ve depolama hesabının sanal ağdan erişime izin verecek şekilde yapılandırılması gerekir. Daha fazla bilgi için bkz. Azure Dosyalar içindeki NFS dosya paylaşımları.
  • Ortamınız özel bir sanal ağ ile yapılandırılmışsa, alt ağ ile ilişkili ağ güvenlik grubunda (NSG) 445 ve 2049 bağlantı noktalarına izin vermelisiniz.
  • Bir düzeltmede tür AzureFile (SMB) veya NfsAzureFile (NFS) birimi tanımlayın.
  • Düzeltmedeki bir veya daha fazla kapsayıcıda birim bağlaması tanımlayın.
  • Kullanılan Azure Dosyalar depolama hesabına kapsayıcı uygulamanızın sanal ağından erişilebilir olmalıdır. Daha fazla bilgi için bkz . Sanal ağdan erişim verme.

Önkoşullar

Gereksinim Yönergeler
Azure hesabı Hesabınız yoksa ücretsiz bir hesap oluşturun.
Azure Storage hesabı Depolama hesabı oluşturma.
Azure Container Apps ortamı Kapsayıcı uygulamaları ortamı oluşturun.

Yapılandırma

Azure CLI kullanarak bir kapsayıcı uygulamasını Azure Dosyalar birimi bağacak şekilde yapılandırırken, kapsayıcı uygulamanızı oluşturmak veya güncelleştirmek için YAML tanımı kullanmanız gerekir.

SMB dosya paylaşımını bağlama hakkında adım adım öğretici için bkz. Azure Container Apps'te Azure Dosyalar depolama bağlaması oluşturma.

  1. Container Apps ortamınıza bir depolama tanımı ekleyin.

    az containerapp env storage set --name my-env --resource-group my-group \
        --storage-name mystorage \
        --storage-type AzureFile \
        --azure-file-account-name <STORAGE_ACCOUNT_NAME> \
        --azure-file-account-key <STORAGE_ACCOUNT_KEY> \
        --azure-file-share-name <STORAGE_SHARE_NAME> \
        --access-mode ReadWrite
    

    ve <STORAGE_ACCOUNT_KEY> değerini depolama hesabınızın adı ve anahtarıyla değiştirin<STORAGE_ACCOUNT_NAME>. değerini depolama hesabındaki dosya paylaşımının adıyla değiştirin <STORAGE_SHARE_NAME> .

    için --access-mode geçerli değerler şunlardır ReadWrite : ve ReadOnly.

  2. Mevcut bir kapsayıcı uygulamasını dosya paylaşımını bağacak şekilde güncelleştirmek için uygulamanızın belirtimini app.yaml adlı bir YAML dosyasına aktarın.

    az containerapp show -n <APP_NAME> -g <RESOURCE_GROUP_NAME> -o yaml > app.yaml
    
  3. Kapsayıcı uygulama belirtiminizde aşağıdaki değişiklikleri yapın.

    • Kapsayıcı uygulama tanımınızın bölümüne bir volumes dizi template ekleyin ve bir birim tanımlayın. Zaten bir volumes diziniz varsa, diziye yeni bir birim ekleyin.
      • name birim için bir tanımlayıcıdır.
      • içinstorageType, SMB için veya NfsAzureFile NFS için kullanınAzureFile. Bu değer, ortamda tanımladığınız depolama türüyle eşleşmelidir.
      • için storageName, ortamda tanımladığınız depolama alanının adını kullanın.
    • Şablondaki Azure Dosyalar depolamayı bağlamak istediğiniz her kapsayıcı için, kapsayıcı tanımının volumeMounts dizisinde bir birim bağlaması tanımlayın.
      • volumeName, dizide volumes tanımlanan addır.
      • mountPath, birimi bağlamak için kapsayıcıdaki yoldur.
    properties:
      managedEnvironmentId: /subscriptions/<SUBSCRIPTION_ID>/resourceGroups/<RESOURCE_GROUP_NAME>/providers/Microsoft.App/managedEnvironments/<ENVIRONMENT_NAME>
      configuration:
      template:
        containers:
        - image: <IMAGE_NAME>
          name: my-container
          volumeMounts:
          - volumeName: azure-files-volume
            mountPath: /my-files
        volumes:
        - name: azure-files-volume
          storageType: AzureFile
          storageName: mystorage
    
  4. YAML dosyasını kullanarak kapsayıcı uygulamanızı güncelleştirin.

    az containerapp update --name <APP_NAME> --resource-group <RESOURCE_GROUP_NAME> \
        --yaml app.yaml
    

Tam bir örnek için YAML belirtimine bakın.

Aşağıdaki ARM şablonu kod parçacıkları, Container Apps ortamına bir Azure Dosyalar paylaşımı eklemeyi ve bunu bir kapsayıcı uygulamasında kullanmayı gösterir.

  1. Container Apps ortamına bir storages alt kaynak ekleyin.

    {
      "type": "Microsoft.App/managedEnvironments",
      "apiVersion": "2022-03-01",
      "name": "[parameters('environment_name')]",
      "location": "[parameters('location')]",
      "properties": {
        "daprAIInstrumentationKey": "[parameters('dapr_ai_instrumentation_key')]",
        "appLogsConfiguration": {
          "destination": "log-analytics",
          "logAnalyticsConfiguration": {
            "customerId": "[parameters('log_analytics_customer_id')]",
            "sharedKey": "[parameters('log_analytics_shared_key')]"
          }
        }
      },
      "resources": [
        {
          "type": "storages",
          "name": "myazurefiles",
          "apiVersion": "2022-03-01",
          "dependsOn": [
            "[resourceId('Microsoft.App/managedEnvironments', parameters('environment_name'))]"
          ],
          "properties": {
            "azureFile": {
              "accountName": "[parameters('storage_account_name')]",
              "accountKey": "[parameters('storage_account_key')]",
              "shareName": "[parameters('storage_share_name')]",
              "accessMode": "ReadWrite"
            }
          }
        }
      ]
    }
    
  2. Birim ve birim bağlaması eklemek için kapsayıcı uygulaması kaynağını güncelleştirin.

    {
      "apiVersion": "2023-05-01",
      "type": "Microsoft.App/containerApps",
      "name": "[parameters('containerappName')]",
      "location": "[parameters('location')]",
      "properties": {
    
        ...
    
        "template": {
          "revisionSuffix": "myrevision",
          "containers": [
            {
              "name": "main",
              "image": "[parameters('container_image')]",
              "resources": {
                "cpu": 0.5,
                "memory": "1Gi"
              },
              "volumeMounts": [
                {
                  "mountPath": "/myfiles",
                  "volumeName": "azure-files-volume"
                }
              ]
            }
          ],
          "scale": {
            "minReplicas": 1,
            "maxReplicas": 3
          },
          "volumes": [
            {
              "name": "azure-files-volume",
              "storageType": "AzureFile",
              "storageName": "myazurefiles"
            }
          ]
        }
      }
    }
    
    • Kapsayıcı uygulama tanımınızın bölümüne bir volumes dizi template ekleyin ve bir birim tanımlayın. Zaten bir volumes diziniz varsa, diziye yeni bir birim ekleyin.
      • name birim için bir tanımlayıcıdır.
      • içinstorageType, SMB için veya NfsAzureFile NFS için kullanınAzureFile. Bu değer, ortamda tanımladığınız depolama türüyle eşleşmelidir.
      • için storageName, ortamda tanımladığınız depolama alanının adını kullanın.
    • Şablondaki Azure Dosyalar depolamayı bağlamak istediğiniz her kapsayıcı için, kapsayıcı tanımının volumeMounts dizisinde bir birim bağlaması tanımlayın.
      • volumeName, dizide volumes tanımlanan addır.
      • mountPath, birimi bağlamak için kapsayıcıdaki yoldur.

Tam bir örnek için ARM şablonu API belirtimine bakın.

Azure portalında Azure Dosyalar depolama için birim bağlama yapılandırmak için Container Apps ortamınıza bir dosya paylaşımı ekleyin ve ardından yeni bir düzeltme oluşturarak kapsayıcı uygulamanıza birim bağlaması ekleyin.

  1. Azure portalında Container Apps ortamınıza gidin.

  2. Soldaki menüden Azure Dosyalar seçin.

  3. Ekle'yi seçin.

  4. Dosya paylaşımı bağlamı ekle menüsünde aşağıdaki bilgileri girin:

    • Ad: Dosya paylaşımının adı.
    • Depolama hesap adı: Dosya paylaşımını içeren depolama hesabının adı.
    • Depolama hesap anahtarı: Depolama hesabının erişim anahtarı.
    • Dosya paylaşımı: Dosya paylaşımının adı.
    • Erişim modu: Dosya paylaşımının erişim modu. Geçerli değerler "Okuma/Yazma" ve "Salt okunur" değerleridir.
  5. Bağlam bölmesinden çıkmak için Ekle'yi seçin.

  6. Değişiklikleri kaydetmek için Kaydet'i seçin.

  7. Kapsayıcı uygulamanıza gidin.

  8. Soldaki menüden Düzeltme yönetimi'ni seçin.

  9. Yeni düzeltme oluştur'u seçin.

  10. Birimi bağlamak istediğiniz kapsayıcıyı seçin.

  11. Kapsayıcı bağlamını düzenle bölmesinde Birim bağlamaları sekmesini seçin.

  12. Dosya paylaşımları bölümünde aşağıdaki bilgileri içeren yeni bir birim oluşturun.

    • Dosya paylaşımı adı: Eklediğiniz dosya paylaşımı.
    • Bağlama yolu: Birimi bağlamak için kapsayıcıdaki mutlak yol.
  13. Değişiklikleri kaydetmek ve bağlam bölmesinden çıkmak için Kaydet'i seçin.

  14. Yeni düzeltmeyi oluşturmak için Oluştur'u seçin.