Bagikan melalui


Menggunakan pemasangan volume penyimpanan di Azure Container Apps

Aplikasi kontainer memiliki akses ke berbagai jenis penyimpanan. Satu aplikasi dapat memanfaatkan lebih dari satu jenis penyimpanan jika perlu.

Catatan

Hindari menggunakan karakter khusus dalam nama volume untuk mencegah kegagalan penyebaran. Misalnya, volume bernama credentials.json berisi karakter khusus (.) yang menghasilkan kesalahan penyebaran.

Jenis penyimpanan Deskripsi Keteguhan Contoh penggunaan
Penyimpanan berskala kontainer Penyimpanan sementara tersedia untuk kontainer yang sedang berjalan Data tersedia hingga kontainer dimatikan Menulis cache aplikasi lokal.
Penyimpanan yang terlingkup untuk replika Penyimpanan sementara untuk berbagi file antar kontainer dalam replika yang sama Data tersedia hingga replika dimatikan Kontainer aplikasi utama, yang menulis file log, diproses oleh kontainer sidecar.
Azure Files Penyimpanan permanen Data disimpan ke Azure Files Menulis file ke berbagi file untuk membuat data dapat diakses oleh sistem lain.

Catatan

Azure Container Apps tidak mendukung pemasangan berbagi file dari Azure NetApp Files atau Azure Blob Storage.

Penyimpanan Sementara

Aplikasi kontainer dapat membaca dan menulis data sementara ke penyimpanan sementara. Penyimpanan ephemeral dapat dibatasi pada kontainer atau replika. Jumlah total penyimpanan yang berbasis kontainer dan yang berbasis replika yang tersedia bagi setiap replika tergantung pada jumlah total vCPU yang dialokasikan untuk replika tersebut.

vCPU Total penyimpanan sementara
0,25 atau lebih rendah 1 GiB
0,5 atau lebih rendah 2 GiB
1 atau lebih rendah 4 GiB
Lebih dari 1 8 GiB

Penyimpanan yang dibatasi oleh cakupan kontainer.

Kontainer dapat menulis ke sistem filenya sendiri.

Penyimpanan sistem file kontainer memiliki karakteristik berikut:

  • Penyimpanan bersifat sementara dan menghilang saat kontainer dimatikan atau dihidupkan ulang.
  • Hanya proses yang berjalan dalam kontainer saat ini yang dapat melihat file yang ditulis ke penyimpanan ini.

Penyimpanan dengan cakupan replika

Anda dapat memasang volume sementara yang setara dengan EmptyDir (direktori kosong) di Kubernetes. Penyimpanan ini dibatasi hanya untuk satu replika. EmptyDir Gunakan volume untuk berbagi data antar kontainer dalam replika yang sama.

Penyimpanan dengan ruang lingkup replika memiliki karakteristik berikut:

  • File bertahan selama masa pakai replika.
    • Jika sebuah kontainer dalam replika dimulai ulang, file di dalam volume akan tetap ada.
  • Setiap init atau kontainer aplikasi dalam replika dapat menggunakan volume yang sama.
  • Kontainer dapat memasang beberapa volume EmptyDir.

Untuk mengonfigurasi penyimpanan yang tercakup replika, pertama-tama tentukan EmptyDir volume dalam revisi. Kemudian tentukan mount volume pada satu atau beberapa kontainer dalam revisi.

Prasyarat

Persyaratan Petunjuk
Akun Azure Jika Anda tidak memilikinya, buat akun secara gratis.
Lingkungan Azure Container Apps Buat lingkungan aplikasi 'container apps'.
Konfigurasi identitas terkelola Pastikan identitas terkelola yang terkait dengan lingkungan Container Apps Anda diberi peran yang sesuai untuk akses mengakses Azure Files.

Konfigurasi

Saat mengonfigurasi penyimpanan cakupan replika dengan menggunakan Azure CLI, Anda harus menggunakan definisi YAML untuk membuat atau memperbarui aplikasi kontainer Anda.

  1. Untuk memperbarui aplikasi kontainer yang ada untuk menggunakan penyimpanan cakupan replika, ekspor spesifikasi aplikasi Anda ke file YAML bernama app.yaml.

    az containerapp show -n <APP_NAME> -g <RESOURCE_GROUP_NAME> -o yaml > app.yaml
    
  2. Buat perubahan berikut pada spesifikasi aplikasi kontainer Anda.

    • volumes Tambahkan array ke bagian template definisi aplikasi kontainer Anda dan tentukan volume. Jika Anda sudah memiliki volumes array, tambahkan volume baru ke array.
      • name adalah identifikasi untuk volume.
      • Gunakan EmptyDir sebagai storageType.
    • Untuk setiap kontainer dalam templat yang ingin Anda pasang volumenya, tentukan pemasangan volume dalam volumeMounts array definisi kontainer.
      • volumeName adalah nama yang ditentukan dalam volumes array.
      • mountPath adalah jalur dalam kontainer untuk memasang volume.
    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. Perbarui aplikasi kontainer Anda dengan menggunakan file YAML.

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

