Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Een container-app heeft toegang tot verschillende typen opslag. Eén app kan, indien nodig, profiteren van meer dan één type opslag.
Notitie
Vermijd het gebruik van speciale tekens in volumenamen om implementatiefouten te voorkomen. Een volume met de naam credentials.json bevat bijvoorbeeld een speciaal teken (.) dat resulteert in een implementatiefout.
| Opslagtype | Beschrijving | Persistentie | Verbruiksvoorbeeld |
|---|---|---|---|
| Opslag met containerbereik | Tijdelijke opslag beschikbaar voor een actieve container | Gegevens zijn beschikbaar totdat de container wordt afgesloten | Een lokale app-cache schrijven. |
| Opslag met replicabereik | Tijdelijke opslag voor het delen van bestanden tussen containers in dezelfde replica | Gegevens zijn beschikbaar totdat de replica wordt afgesloten | De hoofd-app-container die logboekbestanden schrijft die door een sidecar-container worden verwerkt. |
| Azure Files | Permanente opslag | Gegevens blijven behouden in Azure Files | Bestanden naar een bestandsshare schrijven om gegevens toegankelijk te maken door andere systemen. |
Notitie
Azure Container Apps biedt geen ondersteuning voor het koppelen van bestandsshares vanuit Azure NetApp Files of Azure Blob Storage.
Tijdelijke opslag
Een container-app kan tijdelijke gegevens lezen en schrijven naar tijdelijke opslag. Tijdelijke opslag kan worden beperkt tot een container of een replica. De totale hoeveelheid container-bereik opslag en replica-bereik opslag die beschikbaar is voor elke replica, is afhankelijk van het totale aantal vCPU's dat aan de replica is toegewezen.
| vCPU's | Totale tijdelijke opslag |
|---|---|
| 0,25 of lager | 1 GiB |
| 0,5 of lager dan | 2 GiB |
| 1 of lager dan | 4 GiB |
| Meer dan 1 | 8 GiB |
Opslag met container-scope
Een container kan naar een eigen bestandssysteem schrijven.
Containerbestandssysteemopslag heeft de volgende kenmerken:
- De opslag is tijdelijk en verdwijnt wanneer de container wordt afgesloten of opnieuw wordt opgestart.
- Bestanden die naar deze opslag worden geschreven, zijn alleen zichtbaar voor processen die worden uitgevoerd in de huidige container.
Opslag met replicabereik
U kunt een kortstondig, tijdelijk volume koppelen dat gelijk is aan EmptyDir (lege map) in Kubernetes. Deze opslag is bedoeld voor een enkele replica. Gebruik een EmptyDir volume om gegevens te delen tussen containers in dezelfde replica.
Opslag binnen het bereik van replicas heeft de volgende kenmerken:
- Bestanden blijven behouden gedurende de levensduur van de replica.
- Als een container in een replica opnieuw wordt opgestart, blijven de bestanden in het volume behouden.
- Alle init- of app-containers in de replica kunnen hetzelfde volume koppelen.
- Een container kan meerdere
EmptyDirvolumes koppelen.
Als u opslag met replicabereik wilt configureren, definieert u eerst een EmptyDir volume in de revisie. Definieer vervolgens een volumekoppeling in een of meer containers in de revisie.
Vereisten
| Vereiste | Instructies |
|---|---|
| Azure-account | Als u nog geen account hebt, maakt u gratis een account. |
| Azure Container Apps-omgeving | Maak een container-apps-omgeving. |
| Configuratie van beheerde identiteit | Zorg ervoor dat aan de beheerde identiteit die is gekoppeld aan uw Container Apps-omgeving de juiste rollen zijn toegewezen voor toegang tot Azure Files. |
Configuratie
Wanneer u opslag met replicabereik configureert met behulp van de Azure CLI, moet u een YAML-definitie gebruiken om uw container-app te maken of bij te werken.
Als u een bestaande container-app wilt bijwerken voor het gebruik van opslag met replicabereik, exporteert u de specificatie van uw app naar een YAML-bestand met de naam app.yaml.
az containerapp show -n <APP_NAME> -g <RESOURCE_GROUP_NAME> -o yaml > app.yamlBreng de volgende wijzigingen aan in de specificatie van uw container-app.
- Voeg een
volumesmatrix toe aan de sectie van detemplatedefinitie van uw container-app en definieer een volume. Als u al eenvolumesmatrix hebt, voegt u een nieuw volume toe aan de matrix.- Dit
nameis een id voor het volume. - Gebruiken
EmptyDirals destorageType.
- Dit
- Voor elke container in de sjabloon waarvoor u het volume wilt koppelen, definieer een volumekoppeling in de
volumeMountsarray van de containerdefinitie.- De
volumeNameis de naam die is gedefinieerd in devolumesarray. - Het
mountPathomvat het pad in de container voor het koppelen van het volume.
- De
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- Voeg een
Werk uw container-app bij met behulp van het YAML-bestand.
az containerapp update --name <APP_NAME> --resource-group <RESOURCE_GROUP_NAME> \ --yaml app.yaml
Zie de YAML-specificatie voor een volledig voorbeeld.
Als u een volume met replicabereik wilt maken en in een container wilt koppelen, moet u de volgende wijzigingen aanbrengen in de container-apps-resource in een ARM-sjabloon.
- Voeg een
volumesmatrix toe aan de sectie van detemplatedefinitie van uw container-app en definieer een volume. Als u al eenvolumesmatrix hebt, voegt u een nieuw volume toe aan de matrix.- Dit
nameis een id voor het volume. - Gebruiken
EmptyDirals destorageType.
- Dit
- Voor elke container in de sjabloon waarvoor u het volume wilt koppelen, definieer een volumekoppeling in de
volumeMountsarray van de containerdefinitie.- De
volumeNameis de naam die is gedefinieerd in devolumesarray. - Het
mountPathomvat het pad in de container voor het koppelen van het volume.
- De
Voorbeeld van een ARM-sjabloonfragment:
{
"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"
}
]
}
}
}
Zie de API-specificatie van de ARM-sjabloon voor een volledig voorbeeld.
Als u een volume met replicabereik wilt maken en wilt koppelen in een container, implementeert u een nieuwe revisie van uw container-app met behulp van Azure Portal.
Navigeer in Azure Portal naar uw container-app.
Selecteer Revisiebeheer in het linkermenu.
Selecteer Nieuwe revisie maken.
Selecteer de container waaraan u het volume wilt koppelen.
Selecteer in het deelvenster Container bewerken het tabblad Volumemounts.
Maak onder de sectie Tijdelijke opslag een nieuw volume met de volgende informatie.
- Volumenaam: een naam voor het tijdelijke volume.
- Koppelpad: het absolute pad in de container om het volume te koppelen.
Selecteer Opslaan om wijzigingen op te slaan en het contextvenster af te sluiten.
Selecteer Maken om de nieuwe revisie te maken.
Azure Files-volume
U kunt een bestandsshare vanuit Azure Files koppelen als een volume in een container.
Azure Files Storage heeft de volgende kenmerken:
- Bestanden die onder de aankoppellocatie zijn geschreven, worden opgeslagen in de bestandsdeling.
- Bestanden in de share zijn beschikbaar via de koppelingslocatie.
- Meerdere containers kunnen dezelfde bestandsshare koppelen, inclusief containers die zich in een andere replica, revisie of container-app bevinden.
- Alle containers die de share koppelen, hebben toegang tot bestanden die zijn geschreven door een andere container of methode.
- Meer dan één Azure Files-volume kan in één container worden gekoppeld.
Azure Files ondersteunt zowel SMB-protocollen (Server Message Block) als NFS (Network File System). U kunt een Azure Files-share koppelen met behulp van beide protocollen. De bestandsshare die u in de omgeving definieert, moet worden geconfigureerd met hetzelfde protocol dat wordt gebruikt door de bestandsshare in het opslagaccount.
Als u Azure Files-opslag in uw container wilt inschakelen, moet u uw omgeving en container-app als volgt instellen:
- Maak een opslagdefinitie in de Container Apps-omgeving.
- Als u NFS gebruikt, moet uw omgeving worden geconfigureerd met een aangepast VNet en moet het opslagaccount worden geconfigureerd om toegang vanuit het VNet toe te staan. Zie NFS-bestandsshares in Azure Files voor meer informatie.
- Als uw omgeving is geconfigureerd met een aangepast VNet, moet u poort 445 en 2049 toestaan in de netwerkbeveiligingsgroep (NSG) die is gekoppeld aan het subnet.
- Definieer een volume van het type
AzureFile(SMB) ofNfsAzureFile(NFS) in een revisie. - Definieer een volumekoppeling in een of meer containers in de revisie.
- Het gebruikte Azure Files-opslagaccount moet toegankelijk zijn vanuit het virtuele netwerk van uw container-app. Zie Toegang verlenen vanuit een virtueel netwerk voor meer informatie.
- Als u NFS gebruikt, moet u ook beveiligde overdracht uitschakelen. Zie NFS-bestandsshares in Azure Files voor meer informatie.
Vereisten
| Vereiste | Instructies |
|---|---|
| Azure-account | Als u nog geen account hebt, maakt u gratis een account. |
| Azure Storage-account | Een opslagaccount maken. |
| Azure Container Apps-omgeving | Maak een container-apps-omgeving. |
Configuratie
Wanneer u een container-app configureert om een Azure Files-volume te koppelen met behulp van de Azure CLI, moet u een YAML-definitie gebruiken om uw container-app te maken of bij te werken.
Voor een stapsgewijze zelfstudie over het koppelen van een SMB-bestandsshare raadpleegt u Een Azure Files-opslagkoppeling maken in Azure Container Apps.
Voeg een opslagdefinitie toe aan uw Container Apps-omgeving.
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 ReadWriteVervang
<STORAGE_ACCOUNT_NAME>en<STORAGE_ACCOUNT_KEY>door de naam en sleutel van uw opslagaccount. Vervang<STORAGE_SHARE_NAME>door de naam van de bestandsshare in het opslagaccount.Geldige waarden voor
--access-modezijn enReadWriteReadOnly.Als u een bestaande container-app wilt bijwerken om een bestandsshare te koppelen, exporteert u de specificatie van uw app naar een YAML-bestand met de naam app.yaml.
az containerapp show -n <APP_NAME> -g <RESOURCE_GROUP_NAME> -o yaml > app.yamlBreng de volgende wijzigingen aan in de specificatie van uw container-app.
- Voeg een
volumesmatrix toe aan de sectie van detemplatedefinitie van uw container-app en definieer een volume. Als u al eenvolumesmatrix hebt, voegt u een nieuw volume toe aan de matrix.- Dit
nameis een id voor het volume. - Voor
storageType, gebruikenAzureFilevoor SMB ofNfsAzureFilevoor NFS. Deze waarde moet overeenkomen met het opslagtype dat u in de omgeving hebt gedefinieerd. - Gebruik
storageNamehiervoor de naam van de opslag die u in de omgeving hebt gedefinieerd. - Het
mountOptionsis een door komma's gescheiden reeks koppelopties. Zie MountOptions-instellingen gebruiken in Azure Files voor meer informatie. - De
secretslijst is een lijst met geheimen die in het volume moeten worden gemonteerd. Zie Geheimen in een volume monteren voor meer informatie.
- Dit
- Definieer voor elke container in de sjabloon, waarvoor u Azure Files-opslag wilt koppelen, een volumekoppeling in de
volumeMountsarray van de containerdefinitie.- De
volumeNameis de naam die is gedefinieerd in devolumesarray. - Het
mountPathomvat het pad in de container voor het koppelen van het volume. - Het
subPathis het pad in het volume dat gemount moet worden. Als dat niet gespecificeerd is, wordt de root van het volume gemount. Voor meer informatie, zie (#sub-pad).
- De
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 subPath: my-sub-path volumes: - name: azure-files-volume storageType: AzureFile storageName: mystorage- Voeg een
Werk uw container-app bij met behulp van het YAML-bestand.
az containerapp update --name <APP_NAME> --resource-group <RESOURCE_GROUP_NAME> \ --yaml app.yaml
Zie de YAML-specificatie voor een volledig voorbeeld.
De volgende ARM-sjabloonfragmenten laten zien hoe u een Azure Files-share toevoegt aan een Container Apps-omgeving en deze gebruikt in een container-app.
Voeg een
storagessubresource toe aan de Container Apps-omgeving.{ "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" } } } ] }Werk de container-app-resource bij om een volume- en volumekoppeling toe te voegen.
{ "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", "subPath": "my-sub-path" } ] } ], "scale": { "minReplicas": 1, "maxReplicas": 3 }, "volumes": [ { "name": "azure-files-volume", "storageType": "AzureFile", "storageName": "myazurefiles" } ] } } }- Voeg een
volumesmatrix toe aan de sectie van detemplatedefinitie van uw container-app en definieer een volume. Als u al eenvolumesmatrix hebt, voegt u een nieuw volume toe aan de matrix.- Dit
nameis een id voor het volume. - Voor
storageType, gebruikenAzureFilevoor SMB ofNfsAzureFilevoor NFS. Deze waarde moet overeenkomen met het opslagtype dat u in de omgeving hebt gedefinieerd. - Gebruik
storageNamehiervoor de naam van de opslag die u in de omgeving hebt gedefinieerd. - Het
mountOptionsis een door komma's gescheiden reeks koppelopties. Zie MountOptions-instellingen gebruiken in Azure Files voor meer informatie. - De
secretslijst is een lijst met geheimen die in het volume moeten worden gemonteerd. Zie Geheimen in een volume monteren voor meer informatie.
- Dit
- Definieer voor elke container in de sjabloon, waarvoor u Azure Files-opslag wilt koppelen, een volumekoppeling in de
volumeMountsarray van de containerdefinitie.- De
volumeNameis de naam die is gedefinieerd in devolumesarray. - Het
mountPathomvat het pad in de container voor het koppelen van het volume. - De
subPath(optioneel) is het pad in het volume dat moet worden gekoppeld. Als dat niet gespecificeerd is, wordt de root van het volume gemount. Voor meer informatie, zie (#sub-pad).
- De
- Voeg een
Zie de API-specificatie van de ARM-sjabloon voor een volledig voorbeeld.
Als u een volumekoppeling wilt configureren voor Azure Files-opslag in Azure Portal, voegt u een bestandsshare toe aan uw Container Apps-omgeving en voegt u vervolgens een volumekoppeling toe aan uw container-app door een nieuwe revisie te maken.
Navigeer in Azure Portal naar uw Container Apps-omgeving.
Selecteer Azure Files in het navigatiedeelvenster onder Instellingen.
Selecteer Toevoegen.
Selecteer Server Message Block (SMB) of Network File System (NFS), afhankelijk van het protocol dat wordt gebruikt door uw bestandsshare.
Voer in het contextvenster Bestandsdeling toevoegen de volgende gegevens in:
- Naam: Een naam voor de bestandsshare.
- Naam van opslagaccount: de naam van het opslagaccount dat de bestandsshare bevat.
- Sleutel voor opslagaccount: de toegangssleutel voor het opslagaccount.
- Bestandsshare: de naam van de bestandsshare.
- Toegangsmodus: de toegangsmodus voor de bestandsshare. Geldige waarden zijn alleen-lezen/schrijven en alleen-lezen.
Selecteer Toevoegen om het contextvenster af te sluiten.
Selecteer Opslaan om de wijzigingen door te voeren.
Navigeer naar uw container-app.
Selecteer revisies en replica's in het navigatiedeelvenster onder Toepassing.
Selecteer Nieuwe revisie maken.
Ga naar de pagina Nieuwe revisie maken en implementeren en selecteer het tabblad Volumes.
Selecteer Toevoegen.
In het contextpaneel Volume toevoegen, stel het volgende in.
- Volumetype: Azure-bestandsvolume.
- Naam: Voer een volumenaam in.
- Naam van bestandsshare: selecteer de bestandsshare die u eerder hebt gemaakt.
- Opties voor koppelen: Voer desgewenst een door komma's gescheiden reeks koppelingsopties in. Zie MountOptions-instellingen gebruiken in Azure Files voor meer informatie.
Selecteer Toevoegen om het contextvenster af te sluiten.
Op de pagina Nieuwe revisie maken en opnieuw implementeren selecteert u het tabblad Container.
Selecteer de container waarin u het volume wilt koppelen.
Selecteer in het deelvenster Container bewerken het tabblad Volumemounts.
Selecteer onder Volumenaam het volume dat u eerder hebt gemaakt.
Voer in het koppelpad het absolute pad in de container in om het volume te koppelen.
Voer in subpad (optioneel) het pad in het volume in dat moet worden gekoppeld. Als dat niet gespecificeerd is, wordt de root van het volume gemount. Voor meer informatie, zie (#sub-pad).
Selecteer Opslaan om wijzigingen op te slaan en het contextvenster af te sluiten.
Selecteer Maken om de nieuwe revisie te maken.
Subpad
Wanneer u een bestandsshare koppelt vanuit Azure Files, kunt u naast het koppelpad ook een subpad opgeven.
- Koppelpad: het pad in de container waar u het volume wilt koppelen.
- Subpad: het pad binnen het volume dat u wilt koppelen.
Het subpad is optioneel. Als dat niet gespecificeerd is, wordt de root van het volume gemount.
Het subpad is een relatief pad vanaf de wortel van het volume. Het subpad mag niet beginnen met /. Het opgeven van een subpad dat begint met / kan ervoor zorgen dat uw container-app niet wordt gestart. Is bijvoorbeeld my-volume-folder een geldig subpad, waar /my-volume-folder dat niet is.
Het subpad kan verwijzen naar een map of een bestand in het volume.
Als het subpad naar een map verwijst, moet het koppelpad verwijzen naar een lege map in de container.
Als het subpad naar een bestand verwijst, moet het koppelpad verwijzen naar een bestand dat nog niet bestaat in de container.
Stel dat het subpad
my-volume-folder/my-volume-file.txtis en het koppelpad/my-container-folder/my-container-fileis. De map/my-container-foldermoet al aanwezig zijn in de container, maar mag het bestandmy-container-file.txtnog niet bevatten.
Eventuele schuine strepen aan het einde van subpaden worden genegeerd.