Självstudie: Skapa en Azure Files-volymmontering i Azure Container Apps
Lär dig att skriva till permanent lagring i en containerapp med hjälp av en Azure Files-lagringsmontering. Mer information om lagringsmonteringar finns i Använda lagringsmonteringar i Azure Container Apps.
I den här självstudien lär du dig att:
- Skapa en Container Apps-miljö
- Skapa ett Azure Storage-konto
- Definiera en filresurs i lagringskontot
- Länka miljön till lagringsfilresursen
- Montera lagringsresursen i en enskild container
- Verifiera lagringsmonteringen genom att visa åtkomstloggen för webbplatsen
Kommentar
Azure Container Apps stöder montering av filresurser med hjälp av SMB- och NFS-protokoll. Den här självstudien visar hur du monterar en Azure Files-resurs med hjälp av SMB-protokollet. Mer information om hur du monterar NFS-resurser finns i Använda lagringsmonteringar i Azure Container Apps.
Förutsättningar
- Installera den senaste versionen av Azure CLI.
Konfigurera miljön
Följande kommandon hjälper dig att definiera variabler och se till att containerapptillägget är uppdaterat.
Logga in på Azure CLI.
az login
Konfigurera miljövariabler som används i olika kommandon att följa.
RESOURCE_GROUP="my-container-apps-group" ENVIRONMENT_NAME="my-storage-environment" LOCATION="canadacentral"
Se till att du har den senaste versionen av Azure CLI-tillägget för Container Apps.
az extension add -n containerapp --upgrade
Microsoft.App
Registrera namnområdet.az provider register --namespace Microsoft.App
Registrera providern
Microsoft.OperationalInsights
för Azure Monitor Log Analytics-arbetsytan om du inte har använt den tidigare.az provider register --namespace Microsoft.OperationalInsights
Skapa en miljö
Följande steg skapar en resursgrupp och en Container Apps-miljö.
Skapa en resursgrupp.
az group create \ --name $RESOURCE_GROUP \ --location $LOCATION \ --query "properties.provisioningState"
När kommandot har skapats returneras meddelandet "Lyckades".
I slutet av den här självstudien kan du ta bort resursgruppen för att ta bort alla tjänster som skapades under den här artikeln.
Skapa en Container Apps-miljö.
az containerapp env create \ --name $ENVIRONMENT_NAME \ --resource-group $RESOURCE_GROUP \ --location "$LOCATION" \ --query "properties.provisioningState"
När kommandot har skapats returneras meddelandet "Lyckades".
Lagringsmonteringar är associerade med en Container Apps-miljö och konfigureras i enskilda containerappar.
Konfigurera ett lagringskonto
Skapa sedan ett lagringskonto och upprätta en filresurs som ska monteras i containerappen.
Definiera ett lagringskontonamn.
Det här kommandot genererar ett slumpmässigt suffix till lagringskontots namn för att säkerställa unikhet.
STORAGE_ACCOUNT_NAME="myacastorageaccount$RANDOM"
skapa ett Azure Storage-konto
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
När kommandot har skapats returneras meddelandet "Lyckades".
Definiera ett filresursnamn.
STORAGE_SHARE_NAME="myfileshare"
Skapa Azure Storage-filresursen.
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
Hämta lagringskontonyckeln.
STORAGE_ACCOUNT_KEY=`az storage account keys list -n $STORAGE_ACCOUNT_NAME --query "[0].value" -o tsv`
Lagringskontonyckeln krävs för att skapa lagringslänken i containerappmiljön.
Definiera namnet på lagringsmonteringen.
STORAGE_MOUNT_NAME="mystoragemount"
Det här värdet är det namn som används för att definiera länken för lagringsmontering från containerappmiljön till ditt Azure Storage-konto.
Skapa lagringsmonteringen
Nu kan du uppdatera konfigurationen av containerappen för att stödja lagringsmonteringen.
Skapa lagringslänken i miljön.
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
Det här kommandot skapar en länk mellan containerappmiljön och filresursen som skapats
az storage share-rm
med kommandot .Nu när lagringskontot och miljön är länkade kan du skapa en containerapp som använder lagringsmonteringen.
Definiera namnet på containerappen.
CONTAINER_APP_NAME="my-container-app"
Skapa containerappen.
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
Det här kommandot visar URL:en för din nya containerapp.
Kopiera URL:en och klistra in den i webbläsaren för att navigera till webbplatsen.
När sidan har lästs in visas meddelandet "Välkommen till nginx!". Håll den här webbläsarfliken öppen. Du kommer tillbaka till webbplatsen under verifieringsstegen för lagringsmonteringen.
Nu när du har bekräftat att containerappen har konfigurerats kan du uppdatera appen till med en definition för lagringsmontering.
Exportera containerappens konfiguration.
az containerapp show \ --name $CONTAINER_APP_NAME \ --resource-group $RESOURCE_GROUP \ --output yaml > app.yaml
Kommentar
Även om det här programmet inte har hemligheter, gör många appar funktionshemligheter. När du exporterar en apps konfiguration inkluderas som standard inte värdena för hemligheter i den genererade YAML:en.
Om du inte behöver ändra hemliga värden kan du ta bort
secrets
avsnittet och dina hemligheter förblir oförändrade. Om du behöver ändra en hemlighets värde måste du också ange bådename
ochvalue
för alla hemligheter i filen innan du försöker uppdatera appen. Om du utelämnar en hemlighet frånsecrets
avsnittet tas hemligheten bort.Öppna app.yaml i en kodredigerare.
volumes: null
Ersätt definitionen itemplate
avsnittet med envolumes:
definition som refererar till lagringsvolymen. Mallavsnittet bör se ut så här: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
Det nya
template.volumes
avsnittet innehåller följande egenskaper.Property beskrivning name
Det här värdet matchar volymen som skapas genom att anropa az containerapp env storage set
kommandot.storageName
Det här värdet definierar namnet som används av containrar i miljön för att få åtkomst till lagringsvolymen. storageType
Det här värdet avgör vilken typ av lagringsvolym som definierats för miljön. I det här fallet deklareras en Azure Files-montering. Avsnittet
volumes
definierar volymer på appnivå som din programcontainer eller sidovagnscontainrar kan referera till via ettvolumeMounts
avsnitt som är associerat med en container.Lägg till ett
volumeMounts
avsnitt i containernnginx
i avsnittetcontainers
.containers: - image: nginx name: my-container-app volumeMounts: - volumeName: my-azure-file-volume mountPath: /var/log/nginx
Det nya
volumeMounts
avsnittet innehåller följande egenskaper:Property beskrivning volumeName
Det här värdet måste matcha det namn som definierats i volumes
definitionen.mountPath
Det här värdet definierar sökvägen i containern där lagringen är monterad. Uppdatera containerappen med den nya konfigurationen för lagringsmontering.
az containerapp update \ --name $CONTAINER_APP_NAME \ --resource-group $RESOURCE_GROUP \ --yaml app.yaml \ --output table
Kontrollera lagringsmonteringen
Nu när lagringsmonteringen har upprättats kan du ändra filer i Azure Storage från containern. Använd följande kommandon för att observera lagringsmonteringen på jobbet.
Öppna ett interaktivt gränssnitt i containerappen för att köra kommandon i containern som körs.
az containerapp exec \ --name $CONTAINER_APP_NAME \ --resource-group $RESOURCE_GROUP
Det här kommandot kan ta en stund att öppna fjärrgränssnittet. När gränssnittet är klart kan du interagera med lagringsmonteringen via filsystemkommandon.
Ändra till mappen nginx /var/log/nginx .
cd /var/log/nginx
Gå tillbaka till webbläsaren och gå till webbplatsen och uppdatera sidan några gånger.
Begäranden som görs till webbplatsen skapar en serie loggströmsposter.
Gå tillbaka till terminalen och visa en lista över värdena för
/var/log/nginx
mappen.ls
Observera hur access.log - och error.log-filerna visas i den här mappen. De här filerna skrivs till Azure Files-monteringen i din Azure Storage-resurs som skapades i föregående steg.
Visa innehållet i access.log-filen.
cat access.log
Avsluta containerns interaktiva gränssnitt för att återgå till den lokala terminalsessionen.
exit
Nu kan du visa filerna i Azure-portalen för att kontrollera att de finns i ditt Azure Storage-konto. Skriv ut namnet på ditt slumpmässigt genererade lagringskonto.
echo $STORAGE_ACCOUNT_NAME
Gå till Azure-portalen och öppna lagringskontot som skapades i den här proceduren.
Under Datalagring väljer du Filresurser.
Välj myshare för att visa filerna access.log och error.log .
Rensa resurser
Om du inte fortsätter att använda det här programmet kör du följande kommando för att ta bort resursgruppen tillsammans med alla resurser som skapats i den här artikeln.
az group delete \
--name $RESOURCE_GROUP