Untuk contoh lengkapnya, lihat spesifikasi YAML.

Untuk membuat volume dengan cakupan replika dan memasangnya ke dalam kontainer, buat perubahan berikut pada resource aplikasi container dalam template ARM:

  • volumes Tambahkan array ke bagian template definisi aplikasi kontainer Anda dan tentukan volume. Jika Anda sudah memiliki volumes array, tambahkan volume baru ke array.
    • name adalah identifikasi untuk volume.
    • Gunakan EmptyDir sebagai storageType.
  • Untuk setiap kontainer dalam templat yang ingin Anda pasang volumenya, tentukan pemasangan volume dalam volumeMounts array definisi kontainer.
    • volumeName adalah nama yang ditentukan dalam volumes array.
    • mountPath adalah jalur dalam kontainer untuk memasang volume.

Contoh cuplikan templat ARM:

{
  "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"
        }
      ]
    }
  }
}

Lihat spesifikasi API templat ARM untuk contoh lengkapnya.

Untuk membuat volume dengan cakupan replika dan memasangnya di dalam kontainer, terapkan revisi baru aplikasi kontainer Anda menggunakan Microsoft Azure Portal.

  1. Di portal Microsoft Azure, buka aplikasi kontainer Anda.

  2. Pilih Manajemen revisi di menu sebelah kiri.

  3. Pilih Buat revisi baru.

  4. Pilih kontainer tempat Anda ingin memasang volume.

  5. Di panel konteks Edit kontainer, pilih tab Pemasangan volume.

  6. Di bawah bagian Penyimpanan Ephemeral, buat volume baru dengan informasi berikut:

    • Nama volume: Nama untuk volume ephemeral.
    • Jalur pemasangan: Jalur absolut dalam kontainer guna pemasangan volume.
  7. Pilih Simpan untuk menyimpan perubahan dan keluar dari panel konteks.

  8. Pilih Buat untuk membuat revisi baru.

Volume Berkas Azure

Anda dapat memasang file share dari Azure Files sebagai volume dalam wadah.

Penyimpanan Azure Files memiliki karakteristik berikut:

  • File yang dibuat di lokasi pemasangan disimpan ke dalam berbagi file.
  • File dalam berbagi tersedia melalui lokasi pemasangan.
  • Beberapa kontainer dapat memasang berbagi file yang sama, termasuk yang ada di replika, revisi, atau aplikasi kontainer lain.
  • Semua kontainer yang memasang berbagi dapat mengakses file yang ditulis oleh kontainer atau metode lain.
  • Lebih dari satu volume Azure Files dapat dipasang dalam satu kontainer.

Azure Files mendukung protokol SMB (Server Message Block) dan NFS (Network File System). Anda dapat memasang berkas berbagi Azure Files dengan salah satu protokol. Berbagi file yang Anda tentukan di lingkungan harus dikonfigurasi dengan protokol yang sama yang digunakan oleh berbagi file di akun penyimpanan.

Untuk mengaktifkan penyimpanan Azure Files di kontainer, Anda perlu menyiapkan lingkungan dan aplikasi kontainer Anda sebagai berikut:

  • Buat definisi penyimpanan di lingkungan Container Apps.
  • Jika Anda menggunakan NFS, lingkungan Anda harus dikonfigurasi dengan VNet kustom dan akun penyimpanan harus dikonfigurasi untuk mengizinkan akses dari VNet. Untuk informasi selengkapnya, lihat Berbagi file NFS di Azure Files .
  • Jika lingkungan Anda dikonfigurasi dengan VNet kustom, Anda harus mengizinkan port 445 dan 2049 dalam kelompok keamanan jaringan (NSG) yang terkait dengan subnet.
  • Tentukan volume jenis AzureFile (SMB) atau NfsAzureFile (NFS) dalam revisi.
  • Tentukan pemasangan volume penyimpanan dalam satu atau beberapa kontainer pada revisi.
  • Akun penyimpanan Azure Files yang digunakan harus dapat diakses dari jaringan virtual aplikasi kontainer Anda. Untuk informasi selengkapnya, lihat Memberikan akses dari jaringan virtual.

Prasyarat

Persyaratan Petunjuk
Akun Azure Jika Anda tidak memilikinya, buat akun secara gratis.
Akun Azure Storage Membuat akun penyimpanan.
Lingkungan Azure Container Apps Buat lingkungan aplikasi 'container apps'.

Konfigurasi

