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ě.
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. |
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 nabídce vlevo vyberte Soubory Azure .
Vyberte Přidat.
V místní nabídce 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 Read/Write 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 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 Sdílené složky vytvořte nový svazek s následujícími informacemi.
- Název sdílené složky: Sdílená složka, kterou jste přidali.
- 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.