Použití připojení úložiště v Azure Container Apps
Aplikace typu kontejner má přístup k různým typům úložiště. Jedna aplikace může v případě potřeby využívat více než jeden typ úložiště.
Poznámka:
Nepoužívejte speciální znaky v názvech svazků, abyste zabránili selháním nasazení. Například svazek s názvem credentials.json
obsahuje speciální znak (.
), což vede k chybě nasazení.
Typ úložiště | Popis | Uchování | Příklad využití |
---|---|---|---|
Úložiště s oborem kontejneru | Dočasné úložiště dostupné pro spuštěný kontejner | Data jsou k dispozici, dokud se kontejner nevypnou. | Zápis místní mezipaměti aplikací |
Úložiště v rozsahu repliky | Dočasné úložiště pro sdílení souborů mezi kontejnery ve stejné replice | Data jsou k dispozici, dokud se replika nevypnou. | Hlavní kontejner aplikace zapisuje soubory protokolu, které zpracovává kontejner sajdkáře. |
Azure Files | Trvalé úložiště | Data se uchovávají ve službě Azure Files. | Zápis souborů do sdílené složky, aby byla data přístupná jinými systémy. |
Poznámka:
Azure Container Apps nepodporuje připojení sdílených složek z Azure NetApp Files nebo Azure Blob Storage.
Dočasné úložiště
Aplikace kontejneru může číst a zapisovat dočasná data do dočasného úložiště. Dočasné úložiště může být vymezeno na kontejner nebo repliku. Celkové množství úložiště s oborem kontejneru a úložiště s rozsahem repliky dostupné pro každou repliku závisí na celkovém počtu virtuálních procesorů přidělených replikě.
Počet vCPU | Celkové dočasné úložiště |
---|---|
0,25 nebo nižší | 1 GiB |
0,5 nebo nižší | 2 GiB |
1 nebo nižší | 4 GiB |
Více než 1 | 8 GiB |
Úložiště s oborem kontejneru
Kontejner může zapisovat do vlastního systému souborů.
Úložiště systému souborů kontejneru má následující charakteristiky:
- Úložiště je dočasné a zmizí, když se kontejner vypne nebo restartuje.
- Soubory zapsané do tohoto úložiště jsou viditelné pouze pro procesy spuštěné v aktuálním kontejneru.
Úložiště v rozsahu repliky
Dočasný dočasný svazek, který je ekvivalentní prázdnému adresáři (EmptyDir ) v Kubernetes, můžete připojit dočasný dočasný svazek. Toto úložiště je omezené na jednu repliku.
EmptyDir
Ke sdílení dat mezi kontejnery ve stejné replice použijte svazek.
Úložiště v oboru repliky má následující charakteristiky:
- Soubory se uchovávají po celou dobu životnosti repliky.
- Pokud se kontejner v replice restartuje, zůstanou soubory ve svazku.
- Všechny inicializační kontejnery nebo kontejnery aplikací v replice můžou připojit stejný svazek.
- Kontejner může připojit více
EmptyDir
svazků.
Pokud chcete nakonfigurovat úložiště s oborem repliky, nejprve definujte EmptyDir
svazek v revizi. Pak definujte připojení svazku v jednom nebo více kontejnerech v revizi.
Požadavky
Požadavek | Pokyny |
---|---|
Účet Azure | Pokud ho nemáte, vytvořte si účet zdarma. |
Prostředí Azure Container Apps | Vytvořte prostředí kontejnerových aplikací. |
Konfigurace
Při konfiguraci úložiště s rozsahem replik pomocí Azure CLI musíte k vytvoření nebo aktualizaci aplikace kontejneru použít definici YAML.
Pokud chcete aktualizovat existující aplikaci kontejneru tak, aby používala úložiště s oborem repliky, exportujte specifikaci aplikace do souboru YAML s názvem app.yaml.
az containerapp show -n <APP_NAME> -g <RESOURCE_GROUP_NAME> -o yaml > app.yaml
Proveďte následující změny specifikace vaší aplikace kontejneru.
-
volumes
Přidejte pole dotemplate
části definice aplikace kontejneru a definujte svazek. Pokud už pole mátevolumes
, přidejte do pole nový svazek.- Jedná se
name
o identifikátor svazku. - Slouží
EmptyDir
jakostorageType
.
- Jedná se
- Pro každý kontejner v šabloně, kterou chcete připojit svazek, definujte připojení svazku v
volumeMounts
poli definice kontejneru.- Jedná se
volumeName
o název definovaný vvolumes
poli. - Je to
mountPath
cesta v kontejneru pro připojení svazku.
- Jedná se
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
-
Aktualizujte aplikaci kontejneru pomocí souboru YAML.
az containerapp update --name <APP_NAME> --resource-group <RESOURCE_GROUP_NAME> \ --yaml app.yaml
Úplný příklad najdete ve specifikaci YAML.
Pokud chcete vytvořit svazek s vymezeným replikou a připojit ho do kontejneru, proveďte následující změny prostředku aplikací kontejnerů v šabloně ARM:
-
volumes
Přidejte pole dotemplate
části definice aplikace kontejneru a definujte svazek. Pokud už pole mátevolumes
, přidejte do pole nový svazek.- Jedná se
name
o identifikátor svazku. - Slouží
EmptyDir
jakostorageType
.
- Jedná se
- Pro každý kontejner v šabloně, kterou chcete připojit svazek, definujte připojení svazku v
volumeMounts
poli definice kontejneru.- Jedná se
volumeName
o název definovaný vvolumes
poli. - Je to
mountPath
cesta v kontejneru pro připojení svazku.
- Jedná se
Příklad fragmentu šablony 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"
}
]
}
}
}
Úplný příklad najdete ve specifikaci rozhraní API šablony ARM.
Pokud chcete vytvořit svazek s vymezeným replikou a připojit ho do kontejneru, nasaďte novou revizi aplikace kontejneru pomocí webu Azure Portal.
Na webu Azure Portal přejděte do aplikace kontejneru.
V nabídce vlevo vyberte Správa revizí.
Vyberte Vytvořit novou revizi.
Vyberte kontejner, do kterého chcete svazek připojit.
V podokně Upravit kontext kontejneru vyberte kartu Připojení svazku.
V části Dočasné úložiště vytvořte nový svazek s následujícími informacemi.
- Název svazku: Název dočasného svazku.
- Cesta k připojení: Absolutní cesta v kontejneru pro připojení svazku.
Výběrem možnosti Uložit uložte změny a ukončete kontextové podokno.
Výběrem možnosti Vytvořit vytvořte novou revizi.
Svazek služby Soubory Azure
Sdílenou složku můžete připojit ze služby Azure Files jako svazek v kontejneru.
Azure Files Storage má následující charakteristiky:
- Soubory zapsané pod umístěním připojení se zachovají do sdílené složky.
- Soubory ve sdílené složce jsou dostupné prostřednictvím umístění připojení.
- Několik kontejnerů může připojit stejnou sdílenou složku, včetně těch, které jsou v jiné replice, revizi nebo aplikaci kontejneru.
- Všechny kontejnery, které připojují sdílenou složku, mají přístup k souborům napsaným jakýmkoli jiným kontejnerem nebo metodou.
- Do jednoho kontejneru je možné připojit více svazků Azure Files.
Azure Files podporuje protokoly SMB (Server Message Block) i NFS (Network File System). Sdílenou složku Azure Files můžete připojit pomocí některého protokolu. Sdílená složka, kterou definujete v prostředí, musí být nakonfigurovaná se stejným protokolem používaným sdílenou složkou v účtu úložiště.
Poznámka:
Podpora připojení sdílených složek NFS v Azure Container Apps je ve verzi Preview.
Pokud chcete ve svém kontejneru povolit službu Azure Files Storage, musíte nastavit prostředí a aplikaci kontejneru následujícím způsobem:
- Vytvořte definici úložiště v prostředí Container Apps.
- Pokud používáte systém souborů NFS, musí být vaše prostředí nakonfigurované s vlastní virtuální sítí a účet úložiště musí být nakonfigurovaný tak, aby povoloval přístup z virtuální sítě. Další informace najdete v tématu Sdílené složky NFS ve službě Soubory Azure .
- Pokud je vaše prostředí nakonfigurované s vlastní virtuální sítí, musíte povolit porty 445 a 2049 ve skupině zabezpečení sítě (NSG) přidružené k podsíti.
- Definujte svazek typu
AzureFile
(SMB) neboNfsAzureFile
NFS v revizi. - Definujte připojení svazku v jednom nebo více kontejnerech v revizi.
- Použitý účet úložiště Azure Files musí být přístupný z virtuální sítě vaší aplikace kontejneru. Další informace naleznete v tématu Udělení přístupu z virtuální sítě.
- Pokud používáte systém souborů NFS, musíte také zakázat zabezpečený přenos. Další informace najdete v tématu Sdílené složky NFS ve službě Soubory Azure a část Vytvoření sdílené složky Azure NFS v tomto kurzu.
Požadavky
Požadavek | Pokyny |
---|---|
Účet Azure | Pokud ho nemáte, vytvořte si účet zdarma. |
Účet služby Azure Storage | Vytvoření účtu úložiště |
Prostředí Azure Container Apps | Vytvořte prostředí kontejnerových aplikací. |
Konfigurace
Při konfiguraci aplikace kontejneru pro připojení svazku Azure Files pomocí Azure CLI musíte k vytvoření nebo aktualizaci aplikace kontejneru použít definici YAML.
Podrobný kurz připojení sdílené složky SMB najdete v tématu Vytvoření připojení úložiště Azure Files v Azure Container Apps.
Přidejte do prostředí Container Apps definici úložiště.
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
Nahraďte a
<STORAGE_ACCOUNT_KEY>
nahraďte<STORAGE_ACCOUNT_NAME>
názvem a klíčem vašeho účtu úložiště. Nahraďte<STORAGE_SHARE_NAME>
názvem sdílené složky v účtu úložiště.Platné hodnoty jsou
--access-mode
ReadWrite
aReadOnly
.Pokud chcete aktualizovat existující aplikaci kontejneru tak, aby připojila sdílenou složku, exportujte specifikaci aplikace do souboru YAML s názvem app.yaml.
az containerapp show -n <APP_NAME> -g <RESOURCE_GROUP_NAME> -o yaml > app.yaml
Proveďte následující změny specifikace vaší aplikace kontejneru.
-
volumes
Přidejte pole dotemplate
části definice aplikace kontejneru a definujte svazek. Pokud už pole mátevolumes
, přidejte do pole nový svazek.- Jedná se
name
o identifikátor svazku. - Pro
storageType
použitíAzureFile
protokolu SMB neboNfsAzureFile
pro systém souborů NFS. Tato hodnota musí odpovídat typu úložiště, který jste definovali v prostředí. - Použijte
storageName
název úložiště, které jste definovali v prostředí.
- Jedná se
- Pro každý kontejner v šabloně, kterou chcete připojit ke službě Azure Files Storage, definujte připojení svazku v
volumeMounts
poli definice kontejneru.- Jedná se
volumeName
o název definovaný vvolumes
poli. - Je to
mountPath
cesta v kontejneru pro připojení svazku.
- Jedná se
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
-
Aktualizujte aplikaci kontejneru pomocí souboru YAML.
az containerapp update --name <APP_NAME> --resource-group <RESOURCE_GROUP_NAME> \ --yaml app.yaml
Úplný příklad najdete ve specifikaci YAML.
Následující fragmenty šablon ARM ukazují, jak přidat sdílenou složku Azure Files do prostředí Container Apps a jak ji používat v aplikaci kontejneru.
storages
Přidejte podřízený prostředek do prostředí 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" } } } ] }
Aktualizujte prostředek aplikace kontejneru a přidejte svazek a připojení svazku.
{ "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
Přidejte pole dotemplate
části definice aplikace kontejneru a definujte svazek. Pokud už pole mátevolumes
, přidejte do pole nový svazek.- Jedná se
name
o identifikátor svazku. - Pro
storageType
použitíAzureFile
protokolu SMB neboNfsAzureFile
pro systém souborů NFS. Tato hodnota musí odpovídat typu úložiště, který jste definovali v prostředí. - Použijte
storageName
název úložiště, které jste definovali v prostředí.
- Jedná se
- Pro každý kontejner v šabloně, kterou chcete připojit ke službě Azure Files Storage, definujte připojení svazku v
volumeMounts
poli definice kontejneru.- Jedná se
volumeName
o název definovaný vvolumes
poli. - Je to
mountPath
cesta v kontejneru pro připojení svazku.
- Jedná se
-
Úplný příklad najdete ve specifikaci rozhraní API šablony ARM.
Pokud chcete nakonfigurovat připojení svazku pro službu Azure Files Storage na webu Azure Portal, přidejte sdílenou složku do prostředí Container Apps a pak přidejte ke své aplikaci kontejneru připojení svazku vytvořením nové revize.
Na webu Azure Portal přejděte do prostředí Container Apps.
V navigačním podokně v části Nastavení vyberte Soubory Azure.
Vyberte Přidat.
V závislosti na protokolu používaném vaší sdílenou složkou vyberte protokol SMB (Server Message Block) nebo systém souborů NFS (Network File System).
V kontextovém podokně Přidat sdílenou složku zadejte následující informace:
- Název: Název sdílené složky.
- Název účtu úložiště: Název účtu úložiště, který obsahuje sdílenou složku.
- Klíč účtu úložiště: Přístupový klíč pro účet úložiště.
- Sdílená složka: Název sdílené složky.
- Režim přístupu: Režim přístupu pro sdílenou složku. Platné hodnoty jsou jen pro čtení a zápis a jen pro čtení.
Výběrem možnosti Přidat ukončíte kontextové podokno.
Výběrem možnosti Uložit potvrďte změny.
Přejděte do aplikace kontejneru.
V navigačním podokně v části Aplikace vyberte Revize a repliky.
Vyberte Vytvořit novou revizi.
Na stránce Vytvořit a nasadit novou revizi vyberte kartu Svazky.
Vyberte Přidat.
V podokně Přidat kontext svazku nastavte následující.
- Typ svazku: Svazek souborů Azure.
- Název: Zadejte název svazku.
- Název sdílené složky: Vyberte sdílenou složku, kterou jste vytvořili dříve.
Výběrem možnosti Přidat ukončíte kontextové podokno.
Na stránce Vytvořit a znovu publikovat novou revizi vyberte kartu Kontejner.
Vyberte kontejner, do kterého chcete svazek připojit.
V podokně Upravit kontext kontejneru vyberte kartu Připojení svazku.
V části Název svazku vyberte svazek, který jste vytvořili dříve.
V cestě připojení zadejte absolutní cestu v kontejneru pro připojení svazku.
Výběrem možnosti Uložit uložte změny a ukončete kontextové podokno.
Výběrem možnosti Vytvořit vytvořte novou revizi.