Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Dowiedz się, jak zapisywać w trwałej pamięci masowej w aplikacji kontenerowej przy użyciu punktu montażu Azure Files. Aby uzyskać więcej informacji na temat montowania magazynu, zobacz Używanie montowania magazynu w usłudze Azure Container Apps.
Ten samouczek wykorzystuje uwierzytelnianie za pomocą tożsamości zarządzanej (podgląd), co zalecamy dla nowych instalacji montowania plików SMB. Zarządzana tożsamość należy do środowiska Container Apps. Nie musisz pobierać, przechowywać ani rotować klucza konta pamięci, aby zamontować udział plików.
Z tego samouczka dowiesz się, jak wykonywać następujące działania:
- Tworzenie środowiska usługi Container Apps
- Tworzenie konta usługi Azure Storage
- Określenie udziału plików w koncie magazynowym
- Udziel zarządzanej tożsamości środowiska dostępu do udziału plików
- Powiąż środowisko z udziałem plików storage.
- Montowanie udziału magazynu w jednym kontenerze
- Zweryfikuj punkt montowania magazynu, wyświetlając dziennik dostępu do witryny internetowej
Uwaga
Usługa Azure Container Apps obsługuje montowanie udziałów plików przy użyciu protokołów SMB i NFS. W tym samouczku przedstawiono instalowanie udziału usługi Azure Files przy użyciu protokołu SMB. Aby dowiedzieć się więcej na temat montowania udziałów NFS, sprawdź Montowanie zasobów w usłudze Azure Container Apps.
Wymagania wstępne
- Zainstaluj najnowszą wersję interfejsu wiersza polecenia platformy Azure.
- Użyj subskrypcji Azure z uprawnieniami do tworzenia zasobów i przypisywania ról kontroli dostępu opartej na rolach na platformie Azure (Azure RBAC). Aby przypisać role, potrzebujesz
Microsoft.Authorization/roleAssignments/writeuprawnienia w zakresie konta magazynu.
Konfigurowanie środowiska
Następujące polecenia definiują zmienne środowiskowe i upewnij się, że rozszerzenie Container Apps jest aktualne.
Zaloguj się do Azure CLI.
az loginSkonfiguruj zmienne środowiskowe używane w kolejnych poleceniach.
RESOURCE_GROUP="my-container-apps-group" ENVIRONMENT_NAME="my-storage-environment" LOCATION="canadacentral"Upewnij się, że masz najnowszą wersję rozszerzenia CLI Azure dla Container Apps.
az extension add -n containerapp --upgradeZarejestruj przestrzeń nazw
Microsoft.App.az provider register --namespace Microsoft.AppZarejestruj dostawcę
Microsoft.OperationalInsightsdla obszaru roboczego usługi Azure Monitor Log Analytics, jeśli jeszcze go nie używałeś.az provider register --namespace Microsoft.OperationalInsights
Tworzenie środowiska
Poniższe kroki umożliwiają utworzenie grupy zasobów i środowiska usługi Container Apps.
Utwórz grupę zasobów.
az group create \ --name $RESOURCE_GROUP \ --location $LOCATION \ --query "properties.provisioningState"Po utworzeniu polecenie zwraca komunikat "Powodzenie".
Na końcu tego samouczka możesz usunąć grupę zasobów, aby usunąć wszystkie usługi utworzone w tym artykule.
Tworzenie środowiska usługi Container Apps.
az containerapp env create \ --name $ENVIRONMENT_NAME \ --resource-group $RESOURCE_GROUP \ --location "$LOCATION" \ --mi-system-assigned \ --query "properties.provisioningState"Po utworzeniu polecenie zwraca komunikat "Powodzenie".
Użyj flagi
--mi-system-assigned, aby włączyć przypisaną przez system tożsamość zarządzaną środowiska. W kolejnych etapach przyznajesz tej tożsamości dostęp do udziału plików.Punkty montowania magazynu są skojarzone ze środowiskiem aplikacji kontenerowych i konfigurowane w ramach poszczególnych aplikacji kontenerowych.
Konfigurowanie konta magazynu
Następnie utwórz konto magazynu i utwórz udział plików, aby podłączyć go do aplikacji kontenera.
Zdefiniuj nazwę konta pamięci masowej.
To polecenie generuje losowy sufiks nazwy konta magazynu w celu zapewnienia unikalności.
STORAGE_ACCOUNT_NAME="myacastorageaccount$RANDOM"Tworzenie konta usługi Azure Storage.
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 provisioningStatePo utworzeniu polecenie zwraca komunikat "Powodzenie".
Flaga
--enable-smb-oauth truewłącza Managed Identity for SMB (SMBOAuth) na koncie pamięci masowej. Jeśli używasz istniejącego konta pamięci, włącz to ustawienie przed utworzeniem mounta. Instrukcje można znaleźć w artykule Konfiguruj właściwość dostępu do zarządzanej tożsamości na koncie magazynu.Ustawienia bezpieczeństwa SMB konta magazynowego muszą również umożliwiać uwierzytelnianie Kerberos. Jeśli używasz niestandardowego profilu bezpieczeństwa SMB, zobacz ustawienia bezpieczeństwa SMB.
Zdefiniuj nazwę udziału plików.
STORAGE_SHARE_NAME="myfileshare"Utwórz udział plikowy usługi Azure Storage.
az storage share-rm create \ --resource-group $RESOURCE_GROUP \ --storage-account $STORAGE_ACCOUNT_NAME \ --name $STORAGE_SHARE_NAME \ --quota 1024 \ --enabled-protocols SMB \ --output tableZdefiniuj nazwę instalacji magazynu.
STORAGE_MOUNT_NAME="mystoragemount"Ta wartość jest nazwą używaną do definiowania linku instalacji magazynu ze środowiska usługi Container Apps do konta usługi Azure Storage.
Przyznaj zarządzanej tożsamości dostęp
Przypisz rolę Storage File Data SMB MI Admin do zarządzanej tożsamości środowiska w zakresie konta magazynowego. Ta rola autoryzuje tożsamość do dostępu do plików i katalogów w udziale SMB.
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"
Odczekaj, aż przypisanie ról się rozpropaguje, przed utworzeniem punktu instalacji magazynu. Aby przypisać rolę w portalu Azure, zobacz Przypisz wbudowaną rolę RBAC do tożsamości zarządzanej.
Stwórz punkt montażu dysku
Teraz możesz zaktualizować konfigurację aplikacji kontenera, aby obsługiwać montowanie magazynu.
Utwórz link do pamięci masowej w środowisku.
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 tableTo polecenie tworzy połączenie między środowiskiem Container Apps a udziałem plików utworzonym za pomocą polecenia
az storage share-rm. Opcja--azure-file-identity systemuwierzytelnia się w usłudze Azure Files, korzystając z tożsamości zarządzanej przypisanej przez system środowiska.Dla zarządzanej tożsamości przypisanej przez użytkownika przypisz tę tożsamość środowisku i użyj jej pełnego ID zasobu zamiast
system. Uwierzytelnianie klucza konta magazynowego pozostaje wspierane jako alternatywa. Nie należy łączyć--azure-file-identityz--azure-file-account-keyani z--azure-file-key-vault-secret-url. Przykłady można znaleźć w artykule Use storage mounts in Azure Container Apps.Teraz, gdy konto magazynu i środowisko są połączone, możesz utworzyć aplikację kontenera, która korzysta z punktu montowania magazynu.
Zdefiniuj nazwę aplikacji kontenera.
CONTAINER_APP_NAME="my-container-app"Utwórz aplikację kontenera.
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.fqdnTo polecenie wyświetla adres URL nowej aplikacji kontenera.
Skopiuj adres URL i wklej go w przeglądarce internetowej, aby przejść do witryny internetowej.
Po załadowaniu strony zostanie wyświetlony komunikat "Witamy w nginx!". Pozostaw otwartą kartę przeglądarki. Wrócisz do witryny internetowej podczas kroków weryfikacji montowania pamięci.
Po potwierdzeniu, że aplikacja kontenera została skonfigurowana, możesz zaktualizować aplikację, dodając definicję połączenia magazynu.
Wyeksportuj konfigurację aplikacji kontenera.
az containerapp show \ --name $CONTAINER_APP_NAME \ --resource-group $RESOURCE_GROUP \ --output yaml > app.yamlUwaga
Chociaż ta aplikacja nie ma tajemnic, wiele aplikacji zawiera sekrety. Domyślnie podczas eksportowania konfiguracji aplikacji wartości tajnych danych nie są uwzględniane w wygenerowanym pliku YAML.
Jeśli nie musisz zmieniać wartości wpisów tajnych, możesz usunąć sekcję
secrets, a wpisy tajne pozostaną niezmienione. Alternatywnie, jeśli musisz zmienić wartość wpisu tajnego, przed podjęciem próby zaktualizowania aplikacji upewnij się, że podano zarównoname, jak ivaluedla wszystkich wpisów tajnych w pliku. Pominięcie tajemnicy z sekcjisecretspowoduje usunięcie tej tajemnicy.Otwórz plik app.yaml w edytorze kodu.
Zastąp definicję
volumes: nullw sekcjitemplatedefinicjąvolumes:odwołującą się do woluminu magazynu. Sekcja szablonu powinna wyglądać następująco: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: AzureFileNowa
template.volumessekcja zawiera następujące właściwości.Nieruchomość / Majątek Opis nameTa wartość identyfikuje wolumin na poziomie aplikacji i jest przywoływana przez volumeNamew punkcie montowania woluminu kontenera.storageNameTa wartość odpowiada nazwie definicji magazynu utworzonej przez wywołanie polecenia az containerapp env storage set.storageTypeTa wartość określa typ woluminu magazynu zdefiniowanego dla środowiska. W takim przypadku instalacja usługi Azure Files jest zadeklarowana. Sekcja
volumesdefiniuje woluminy na poziomie aplikacji, do których kontener aplikacji lub kontenery pomocnicze mogą odwoływać się za pomocą sekcjivolumeMountspowiązanej z kontenerem.Uwierzytelnianie tożsamości zarządzanej nie zmienia konfiguracji woluminów na poziomie aplikacji. Kontynuuj używanie
storageType: AzureFiledo montażu SMB.Dodaj sekcję
volumeMountsdo konteneranginxw sekcjicontainers.containers: - image: nginx name: my-container-app volumeMounts: - volumeName: my-azure-file-volume mountPath: /var/log/nginxvolumeMountsNowa sekcja zawiera następujące właściwości:Nieruchomość / Majątek Opis volumeNameTa wartość musi być zgodna z nazwą zdefiniowaną volumesw definicji.mountPathTa wartość definiuje ścieżkę w kontenerze, w którym jest zainstalowany magazyn. Zaktualizuj aplikację kontenera przy użyciu nowej konfiguracji punktu montowania pamięci.
az containerapp update \ --name $CONTAINER_APP_NAME \ --resource-group $RESOURCE_GROUP \ --yaml app.yaml \ --output table
Weryfikowanie instalacji magazynu
Po zamontowaniu magazynu, możesz zarządzać plikami w usłudze Azure Storage z poziomu kontenera. Użyj następujących poleceń, aby obserwować działanie montowania pamięci masowej.
Otwórz interaktywną powłokę dla aplikacji kontenerowej, aby wykonywać polecenia wewnątrz działającego kontenera.
az containerapp exec \ --name $CONTAINER_APP_NAME \ --resource-group $RESOURCE_GROUPTo polecenie może potrwać chwilę, aby otworzyć powłokę zdalną. Gdy powłoka będzie gotowa, możesz wchodzić w interakcje z instalacją magazynu za pomocą poleceń systemu plików. Aby uzyskać więcej informacji, zobacz Łączenie z konsolą kontenera w usłudze Azure Container Apps.
Przejdź do folderu nginx /var/log/nginx .
cd /var/log/nginxWróć do przeglądarki i przejdź do witryny internetowej i odśwież stronę kilka razy.
Żądania kierowane do witryny internetowej tworzą serię wpisów w strumieniu dziennika.
Wróć do terminalu
/var/log/nginxi wyświetl wartości folderu.lsZwróć uwagę, jak pliki access.log i error.log są wyświetlane w tym folderze. Te pliki są zapisywane w instalacji usługi Azure Files w udziale usługi Azure Storage utworzonym w poprzednich krokach.
Wyświetl zawartość pliku access.log .
cat access.logZamknij interaktywną powłokę kontenera, aby wrócić do lokalnej sesji terminalu.
exitTeraz możesz wyświetlić pliki w witrynie Azure Portal, aby sprawdzić, czy istnieją na koncie usługi Azure Storage. Wydrukuj nazwę losowo wygenerowanego konta przechowywania.
echo $STORAGE_ACCOUNT_NAMEPrzejdź do portalu Azure i otwórz konto magazynowe utworzone w tej procedurze.
W obszarze Magazyn danych wybierz pozycję Udziały plików.
Wybierz myfileshare , aby zobaczyć pliki access.log i error.log .
Czyszczenie zasobów
Jeśli nie zamierzasz nadal używać tej aplikacji, uruchom następujące polecenie, aby usunąć grupę zasobów wraz ze wszystkimi zasobami utworzonymi w tym artykule.
az group delete \
--name $RESOURCE_GROUP