Saat mengonfigurasi aplikasi kontainer untuk memasang volume Azure Files dengan menggunakan Azure CLI, Anda harus menggunakan definisi YAML untuk membuat atau memperbarui aplikasi kontainer Anda.

Untuk tutorial langkah demi langkah tentang pemasangan berbagi file SMB, lihat Membuat pemasangan penyimpanan Azure Files di Azure Container Apps.

  1. Tambahkan definisi penyimpanan ke lingkungan Container Apps Anda.

    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
    

    Ganti <STORAGE_ACCOUNT_NAME> dan <STORAGE_ACCOUNT_KEY> dengan nama dan kunci akun penyimpanan Anda. Ganti <STORAGE_SHARE_NAME> dengan nama berbagi file di akun penyimpanan.

    Nilai yang valid untuk --access-mode adalah ReadWrite dan ReadOnly.

  2. Untuk memperbarui aplikasi kontainer yang ada untuk memasang berbagi file, ekspor spesifikasi aplikasi Anda ke file YAML bernama app.yaml.

    az containerapp show -n <APP_NAME> -g <RESOURCE_GROUP_NAME> -o yaml > app.yaml
    
  3. Buat perubahan berikut pada spesifikasi aplikasi kontainer Anda.

    • volumes Tambahkan array ke bagian template definisi aplikasi kontainer Anda dan tentukan volume. Jika Anda sudah memiliki volumes array, tambahkan volume baru ke array.
      • name adalah identifikasi untuk volume.
      • Untuk storageType, gunakan AzureFile untuk SMB, atau NfsAzureFile untuk NFS. Nilai ini harus cocok dengan jenis penyimpanan yang Anda tentukan di lingkungan.
      • Untuk storageName, gunakan nama penyimpanan yang Anda tentukan di lingkungan.
      • mountOptions adalah string opsi pemasangan yang dipisahkan koma. Untuk informasi selengkapnya, lihat Menggunakan pengaturan mountOptions di Azure Files.
      • Daftar secrets adalah daftar rahasia yang akan dipasang ke dalam volume. Untuk informasi selengkapnya, lihat Memasang rahasia dalam volume.
    • Untuk setiap kontainer dalam templat yang ingin Anda mount penyimpanan Azure Files, tentukan volume mount dalam array volumeMounts dari definisi kontainer.
      • volumeName adalah nama yang ditentukan dalam volumes array.
      • mountPath adalah jalur dalam kontainer untuk memasang volume.
      • subPath adalah jalur di dalam volume yang akan dilampirkan. Jika Anda tidak menentukan nilai ini, akar volume akan dipasang. Untuk informasi selengkapnya, lihat (#sub-jalur).
    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
            subPath: my-sub-path
        volumes:
        - name: azure-files-volume
          storageType: AzureFile
          storageName: mystorage
    
  4. Perbarui aplikasi kontainer Anda dengan menggunakan file YAML.

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

Untuk contoh lengkapnya, lihat spesifikasi YAML.

Cuplikan templat ARM berikut menunjukkan cara menambahkan berbagi Azure Files ke lingkungan Container Apps dan menggunakannya di aplikasi kontainer.

  1. storages Tambahkan sumber daya anak ke lingkungan Container Apps.

    {
      "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. Perbarui sumber daya aplikasi kontainer untuk menambahkan volume dan penempatan volume.

    {
      "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",
                  "subPath": "my-sub-path"
                }
              ]
            }
          ],
          "scale": {
            "minReplicas": 1,
            "maxReplicas": 3
          },
          "volumes": [
            {
              "name": "azure-files-volume",
              "storageType": "AzureFile",
              "storageName": "myazurefiles"
            }
          ]
        }
      }
    }
    
    • volumes Tambahkan array ke bagian template definisi aplikasi kontainer Anda dan tentukan volume. Jika Anda sudah memiliki volumes array, tambahkan volume baru ke array.
      • name adalah identifikasi untuk volume.
      • Untuk storageType, gunakan AzureFile untuk SMB, atau NfsAzureFile untuk NFS. Nilai ini harus cocok dengan jenis penyimpanan yang Anda tentukan di lingkungan.
      • Untuk storageName, gunakan nama penyimpanan yang Anda tentukan di lingkungan.
      • mountOptions adalah string opsi pemasangan yang dipisahkan koma. Untuk informasi selengkapnya, lihat Menggunakan pengaturan mountOptions di Azure Files.
      • Daftar secrets adalah daftar rahasia yang akan dipasang ke dalam volume. Untuk informasi selengkapnya, lihat Mengintegrasikan rahasia dalam volume.
    • Untuk setiap kontainer dalam templat yang ingin Anda mount penyimpanan Azure Files, tentukan volume mount dalam array volumeMounts dari definisi kontainer.
      • volumeName adalah nama yang ditentukan dalam volumes array.
      • mountPath adalah jalur dalam kontainer untuk memasang volume.
      • subPath (opsional) adalah jalur dalam volume yang akan dipasang. Jika Anda tidak menentukannya, akar volume akan dipasang. Untuk informasi selengkapnya, lihat (#sub-path).

Lihat spesifikasi API templat ARM untuk contoh lengkapnya.

Untuk mengonfigurasi mount volume untuk penyimpanan Azure Files di portal Azure, tambahkan file share ke lingkungan Container Apps Anda lalu tambahkan mount volume ke aplikasi kontainer Anda dengan membuat revisi baru.

  1. Di portal Azure, navigasikan ke lingkungan Aplikasi Kontainer Anda.

  2. Di panel navigasi, di bawah Pengaturan, pilih Azure Files.

  3. Pilih Tambahkan.

  4. Pilih Blok Pesan Server (SMB) atau Sistem File Jaringan (NFS), bergantung pada protokol yang digunakan oleh berbagi file Anda.

  5. Di panel Tambahkan konteks berbagi file, masukkan informasi berikut ini:

    • Nama: Nama untuk berbagi file.
    • Nama akun penyimpanan: Nama akun penyimpanan yang berisi berbagi file.
    • Kunci akun penyimpanan: Kunci akses untuk akun penyimpanan.
    • Berbagi Berkas: Nama berbagi berkas.
    • Mode Akses: Pengaturan akses untuk berbagi file. Nilai yang valid adalah Baca/Tulis dan Baca saja.
  6. Pilih Tambahkan untuk keluar dari panel konteks.

  7. Pilih Simpan untuk menerapkan perubahan.

  8. Buka aplikasi kontainer Anda.

  9. Di panel navigasi, di bawah Aplikasi, pilih Revisi dan replika.

  10. Pilih Buat revisi baru.

  11. Di halaman Buat dan sebarkan revisi baru, pilih tab Volume .

  12. Pilih Tambahkan.

  13. Di panel Tambahkan konteks volume , atur nilai berikut.

    • Volume jenis: Volume file Azure.
    • Nama: Masukkan nama volume.
    • Nama berbagi file: Pilih berbagi file yang telah Anda buat sebelumnya.
    • Opsi pemasangan: Secara opsional, masukkan string opsi pemasangan yang dipisahkan koma. Untuk informasi selengkapnya, lihat Menggunakan pengaturan mountOptions di Azure Files.
  14. Pilih Tambahkan untuk keluar dari panel konteks.

  15. Di halaman Buat dan deploy revisi baru, pilih tab Kontainer.

  16. Pilih kontainer tempat Anda ingin memasang volume.

  17. Di panel konteks Edit kontainer, pilih tab Pemasangan volume.

  18. Di bawah Nama volume, pilih volume yang Anda buat sebelumnya.

  19. Di Jalur pemasangan, masukkan jalur absolut dalam kontainer untuk memasang volume.

  20. Di Sub jalur (opsional), masukkan jalur dalam volume yang akan dipasang. Jika Anda tidak menentukan nilai ini, akar volume akan dipasang. Untuk informasi selengkapnya, lihat (#sub-path).

  21. Pilih Simpan untuk menyimpan perubahan dan keluar dari panel konteks.

  22. Pilih Buat untuk membuat revisi baru.

Sub jalur

Saat memasang file share dari Azure Files, Anda dapat menentukan path pemasangan dan subpath.

  • Jalur pemasangan: Jalur dalam kontainer tempat Anda ingin memasang volume.
  • Sub jalur: Jalur dalam volume yang ingin Anda pasang.

Sub jalur bersifat opsional. Jika Anda tidak menentukan sub jalur, akar volume akan dipasang.

Subjalur merupakan jalur relatif dari root volume. Jangan mulai subpath dengan /. Jika Anda menentukan sub jalur yang dimulai dengan /, aplikasi kontainer Anda mungkin tidak dimulai. Misalnya, my-volume-folder adalah sub jalur yang valid, tetapi /my-volume-folder tidak.

Sub jalur dapat merujuk ke folder atau file dalam volume.

  • Jika sub jalur mengacu pada folder, jalur pemasangan harus merujuk ke folder kosong dalam kontainer.

  • Jika sub jalur mengacu pada file, jalur pemasangan harus merujuk ke file yang belum ada di kontainer.

    Misalnya, misalkan sub jalur adalah my-volume-folder/my-volume-file.txt, dan jalur pemasangan adalah /my-container-folder/my-container-file. Folder /my-container-folder harus sudah ada dalam kontainer tetapi belum berisi file my-container-file.txt.

Sistem mengabaikan garis miring di ujung sub jalur.