Zelfstudie: Een Azure Files-volumekoppeling maken in Azure Container Apps
Meer informatie over het schrijven naar permanente opslag in een container-app met behulp van een Azure Files-opslagkoppeling. Zie Opslagkoppelingen gebruiken in Azure Container Apps voor meer informatie over opslagkoppelingen.
In deze zelfstudie leert u het volgende:
- Een Container Apps-omgeving maken
- Een Azure Storage-account maken
- Een bestandsshare definiëren in het opslagaccount
- De omgeving koppelen aan de opslagbestandsshare
- De opslagshare koppelen in een afzonderlijke container
- Controleer de opslagkoppeling door het toegangslogboek van de website weer te geven
Notitie
Azure Container Apps ondersteunt het koppelen van bestandsshares met behulp van SMB- en NFS-protocollen. In deze zelfstudie ziet u hoe u een Azure Files-share kunt koppelen met behulp van het SMB-protocol. Zie Opslagkoppelingen gebruiken in Azure Container Apps voor meer informatie over het koppelen van NFS-shares.
Vereisten
- Installeer de nieuwste versie van de Azure CLI.
De omgeving instellen
Met de volgende opdrachten kunt u variabelen definiëren en ervoor zorgen dat uw Container Apps-extensie up-to-date is.
Meld u aan bij de Azure CLI.
az login
Stel omgevingsvariabelen in die in verschillende opdrachten worden gebruikt om te volgen.
RESOURCE_GROUP="my-container-apps-group" ENVIRONMENT_NAME="my-storage-environment" LOCATION="canadacentral"
Zorg ervoor dat u de nieuwste versie van de Azure CLI-extensie voor Container Apps hebt.
az extension add -n containerapp --upgrade
Registreer de
Microsoft.App
naamruimte.az provider register --namespace Microsoft.App
Registreer de
Microsoft.OperationalInsights
provider voor de Azure Monitor Log Analytics-werkruimte als u deze nog niet eerder hebt gebruikt.az provider register --namespace Microsoft.OperationalInsights
Een omgeving maken
Met de volgende stappen maakt u een resourcegroep en een Container Apps-omgeving.
Maak een resourcegroep.
az group create \ --name $RESOURCE_GROUP \ --location $LOCATION \ --query "properties.provisioningState"
Zodra de opdracht is gemaakt, wordt het bericht Geslaagd geretourneerd.
Aan het einde van deze zelfstudie kunt u de resourcegroep verwijderen om alle services te verwijderen die tijdens dit artikel zijn gemaakt.
Maak een Container Apps-omgeving.
az containerapp env create \ --name $ENVIRONMENT_NAME \ --resource-group $RESOURCE_GROUP \ --location "$LOCATION" \ --query "properties.provisioningState"
Zodra de opdracht is gemaakt, wordt het bericht Geslaagd geretourneerd.
Opslagkoppelingen zijn gekoppeld aan een Container Apps-omgeving en geconfigureerd in afzonderlijke container-apps.
Een opslagaccount instellen
Maak vervolgens een opslagaccount en stel een bestandsshare in om te koppelen aan de container-app.
Definieer de naam van een opslagaccount.
Met deze opdracht wordt een willekeurig achtervoegsel gegenereerd voor de naam van het opslagaccount om de uniekheid te garanderen.
STORAGE_ACCOUNT_NAME="myacastorageaccount$RANDOM"
Een Azure Storage-account maken.
az storage account create \ --resource-group $RESOURCE_GROUP \ --name $STORAGE_ACCOUNT_NAME \ --location "$LOCATION" \ --kind StorageV2 \ --sku Standard_LRS \ --enable-large-file-share \ --query provisioningState
Zodra de opdracht is gemaakt, wordt het bericht Geslaagd geretourneerd.
Definieer de naam van een bestandsshare.
STORAGE_SHARE_NAME="myfileshare"
Maak de Azure Storage-bestandsshare.
az storage share-rm create \ --resource-group $RESOURCE_GROUP \ --storage-account $STORAGE_ACCOUNT_NAME \ --name $STORAGE_SHARE_NAME \ --quota 1024 \ --enabled-protocols SMB \ --output table
Haal de sleutel van het opslagaccount op.
STORAGE_ACCOUNT_KEY=`az storage account keys list -n $STORAGE_ACCOUNT_NAME --query "[0].value" -o tsv`
De sleutel van het opslagaccount is vereist voor het maken van de opslagkoppeling in uw Container Apps-omgeving.
Definieer de naam van de opslagkoppeling.
STORAGE_MOUNT_NAME="mystoragemount"
Deze waarde is de naam die wordt gebruikt om de koppeling voor opslagkoppeling vanuit uw Container Apps-omgeving naar uw Azure Storage-account te definiëren.
De opslagkoppeling maken
U kunt nu de configuratie van de container-app bijwerken ter ondersteuning van de opslagkoppeling.
Maak de opslagkoppeling in de omgeving.
az containerapp env storage set \ --access-mode ReadWrite \ --azure-file-account-name $STORAGE_ACCOUNT_NAME \ --azure-file-account-key $STORAGE_ACCOUNT_KEY \ --azure-file-share-name $STORAGE_SHARE_NAME \ --storage-name $STORAGE_MOUNT_NAME \ --name $ENVIRONMENT_NAME \ --resource-group $RESOURCE_GROUP \ --output table
Met deze opdracht maakt u een koppeling tussen de container-app-omgeving en de bestandsshare die met de
az storage share-rm
opdracht is gemaakt.Nu het opslagaccount en de omgeving zijn gekoppeld, kunt u een container-app maken die gebruikmaakt van de opslagkoppeling.
Definieer de naam van de container-app.
CONTAINER_APP_NAME="my-container-app"
Maak de container-app.
az containerapp create \ --name $CONTAINER_APP_NAME \ --resource-group $RESOURCE_GROUP \ --environment $ENVIRONMENT_NAME \ --image nginx \ --min-replicas 1 \ --max-replicas 1 \ --target-port 80 \ --ingress external \ --query properties.configuration.ingress.fqdn
Met deze opdracht wordt de URL van uw nieuwe container-app weergegeven.
Kopieer de URL en plak deze in uw webbrowser om naar de website te navigeren.
Zodra de pagina is geladen, ziet u het bericht Welkom bij nginx!. Houd dit browsertabblad geopend. U keert terug naar de website tijdens de verificatiestappen voor opslagkoppelingen.
Nu u hebt bevestigd dat de container-app is geconfigureerd, kunt u de app bijwerken naar een definitie voor opslagkoppeling.
Exporteer de configuratie van de container-app.
az containerapp show \ --name $CONTAINER_APP_NAME \ --resource-group $RESOURCE_GROUP \ --output yaml > app.yaml
Notitie
Hoewel deze toepassing geen geheimen heeft, hebben veel apps geheimen. Wanneer u de configuratie van een app exporteert, worden de waarden voor geheimen standaard niet opgenomen in de gegenereerde YAML.
Als u geen geheime waarden hoeft te wijzigen, kunt u de
secrets
sectie verwijderen en blijven uw geheimen ongewijzigd. Als u de waarde van een geheim wilt wijzigen, moet u ook zowel dename
alsvalue
voor alle geheimen in het bestand opgeven voordat u de app probeert bij te werken. Als u een geheim weglaat uit desecrets
sectie, wordt het geheim verwijderd.Open app.yaml in een code-editor.
Vervang de
volumes: null
definitie in detemplate
sectie door eenvolumes:
definitie die verwijst naar het opslagvolume. De sjabloonsectie moet er als volgt uitzien:template: volumes: - name: my-azure-file-volume storageName: mystoragemount storageType: AzureFile containers: - image: nginx name: my-container-app volumeMounts: - volumeName: my-azure-file-volume mountPath: /var/log/nginx resources: cpu: 0.5 ephemeralStorage: 3Gi memory: 1Gi initContainers: null revisionSuffix: '' scale: maxReplicas: 1 minReplicas: 1 rules: null
De nieuwe
template.volumes
sectie bevat de volgende eigenschappen.Eigenschappen Beschrijving name
Deze waarde komt overeen met het volume dat is gemaakt door de az containerapp env storage set
opdracht aan te roepen.storageName
Deze waarde definieert de naam die wordt gebruikt door containers in de omgeving voor toegang tot het opslagvolume. storageType
Deze waarde bepaalt het type opslagvolume dat is gedefinieerd voor de omgeving. In dit geval wordt een Azure Files-koppeling gedeclareerd. De
volumes
sectie definieert volumes op app-niveau waarnaar uw toepassingscontainer of sidecar-containers kunnen verwijzen via eenvolumeMounts
sectie die is gekoppeld aan een container.Voeg een
volumeMounts
sectie toe aan denginx
container in decontainers
sectie.containers: - image: nginx name: my-container-app volumeMounts: - volumeName: my-azure-file-volume mountPath: /var/log/nginx
De nieuwe
volumeMounts
sectie bevat de volgende eigenschappen:Eigenschappen Beschrijving volumeName
Deze waarde moet overeenkomen met de naam die is gedefinieerd in de volumes
definitie.mountPath
Deze waarde definieert het pad in uw container waar de opslag is gekoppeld. Werk de container-app bij met de nieuwe configuratie voor opslagkoppeling.
az containerapp update \ --name $CONTAINER_APP_NAME \ --resource-group $RESOURCE_GROUP \ --yaml app.yaml \ --output table
De opslagkoppeling controleren
Nu de opslagkoppeling tot stand is gebracht, kunt u bestanden in Azure Storage bewerken vanuit uw container. Gebruik de volgende opdrachten om de opslagkoppeling op het werk te observeren.
Open een interactieve shell in de container-app om opdrachten uit te voeren in de actieve container.
az containerapp exec \ --name $CONTAINER_APP_NAME \ --resource-group $RESOURCE_GROUP
Het kan even duren voordat deze opdracht de externe shell opent. Zodra de shell gereed is, kunt u communiceren met de opslagkoppeling via bestandssysteemopdrachten.
Ga naar de map nginx /var/log/nginx .
cd /var/log/nginx
Ga terug naar de browser en navigeer naar de website en vernieuw de pagina een paar keer.
De aanvragen die op de website worden gedaan, maken een reeks logboekstreamvermeldingen.
Ga terug naar de terminal en vermeld de waarden van de
/var/log/nginx
map.ls
U ziet hoe de access.log - en error.log-bestanden in deze map worden weergegeven. Deze bestanden worden naar de Azure Files-koppeling geschreven in uw Azure Storage-share die u in de vorige stappen hebt gemaakt.
De inhoud van het access.log-bestand weergeven.
cat access.log
Sluit de interactieve shell van de container af om terug te keren naar uw lokale terminalsessie.
exit
U kunt nu de bestanden bekijken in Azure Portal om te controleren of ze bestaan in uw Azure Storage-account. Druk de naam van uw willekeurig gegenereerde opslagaccount af.
echo $STORAGE_ACCOUNT_NAME
Navigeer naar Azure Portal en open het opslagaccount dat in deze procedure is gemaakt.
Selecteer onder Gegevensopslag bestandsshares.
Selecteer myshare om de access.log en error.log bestanden weer te geven.
Resources opschonen
Als u deze toepassing niet wilt blijven gebruiken, voert u de volgende opdracht uit om de resourcegroep te verwijderen, samen met alle resources die in dit artikel zijn gemaakt.
az group delete \
--name $RESOURCE_GROUP