Menggunakan pemasangan 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 | Persistensi | Contoh penggunaan |
---|---|---|---|
Penyimpanan cakupan kontainer | Penyimpanan Ephemeral tersedia untuk kontainer yang sedang berjalan | Data tersedia hingga kontainer dimatikan | Menulis cache aplikasi lokal. |
Penyimpanan cakupan replika | Penyimpanan sementara untuk berbagi file antar kontainer dalam replika yang sama | Data tersedia hingga replika dimatikan | Kontainer aplikasi utama yang menulis file log yang diproses 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 Ephemeral
Aplikasi kontainer dapat membaca dan menulis data sementara ke penyimpanan sementara. Penyimpanan Ephemeral dapat dicakup ke kontainer atau replika. Jumlah total penyimpanan cakupan kontainer dan cakupan replika yang tersedia untuk setiap replika tergantung pada jumlah total vCPU yang dialokasikan untuk replika.
vCPU | Total penyimpanan ephemeral |
---|---|
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 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.
- File yang ditulis ke penyimpanan ini hanya terlihat oleh proses yang berjalan dalam kontainer saat ini.
Penyimpanan cakupan replika
Anda dapat memasang volume sementara sementara yang setara dengan EmptyDir (direktori kosong) di Kubernetes. Penyimpanan ini dicakup ke satu replika.
EmptyDir
Gunakan volume untuk berbagi data antar kontainer dalam replika yang sama.
Penyimpanan dengan cakupan replika memiliki karakteristik berikut:
- File dipertahankan selama masa pakai replika.
- Jika kontainer dalam replika dimulai ulang, file dalam volume tetap ada.
- Setiap init atau kontainer aplikasi dalam replika dapat memasang volume yang sama.
- Kontainer dapat memasang beberapa
EmptyDir
volume.
Untuk mengonfigurasi penyimpanan yang tercakup replika, pertama-tama tentukan EmptyDir
volume dalam revisi. Kemudian tentukan pemasangan volume dalam 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 kontainer. |
Konfigurasi
Saat mengonfigurasi penyimpanan cakupan replika menggunakan Azure CLI, Anda harus menggunakan definisi YAML untuk membuat atau memperbarui aplikasi kontainer Anda.
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
Buat perubahan berikut pada spesifikasi aplikasi kontainer Anda.
-
volumes
Tambahkan array ke bagiantemplate
definisi aplikasi kontainer Anda dan tentukan volume. Jika Anda sudah memilikivolumes
array, tambahkan volume baru ke array.-
name
adalah pengidentifikasi untuk volume. - Gunakan
EmptyDir
sebagaistorageType
.
-
- Untuk setiap kontainer dalam templat yang ingin Anda pasang volumenya, tentukan pemasangan volume dalam
volumeMounts
array definisi kontainer.-
volumeName
adalah nama yang ditentukan dalamvolumes
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
-
Perbarui aplikasi kontainer Anda menggunakan file YAML.
az containerapp update --name <APP_NAME> --resource-group <RESOURCE_GROUP_NAME> \ --yaml app.yaml
Lihat spesifikasi YAML untuk contoh lengkap.
Untuk membuat volume cakupan replika dan memasangnya dalam kontainer, buat perubahan berikut pada sumber daya aplikasi kontainer dalam templat ARM:
-
volumes
Tambahkan array ke bagiantemplate
definisi aplikasi kontainer Anda dan tentukan volume. Jika Anda sudah memilikivolumes
array, tambahkan volume baru ke array.-
name
adalah pengidentifikasi untuk volume. - Gunakan
EmptyDir
sebagaistorageType
.
-
- Untuk setiap kontainer dalam templat yang ingin Anda pasang volumenya, tentukan pemasangan volume dalam
volumeMounts
array definisi kontainer.-
volumeName
adalah nama yang ditentukan dalamvolumes
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 cakupan replika dan memasangnya dalam kontainer, sebarkan revisi baru aplikasi kontainer Anda menggunakan portal Azure.
Di portal Azure, navigasikan ke aplikasi kontainer Anda.
Pilih Manajemen revisi di menu sebelah kiri.
Pilih Buat revisi baru.
Pilih kontainer tempat Anda ingin memasang volume.
Di panel Edit konteks kontainer , pilih tab Pemasangan volume.
Di bawah bagian Penyimpanan Ephemeral, buat volume baru dengan informasi berikut.
- Nama volume: Nama untuk volume ephemeral.
- Jalur pemasangan: Jalur absolut dalam kontainer untuk memasang volume.
Pilih Simpan untuk menyimpan perubahan dan keluar dari panel konteks.
Pilih Buat untuk membuat revisi baru.
Volume Azure Files
Anda dapat memasang berbagi file dari Azure Files sebagai volume dalam kontainer.
Penyimpanan Azure Files memiliki karakteristik berikut:
- File yang ditulis di bawah lokasi pemasangan dipertahankan ke 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 berbagi Azure Files menggunakan salah satu protokol. Berbagi file yang Anda tentukan di lingkungan harus dikonfigurasi dengan protokol yang sama yang digunakan oleh berbagi file di akun penyimpanan.
Catatan
Dukungan untuk memasang berbagi NFS di Azure Container Apps sedang dalam pratinjau.
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) atauNfsAzureFile
(NFS) dalam revisi. - Tentukan pemasangan volume dalam satu atau beberapa kontainer dalam 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.
- Jika Anda menggunakan NFS, Anda juga harus menonaktifkan transfer aman. Untuk informasi selengkapnya, lihat berbagi file NFS di Azure Files dan bagian Membuat berbagi file NFS Azure dalam tutorial ini.
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 kontainer. |
Konfigurasi
Saat mengonfigurasi aplikasi kontainer untuk memasang volume Azure Files 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.
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
adalahReadWrite
danReadOnly
.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
Buat perubahan berikut pada spesifikasi aplikasi kontainer Anda.
-
volumes
Tambahkan array ke bagiantemplate
definisi aplikasi kontainer Anda dan tentukan volume. Jika Anda sudah memilikivolumes
array, tambahkan volume baru ke array.-
name
adalah pengidentifikasi untuk volume. - Untuk
storageType
, gunakanAzureFile
untuk SMB, atauNfsAzureFile
untuk NFS. Nilai ini harus cocok dengan jenis penyimpanan yang Anda tentukan di lingkungan. - Untuk
storageName
, gunakan nama penyimpanan yang Anda tentukan di lingkungan.
-
- Untuk setiap kontainer dalam templat yang ingin Anda pasang penyimpanan Azure Files, tentukan pemasangan volume dalam
volumeMounts
array definisi kontainer.-
volumeName
adalah nama yang ditentukan dalamvolumes
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: 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
-
Perbarui aplikasi kontainer Anda menggunakan file YAML.
az containerapp update --name <APP_NAME> --resource-group <RESOURCE_GROUP_NAME> \ --yaml app.yaml
Lihat spesifikasi YAML untuk contoh lengkap.
Cuplikan templat ARM berikut menunjukkan cara menambahkan berbagi Azure Files ke lingkungan Container Apps dan menggunakannya di aplikasi kontainer.
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" } } } ] }
Perbarui sumber daya aplikasi kontainer untuk menambahkan volume dan pemasangan 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" } ] } ], "scale": { "minReplicas": 1, "maxReplicas": 3 }, "volumes": [ { "name": "azure-files-volume", "storageType": "AzureFile", "storageName": "myazurefiles" } ] } } }
-
volumes
Tambahkan array ke bagiantemplate
definisi aplikasi kontainer Anda dan tentukan volume. Jika Anda sudah memilikivolumes
array, tambahkan volume baru ke array.-
name
adalah pengidentifikasi untuk volume. - Untuk
storageType
, gunakanAzureFile
untuk SMB, atauNfsAzureFile
untuk NFS. Nilai ini harus cocok dengan jenis penyimpanan yang Anda tentukan di lingkungan. - Untuk
storageName
, gunakan nama penyimpanan yang Anda tentukan di lingkungan.
-
- Untuk setiap kontainer dalam templat yang ingin Anda pasang penyimpanan Azure Files, tentukan pemasangan volume dalam
volumeMounts
array definisi kontainer.-
volumeName
adalah nama yang ditentukan dalamvolumes
array. -
mountPath
adalah jalur dalam kontainer untuk memasang volume.
-
-
Lihat spesifikasi API templat ARM untuk contoh lengkapnya.
Untuk mengonfigurasi pemasangan volume untuk penyimpanan Azure Files di portal Azure, tambahkan berbagi file ke lingkungan Container Apps Anda lalu tambahkan pemasangan volume ke aplikasi kontainer Anda dengan membuat revisi baru.
Di portal Azure, navigasikan ke lingkungan Aplikasi Kontainer Anda.
Di panel navigasi, di bawah Pengaturan, pilih Azure Files.
Pilih Tambahkan.
Pilih Blok Pesan Server (SMB) atau Sistem File Jaringan (NFS), bergantung pada protokol yang digunakan oleh berbagi file Anda.
Di panel Tambahkan konteks berbagi file, masukkan informasi berikut ini:
Pilih Tambahkan untuk keluar dari panel konteks.
Pilih Simpan untuk menerapkan perubahan.
Navigasi ke aplikasi kontainer Anda.
Di panel navigasi, di bawah Aplikasi, pilih Revisi dan replika.
Pilih Buat revisi baru.
Di halaman Buat dan sebarkan revisi baru, pilih tab Volume .
Pilih Tambahkan.
Di panel Tambahkan konteks volume , atur yang berikut ini.
- Jenis volume: Volume file Azure.
- Nama: Masukkan nama volume.
- Nama berbagi file: Pilih berbagi file yang Anda buat sebelumnya.
Pilih Tambahkan untuk keluar dari panel konteks.
Di halaman Buat dan reploy revisi baru, pilih tab Kontainer .
Pilih kontainer tempat Anda ingin memasang volume.
Di panel Edit konteks kontainer , pilih tab Pemasangan volume.
Di bawah Nama volume, pilih volume yang Anda buat sebelumnya.
Di Jalur pemasangan, masukkan jalur absolut dalam kontainer untuk memasang volume.
Pilih Simpan untuk menyimpan perubahan dan keluar dari panel konteks.
Pilih Buat untuk membuat revisi baru.