Använda lagringsmonteringar i Azure Container Apps
En containerapp har åtkomst till olika typer av lagring. En enskild app kan dra nytta av mer än en typ av lagring om det behövs.
Lagringstyp | beskrivning | Bevarande | Användningsexempel |
---|---|---|---|
Lagring med containeromfattning | Tillfällig lagring som är tillgänglig för en container som körs | Data är tillgängliga tills containern stängs av | Skriva en lokal appcache. |
Lagring med replikomfattning | Tillfällig lagring för att dela filer mellan containrar i samma replik | Data är tillgängliga tills repliken stängs av | Huvudappcontainern som skriver loggfiler som bearbetas av en sidovagnscontainer. |
Azure Files | Permanent lagring | Data sparas i Azure Files | Skriva filer till en filresurs för att göra data tillgängliga för andra system. |
Tillfällig lagring
En containerapp kan läsa och skriva tillfälliga data till tillfällig lagring. Tillfällig lagring kan begränsas till en container eller en replik. Den totala mängden lagringsutrymme med containeromfattning och replikomfattning som är tillgängligt för varje replik beror på den totala mängden vCPU:er som allokerats till repliken.
vCPU:er | Total tillfällig lagring |
---|---|
0,25 eller lägre | 1 GiB |
0,5 eller lägre | 2 GiB |
1 eller lägre | 4 GiB |
Över 1 | 8 GiB |
Lagring med containeromfattning
En container kan skriva till sitt eget filsystem.
Lagring av containerfilsystem har följande egenskaper:
- Lagringen är tillfällig och försvinner när containern stängs av eller startas om.
- Filer som skrivs till den här lagringen är bara synliga för processer som körs i den aktuella containern.
Lagring med replikomfattning
Du kan montera en tillfällig, tillfällig volym som motsvarar EmptyDir (tom katalog) i Kubernetes. Den här lagringen är begränsad till en enskild replik. Använd en EmptyDir
volym för att dela data mellan containrar i samma replik.
Lagring med replikomfattning har följande egenskaper:
- Filer sparas under replikens livslängd.
- Om en container i en replik startas om finns filerna i volymen kvar.
- Alla init- eller appcontainrar i repliken kan montera samma volym.
- En container kan montera flera
EmptyDir
volymer.
Om du vill konfigurera lagring med replikeringsomfång definierar du först en EmptyDir
volym i revisionen. Definiera sedan en volymmontering i en eller flera containrar i revisionen.
Förutsättningar
Krav | Instruktioner |
---|---|
Azure-konto | Om du inte har något skapar du ett konto kostnadsfritt. |
Azure Container Apps-miljö | Skapa en miljö för containerappar. |
Konfiguration
När du konfigurerar lagring med replikeringsomfång med hjälp av Azure CLI måste du använda en YAML-definition för att skapa eller uppdatera containerappen.
Om du vill uppdatera en befintlig containerapp så att den använder lagring med replikomfattning exporterar du appens specifikation till en YAML-fil med namnet app.yaml.
az containerapp show -n <APP_NAME> -g <RESOURCE_GROUP_NAME> -o yaml > app.yaml
Gör följande ändringar i containerappens specifikation.
- Lägg till en
volumes
matris i avsnittet i containerappdefinitionentemplate
och definiera en volym. Om du redan har envolumes
matris lägger du till en ny volym i matrisen.name
är en identifierare för volymen.- Använd
EmptyDir
somstorageType
.
- För varje container i mallen som du vill montera volymen definierar du en volymmontering i
volumeMounts
containerdefinitionens matris.volumeName
är namnet som definierats i matrisenvolumes
.mountPath
är sökvägen i containern för att montera volymen.
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
- Lägg till en
Uppdatera containerappen med YAML-filen.
az containerapp update --name <APP_NAME> --resource-group <RESOURCE_GROUP_NAME> \ --yaml app.yaml
Om du vill skapa en volym med replikomfattning och montera den i en container gör du följande ändringar i containerappresursen i en ARM-mall:
- Lägg till en
volumes
matris i avsnittet i containerappdefinitionentemplate
och definiera en volym. Om du redan har envolumes
matris lägger du till en ny volym i matrisen.name
är en identifierare för volymen.- Använd
EmptyDir
somstorageType
.
- För varje container i mallen som du vill montera volymen definierar du en volymmontering i
volumeMounts
containerdefinitionens matris.volumeName
är namnet som definierats i matrisenvolumes
.mountPath
är sökvägen i containern för att montera volymen.
Exempel på ARM-mallfragment:
{
"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"
}
]
}
}
}
Se API-specifikationen för ARM-mallen för ett fullständigt exempel.
Om du vill skapa en volym med replikomfattning och montera den i en container distribuerar du en ny revision av containerappen med hjälp av Azure-portalen.
Gå till din containerapp i Azure-portalen.
Välj Revisionshantering på den vänstra menyn.
Välj Skapa ny revision.
Välj den container där du vill montera volymen.
I fönstret Redigera en containerkontext väljer du fliken Volymmonteringar .
Under avsnittet Tillfällig lagring skapar du en ny volym med följande information.
- Volymnamn: Ett namn på den tillfälliga volymen.
- Monteringssökväg: Den absoluta sökvägen i containern för att montera volymen.
Välj Spara för att spara ändringar och avsluta kontextfönstret.
Välj Skapa för att skapa den nya revisionen.
Azure Files-volym
Du kan montera en filresurs från Azure Files som en volym i en container.
Azure Files Storage har följande egenskaper:
- Filer som skrivs under monteringsplatsen sparas till filresursen.
- Filer i resursen är tillgängliga via monteringsplatsen.
- Flera containrar kan montera samma filresurs, inklusive de som finns i en annan replik, revision eller containerapp.
- Alla containrar som monterar resursen kan komma åt filer som skrivits av någon annan container eller metod.
- Mer än en Azure Files-volym kan monteras i en enda container.
Azure Files stöder både SMB- och NFS-protokoll. Du kan montera en Azure Files-resurs med hjälp av något av protokollen. Den filresurs som du definierar i miljön måste konfigureras med samma protokoll som används av filresursen i lagringskontot.
Kommentar
Stöd för montering av NFS-resurser i Azure Container Apps finns i förhandsversion.
Om du vill aktivera Azure Files-lagring i containern måste du konfigurera din miljö och containerapp på följande sätt:
- Skapa en lagringsdefinition i Container Apps-miljön.
- Om du använder NFS måste din miljö konfigureras med ett anpassat VNet och lagringskontot måste konfigureras för att tillåta åtkomst från det virtuella nätverket. Mer information finns i NFS-filresurser i Azure Files .
- Om din miljö har konfigurerats med ett anpassat VNet måste du tillåta portarna 445 och 2049 i nätverkssäkerhetsgruppen (NSG) som är associerad med undernätet.
- Definiera en volym av typen
AzureFile
(SMB) ellerNfsAzureFile
(NFS) i en revision. - Definiera en volymmontering i en eller flera containrar i revisionen.
- Det Azure Files-lagringskonto som används måste vara tillgängligt från containerappens virtuella nätverk. Mer information finns i Bevilja åtkomst från ett virtuellt nätverk.
- Om du använder NFS måste du också inaktivera säker överföring. Mer information finns i NFS-filresurser i Azure Files och avsnittet Skapa en NFS Azure-filresurs i den här självstudien.
Förutsättningar
Krav | Instruktioner |
---|---|
Azure-konto | Om du inte har något skapar du ett konto kostnadsfritt. |
Azure-lagringskonto | Skapa ett lagringskonto. |
Azure Container Apps-miljö | Skapa en miljö för containerappar. |
Konfiguration
När du konfigurerar en containerapp för att montera en Azure Files-volym med hjälp av Azure CLI måste du använda en YAML-definition för att skapa eller uppdatera din containerapp.
En stegvis självstudie om hur du monterar en SMB-filresurs finns i Skapa en Azure Files-lagringsmontering i Azure Container Apps.
Lägg till en lagringsdefinition i din Container Apps-miljö.
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
Ersätt
<STORAGE_ACCOUNT_NAME>
och<STORAGE_ACCOUNT_KEY>
med namnet och nyckeln för ditt lagringskonto. Ersätt<STORAGE_SHARE_NAME>
med namnet på filresursen i lagringskontot.Giltiga värden för
--access-mode
ärReadWrite
ochReadOnly
.Om du vill uppdatera en befintlig containerapp för att montera en filresurs exporterar du appens specifikation till en YAML-fil med namnet app.yaml.
az containerapp show -n <APP_NAME> -g <RESOURCE_GROUP_NAME> -o yaml > app.yaml
Gör följande ändringar i containerappens specifikation.
- Lägg till en
volumes
matris i avsnittet i containerappdefinitionentemplate
och definiera en volym. Om du redan har envolumes
matris lägger du till en ny volym i matrisen.name
är en identifierare för volymen.- För
storageType
använder duAzureFile
för SMB ellerNfsAzureFile
för NFS. Det här värdet måste matcha den lagringstyp som du definierade i miljön. - För
storageName
använder du namnet på lagringen som du definierade i miljön.
- För varje container i mallen som du vill montera Azure Files Storage definierar du en volymmontering i containerdefinitionens
volumeMounts
matris.volumeName
är namnet som definierats i matrisenvolumes
.mountPath
är sökvägen i containern för att montera volymen.
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
- Lägg till en
Uppdatera containerappen med YAML-filen.
az containerapp update --name <APP_NAME> --resource-group <RESOURCE_GROUP_NAME> \ --yaml app.yaml
Följande ARM-mallfragment visar hur du lägger till en Azure Files-resurs i en Container Apps-miljö och använder den i en containerapp.
Lägg till en
storages
underordnad resurs i Container Apps-miljön.{ "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" } } } ] }
Uppdatera containerappresursen för att lägga till en volym- och volymmontering.
{ "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" } ] } } }
- Lägg till en
volumes
matris i avsnittet i containerappdefinitionentemplate
och definiera en volym. Om du redan har envolumes
matris lägger du till en ny volym i matrisen.name
är en identifierare för volymen.- För
storageType
använder duAzureFile
för SMB ellerNfsAzureFile
för NFS. Det här värdet måste matcha den lagringstyp som du definierade i miljön. - För
storageName
använder du namnet på lagringen som du definierade i miljön.
- För varje container i mallen som du vill montera Azure Files Storage definierar du en volymmontering i containerdefinitionens
volumeMounts
matris.volumeName
är namnet som definierats i matrisenvolumes
.mountPath
är sökvägen i containern för att montera volymen.
- Lägg till en
Se API-specifikationen för ARM-mallen för ett fullständigt exempel.
Om du vill konfigurera en volymmontering för Azure Files-lagring i Azure-portalen lägger du till en filresurs i containerappmiljön och lägger sedan till en volymmontering i containerappen genom att skapa en ny revision.
Gå till din Container Apps-miljö i Azure-portalen.
Välj Azure Files på den vänstra menyn.
Markera Lägga till.
I snabbmenyn Lägg till filresurs anger du följande information:
- Namn: Ett namn på filresursen.
- Lagringskontonamn: Namnet på lagringskontot som innehåller filresursen.
- Lagringskontonyckel: Åtkomstnyckeln för lagringskontot.
- Filresurs: Namnet på filresursen.
- Åtkomstläge: Åtkomstläget för filresursen. Giltiga värden är "Read/Write" och "Read only".
Välj Lägg till för att avsluta kontextfönstret.
Välj Spara för att checka in ändringarna.
Gå till containerappen.
Välj Revisionshantering på den vänstra menyn.
Välj Skapa ny revision.
Välj den container som du vill montera volymen i.
I fönstret Redigera en containerkontext väljer du fliken Volymmonteringar .
Under avsnittet Filresurser skapar du en ny volym med följande information.
- Filresursnamn: Den filresurs som du har lagt till.
- Monteringssökväg: Den absoluta sökvägen i containern för att montera volymen.
Välj Spara för att spara ändringar och avsluta kontextfönstret.
Välj Skapa för att skapa den nya revisionen.