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.
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
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
dizitemplate
ekleyin ve bir birim tanımlayın. Zaten birvolumes
diziniz varsa, diziye yeni bir birim ekleyin.name
birim için bir tanımlayıcıdır.- olarak
storageType
kullanı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
, dizidevolumes
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
- Kapsayıcı uygulama tanımınızın bölümüne bir
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
Ç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
dizitemplate
ekleyin ve bir birim tanımlayın. Zaten birvolumes
diziniz varsa, diziye yeni bir birim ekleyin.name
birim için bir tanımlayıcıdır.- olarak
storageType
kullanı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
, dizidevolumes
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"
}
]
}
}
}
Ç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.
Azure portalında kapsayıcı uygulamanıza gidin.
Soldaki menüden Düzeltme yönetimi'ni seçin.
Yeni düzeltme oluştur'u seçin.
Birimi bağlamak istediğiniz kapsayıcıyı seçin.
Kapsayıcı bağlamını düzenle bölmesinde Birim bağlamaları sekmesini seçin.
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.
Değişiklikleri kaydetmek ve bağlam bölmesinden çıkmak için Kaydet'i seçin.
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) veyaNfsAzureFile
(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.
- NFS kullanıyorsanız güvenli aktarımı da devre dışı bırakmanız gerekir. Daha fazla bilgi için bu öğreticideki Azure Dosyalar NFS dosya paylaşımları ve NFS Azure dosya paylaşımı oluşturma bölümüne bakın.
Ö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.
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ırReadWrite
: veReadOnly
.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
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
dizitemplate
ekleyin ve bir birim tanımlayın. Zaten birvolumes
diziniz varsa, diziye yeni bir birim ekleyin.name
birim için bir tanımlayıcıdır.- için
storageType
, SMB için veyaNfsAzureFile
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
, dizidevolumes
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
- Kapsayıcı uygulama tanımınızın bölümüne bir
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
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.
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" } } } ] }
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
dizitemplate
ekleyin ve bir birim tanımlayın. Zaten birvolumes
diziniz varsa, diziye yeni bir birim ekleyin.name
birim için bir tanımlayıcıdır.- için
storageType
, SMB için veyaNfsAzureFile
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
, dizidevolumes
tanımlanan addır.mountPath
, birimi bağlamak için kapsayıcıdaki yoldur.
- Kapsayıcı uygulama tanımınızın bölümüne bir
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.
Azure portalında Container Apps ortamınıza gidin.
Soldaki menüden Azure Dosyalar seçin.
Ekle'yi seçin.
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.
Bağlam bölmesinden çıkmak için Ekle'yi seçin.
Değişiklikleri kaydetmek için Kaydet'i seçin.
Kapsayıcı uygulamanıza gidin.
Soldaki menüden Düzeltme yönetimi'ni seçin.
Yeni düzeltme oluştur'u seçin.
Birimi bağlamak istediğiniz kapsayıcıyı seçin.
Kapsayıcı bağlamını düzenle bölmesinde Birim bağlamaları sekmesini seçin.
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.
Değişiklikleri kaydetmek ve bağlam bölmesinden çıkmak için Kaydet'i seçin.
Yeni düzeltmeyi oluşturmak için Oluştur'u seçin.