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.
Meer informatie over het schrijven naar permanente opslag in een container-app met behulp van een Azure Files-opslagkoppeling. Voor meer informatie over opslagkoppelingen, zie Opslagkoppelingen gebruiken in Azure Container Apps.
Deze tutorial gebruikt beheerde identiteitsauthenticatie (preview), die wij aanraden voor nieuwe SMB-bestandsmounts. De beheerde identiteit behoort tot de Container Apps-omgeving. Je hoeft geen opslagaccountsleutel op te halen, op te slaan of te roteren om de share te mounten.
In deze zelfstudie leert u het volgende:
- Een Container Apps-omgeving maken
- Een Azure Storage-account maken
- Een bestandsshare definiëren in het opslagaccount
- Verleen de beheerde identiteit van de omgeving toegang tot de bestandsdeling
- De omgeving koppelen aan de opslagbestandsshare
- Bevestig het opslaggedeelte in een afzonderlijke container
- Controleer de opslagmontage door het toegangslogboek van de website te bekijken
Opmerking
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.
Vereiste voorwaarden
- Installeer de nieuwste versie van de Azure CLI.
- Gebruik een Azure-abonnement met permissies om resources te creëren en Azure role-based access control (Azure RBAC) rollen toe te wijzen. Om rollen toe te wijzen, heb je de machtiging
Microsoft.Authorization/roleAssignments/writenodig op het bereik van het opslagaccount.
De omgeving instellen
Met de volgende opdrachten definieert u omgevingsvariabelen en zorgt u ervoor dat uw Container Apps-extensie up-to-date is.
Meld u aan bij de Azure CLI.
az loginStel omgevingsvariabelen in die in verschillende opdrachten worden gebruikt.
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 --upgradeRegistreer de
Microsoft.Appnaamruimte.az provider register --namespace Microsoft.AppRegistreer 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" \ --mi-system-assigned \ --query "properties.provisioningState"Zodra de opdracht is gemaakt, wordt het bericht Geslaagd geretourneerd.
Gebruik de
--mi-system-assignedvlag om de door het systeem toegewezen beheerde identiteit van de omgeving in te schakelen. In latere stappen verleen je deze identiteit toegang tot de bestandsdeling.Opslagkoppelingen zijn gekoppeld aan een Container Apps-omgeving en worden geconfigureerd binnen individuele 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 \ --enable-smb-oauth true \ --query provisioningStateZodra de opdracht is gemaakt, wordt het bericht Geslaagd geretourneerd.
De
--enable-smb-oauth truevlag maakt Managed Identity voor SMB (SMBOAuth) mogelijk op het opslagaccount. Als je een bestaand opslagaccount gebruikt, schakel dan deze instelling in voordat je de mount aanmaakt. Voor instructies, zie De toegangseigenschap van de beheerde identiteit configureren op je opslagaccount.De SMB-beveiligingsinstellingen van het opslagaccount moeten ook Kerberos-authenticatie toestaan. Als je een aangepast SMB-beveiligingsprofiel gebruikt, zie dan de SMB-beveiligingsinstellingen.
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 tableDefinieer 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.
Verleen de beheerde identiteit toegang
Wijs de rol Storage File Data SMB MI Admin toe aan de beheerde identiteit van de omgeving binnen het opslagaccount-scope. Deze rol autoriseert de identiteit om toegang te krijgen tot bestanden en mappen in de SMB-share.
ENVIRONMENT_PRINCIPAL_ID=$(az containerapp env show \
--name $ENVIRONMENT_NAME \
--resource-group $RESOURCE_GROUP \
--query identity.principalId \
--output tsv)
STORAGE_ACCOUNT_ID=$(az storage account show \
--name $STORAGE_ACCOUNT_NAME \
--resource-group $RESOURCE_GROUP \
--query id \
--output tsv)
az role assignment create \
--assignee-object-id "$ENVIRONMENT_PRINCIPAL_ID" \
--assignee-principal-type ServicePrincipal \
--role "Storage File Data SMB MI Admin" \
--scope "$STORAGE_ACCOUNT_ID"
Wacht even tot de roltoewijzing is doorgevoerd voordat je de storage mount maakt. Om de rol in het Azure-portaal toe te wijzen, zie Wijs een ingebouwde RBAC-rol toe aan de beheerde identiteit.
De opslagmount 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 \ --storage-type AzureFile \ --azure-file-account-name $STORAGE_ACCOUNT_NAME \ --azure-file-identity system \ --azure-file-share-name $STORAGE_SHARE_NAME \ --storage-name $STORAGE_MOUNT_NAME \ --name $ENVIRONMENT_NAME \ --resource-group $RESOURCE_GROUP \ --output tableDit commando creëert een verbinding tussen de Container Apps-omgeving en de bestandsdeling die met het commando
az storage share-rmis aangemaakt. De--azure-file-identity systemoptie verifieert zich bij Azure Files door gebruik te maken van de systeem-toegewezen beheerde identiteit van de omgeving.Voor een door de gebruiker toegewezen beheerde identiteit wijs je de identiteit toe aan de omgeving en gebruik je de volledige resource ID in plaats van
system. Verificatie met opslagsleutel van opslagaccount blijft ondersteund als alternatief. Combineer niet--azure-file-identitymet--azure-file-account-keyof--azure-file-key-vault-secret-url. Zie voor voorbeelden Opslagkoppelingen gebruiken in Azure Container Apps.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.fqdnMet 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.yamlOpmerking
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
secretssectie verwijderen en blijven uw geheimen ongewijzigd. Als u de waarde van een geheim wilt wijzigen, moet u ook zowel denamealsvaluevoor alle geheimen in het bestand opgeven voordat u de app probeert bij te werken. Als u een geheim weglaat uit desecretssectie, wordt het geheim verwijderd.Open app.yaml in een code-editor.
Vervang de
volumes: nulldefinitie in detemplatesectie door eenvolumes:definitie die verwijst naar het opslagvolume. De sjabloonsectie moet er als volgt uitzien:template: containers: - image: nginx imageType: ContainerImage name: my-container-app resources: cpu: 0.5 ephemeralStorage: 2Gi memory: 1Gi volumeMounts: - volumeName: my-azure-file-volume mountPath: /var/log/nginx initContainers: null revisionSuffix: '' scale: cooldownPeriod: 300 maxReplicas: 1 minReplicas: 1 pollingInterval: 30 rules: null serviceBinds: null terminationGracePeriodSeconds: null volumes: - name: my-azure-file-volume storageName: mystoragemount storageType: AzureFileDe nieuwe
template.volumessectie bevat de volgende eigenschappen.Vastgoed Beschrijving nameDeze waarde identificeert het volume op app-niveau en is het volume waarnaar door volumeNamewordt verwezen in de volumemount van de container.storageNameDeze waarde komt overeen met de naam van de opslagdefinitie die is aangemaakt door de opdracht az containerapp env storage setaan te roepen.storageTypeDeze waarde bepaalt het type opslagvolume dat is gedefinieerd voor de omgeving. In dit geval wordt een Azure Files-koppeling gedeclareerd. De
volumessectie definieert volumes op app-niveau waarnaar uw toepassingscontainer of sidecar-containers kunnen verwijzen via eenvolumeMountssectie die is gekoppeld aan een container.Beheerde identiteitsauthenticatie verandert de volumeconfiguratie op app-niveau niet. Blijf
storageType: AzureFilegebruiken voor SMB-mounts.Voeg een
volumeMountssectie toe aan denginxcontainer in decontainerssectie.containers: - image: nginx name: my-container-app volumeMounts: - volumeName: my-azure-file-volume mountPath: /var/log/nginxDe nieuwe
volumeMountssectie bevat de volgende eigenschappen:Vastgoed Beschrijving volumeNameDeze waarde moet overeenkomen met de naam die is gedefinieerd in de volumesdefinitie.mountPathDeze 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 opslagmontage controleren
Nu de opslagkoppeling tot stand is gebracht, kunt u bestanden in Azure Storage bewerken vanuit uw container. Gebruik de volgende opdrachten om de opslagmount in actie 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_GROUPHet kan even duren voordat deze opdracht de externe shell opent. Zodra de shell gereed is, kunt u communiceren met de opslagkoppeling via bestandssysteemopdrachten. Zie Verbinding maken met een containerconsole in Azure Container Apps voor meer informatie.
Verander naar de map nginx /var/log/nginx .
cd /var/log/nginxGa terug naar de browser en navigeer naar de website en vernieuw de pagina een paar keer.
De aanvragen aan de website creëren een reeks logboekvermeldingen.
Ga terug naar de terminal en vermeld de waarden van de
/var/log/nginxmap.lsU ziet hoe de access.log - en error.log-bestanden in deze map worden weergegeven. Deze bestanden worden naar de Azure Files-mount in uw Azure Storage-share geschreven, die u in de vorige stappen hebt aangemaakt.
De inhoud van het access.log-bestand weergeven.
cat access.logSluit de interactieve shell van de container af om terug te keren naar uw lokale terminalsessie.
exitU 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_NAMENavigeer naar Azure Portal en open het opslagaccount dat in deze procedure is gemaakt.
Selecteer onder Gegevensopslagbestandskoppelingen.
Selecteer myfileshare om de access.log - en error.log bestanden te bekijken.
De hulpbronnen 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