Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Aplikacja kontenera ma dostęp do różnych typów magazynu. W razie potrzeby pojedyncza aplikacja może korzystać z więcej niż jednego typu pamięci masowej.
Uwaga / Notatka
Unikaj używania znaków specjalnych w nazwach woluminów, aby zapobiec niepowodzeniom wdrożenia. Na przykład nazwany credentials.json wolumin zawiera znak specjalny (.), który powoduje błąd wdrożenia.
| Typ magazynu | Opis | Wytrwałość | Przykład użycia |
|---|---|---|---|
| Magazyn o zakresie kontenera | Magazyn efemeryczny dostępny dla uruchomionego kontenera | Dane są dostępne do momentu zamknięcia kontenera | Zapisywanie lokalnej pamięci podręcznej aplikacji. |
| Magazyn o zakresie repliki | Magazyn efemeryczny do udostępniania plików między kontenerami w tej samej replice | Dane są dostępne do momentu zamknięcia repliki | Główny kontener aplikacji zapisujący pliki dziennika przetwarzane przez kontener przyczepki. |
| Azure Files | Trwałe przechowywanie | Dane są utrwalane w Azure Files | Zapisywanie plików w udziale plików w celu udostępnienia danych innym systemom. |
Uwaga / Notatka
Usługa Azure Container Apps nie obsługuje instalowania udziałów plików z usług Azure NetApp Files ani Azure Blob Storage.
Pamięć tymczasowa
Aplikacja kontenera może odczytywać i zapisywać dane tymczasowe w magazynie efemerycznym. Magazyn efemeryczny może być ograniczony do kontenera lub repliki. Łączna ilość magazynu o zakresie kontenera i repliki dostępnego dla każdej repliki zależy od łącznej liczby procesorów wirtualnych przydzielonych do repliki.
| wirtualne jednostki centralne przetwarzania (vCPUs) | Całkowita pamięć efemeryczna |
|---|---|
| 0,25 lub mniej | 1 GiB |
| 0,5 lub mniej | 2 GiB |
| 1 lub mniej | 4 GiB |
| Ponad 1 | 8 GiB |
Magazyn o zakresie kontenera
Kontener może zapisywać dane we własnym systemie plików.
Magazyn systemu plików kontenerów ma następujące cechy:
- Magazyn jest tymczasowy i zniknie po zamknięciu lub ponownym uruchomieniu kontenera.
- Tylko procesy uruchomione w bieżącym kontenerze mogą wyświetlać pliki zapisane w tym magazynie.
Magazyn o zakresie repliki
Możesz zainstalować efemeryczny, tymczasowy wolumin, który jest odpowiednikiem emptyDir (pusty katalog) na platformie Kubernetes. Ten magazyn jest ograniczony do pojedynczej repliki. Użyj woluminu EmptyDir , aby udostępnić dane między kontenerami w tej samej replice.
Magazyn o zakresie repliki ma następujące cechy:
- Pliki są utrwalane przez okres istnienia repliki.
- Jeśli kontener w replice zostanie uruchomiony ponownie, pliki w woluminie pozostaną.
- Wszystkie kontenery init lub aplikacji w replice mogą instalować ten sam wolumin.
- Kontener może instalować wiele
EmptyDirwoluminów.
Aby skonfigurować magazyn o zakresie repliki, najpierw zdefiniuj wolumin EmptyDir w poprawce. Następnie zdefiniuj instalację woluminu w jednym lub kilku kontenerach w wersji.
Wymagania wstępne
| Wymaganie | Instrukcje |
|---|---|
| Konto platformy Azure | Jeśli go nie masz, utwórz bezpłatne konto. |
| Środowisko usługi Azure Container Apps | Utwórz środowisko aplikacji kontenera. |
| Konfiguracja tożsamości zarządzanej | Upewnij się, że tożsamość zarządzana skojarzona ze środowiskiem usługi Container Apps ma przypisane odpowiednie role w celu uzyskania dostępu do usługi Azure Files. |
Konfiguracja
Podczas konfigurowania magazynu w zakresie repliki za pomocą Azure CLI, należy użyć definicji YAML do utworzenia lub zaktualizowania aplikacji kontenera.
Aby zaktualizować istniejącą aplikację kontenera do korzystania z magazynu o zakresie repliki, wyeksportuj specyfikację aplikacji do pliku YAML o nazwie app.yaml.
az containerapp show -n <APP_NAME> -g <RESOURCE_GROUP_NAME> -o yaml > app.yamlWprowadź następujące zmiany w specyfikacji aplikacji kontenera.
- Dodaj tablicę
volumestemplatedo sekcji definicji aplikacji kontenera i zdefiniuj wolumin. Jeśli masz już tablicęvolumes, dodaj do niej nowy wolumin.- Jest
nameto identyfikator woluminu. - Użyj
EmptyDirjako .storageType
- Jest
- Dla każdego kontenera w szablonie, w którym chcesz zainstalować wolumin, zdefiniuj instalację woluminu w tablicy
volumeMountsdefinicji kontenera.- Jest to
volumeNamenazwa zdefiniowana w tablicyvolumes. - Jest to
mountPathścieżka w kontenerze, w której ma zostać zainstalowany wolumin.
- Jest to
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- Dodaj tablicę
Zaktualizuj aplikację kontenera przy użyciu pliku YAML.
az containerapp update --name <APP_NAME> --resource-group <RESOURCE_GROUP_NAME> \ --yaml app.yaml
Pełny przykład można znaleźć w specyfikacji YAML.
Aby utworzyć wolumin o zakresie repliki i zainstalować go w kontenerze, wprowadź następujące zmiany w zasobie aplikacji kontenera w szablonie usługi ARM:
- Dodaj tablicę
volumestemplatedo sekcji definicji aplikacji kontenera i zdefiniuj wolumin. Jeśli masz już tablicęvolumes, dodaj do niej nowy wolumin.- Jest
nameto identyfikator woluminu. - Użyj
EmptyDirjako .storageType
- Jest
- Dla każdego kontenera w szablonie, w którym chcesz zainstalować wolumin, zdefiniuj instalację woluminu w tablicy
volumeMountsdefinicji kontenera.- Jest to
volumeNamenazwa zdefiniowana w tablicyvolumes. - Jest to
mountPathścieżka w kontenerze, w której ma zostać zainstalowany wolumin.
- Jest to
Przykładowy fragment kodu szablonu usługi ARM:
{
"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"
}
]
}
}
}
Aby zapoznać się z pełnym przykładem, zobacz specyfikację interfejsu API szablonu usługi ARM .
Aby utworzyć wolumin o zakresie repliki i zainstalować go w kontenerze, wdróż nową poprawkę aplikacji kontenera przy użyciu witryny Azure Portal.
W witrynie Azure Portal przejdź do aplikacji kontenera.
Wybierz Zarządzanie wersjami w menu po lewej stronie.
Wybierz pozycję Utwórz nową poprawkę.
Wybierz kontener, w którym chcesz zainstalować wolumin.
W okienku Edytowanie kontekstu kontenera wybierz kartę Instalacje woluminów .
W sekcji Magazyn efemeryczny utwórz nowy wolumin z następującymi informacjami:
- Nazwa woluminu: nazwa woluminu efemerycznego.
- Ścieżka instalacji: ścieżka bezwzględna w kontenerze, aby zainstalować wolumin.
Wybierz pozycję Zapisz , aby zapisać zmiany i zamknąć okienko kontekstowe.
Wybierz pozycję Utwórz , aby utworzyć nową poprawkę.
Wolumin Azure Files
Udział plików z Azure Files można zainstalować jako wolumin w kontenerze.
Magazyn Azure Files ma następujące cechy:
- Pliki zapisane w lokalizacji instalacji są utrwalane w udziale plików.
- Pliki w udziale są dostępne za pośrednictwem lokalizacji instalacji.
- Wiele kontenerów może instalować ten sam udział plików, w tym te, które znajdują się w innej replice, poprawce lub aplikacji kontenera.
- Wszystkie kontenery, które instalują udział, mogą uzyskiwać dostęp do plików zapisanych przez dowolny inny kontener lub metodę.
- W jednym kontenerze można zainstalować więcej niż jeden wolumin Azure Files.
Azure Files obsługuje zarówno protokoły SMB (Server Message Block), jak i NFS (Network File System). Udział Azure Files można zainstalować przy użyciu dowolnego protokołu. Udział plików zdefiniowany w środowisku musi być skonfigurowany przy użyciu tego samego protokołu, który jest używany przez udział plików na koncie magazynu.
Aby włączyć usługę Azure Files Storage w kontenerze, należy skonfigurować środowisko i aplikację kontenera w następujący sposób:
- Utwórz definicję magazynu w środowisku usługi Container Apps.
- Jeśli używasz systemu plików NFS, środowisko musi być skonfigurowane przy użyciu niestandardowej sieci wirtualnej, a konto magazynu musi być skonfigurowane tak, aby zezwalać na dostęp z sieci wirtualnej. Aby uzyskać więcej informacji, zobacz Udziały plików NFS w Azure Files .
- Jeśli środowisko jest skonfigurowane przy użyciu niestandardowej sieci wirtualnej, musisz zezwolić na porty 445 i 2049 w sieciowej grupie zabezpieczeń skojarzonej z podsiecią.
- Zdefiniuj wolumin typu
AzureFile(SMB) lubNfsAzureFile(NFS) w poprawce. - Zdefiniuj instalację woluminu w jednym lub kilku kontenerach w wersji.
- Używane konto magazynu Azure Files musi być dostępne z sieci wirtualnej aplikacji kontenera. Aby uzyskać więcej informacji, zobacz Udzielanie dostępu z sieci wirtualnej.
Wymagania wstępne
| Wymaganie | Instrukcje |
|---|---|
| Konto platformy Azure | Jeśli go nie masz, utwórz bezpłatne konto. |
| Konto usługi Azure Storage | Utwórz konto magazynowe. |
| Środowisko usługi Azure Container Apps | Utwórz środowisko aplikacji kontenera. |
Konfiguracja
Podczas konfigurowania aplikacji kontenera do instalowania woluminu usługi Azure Files przy użyciu interfejsu wiersza polecenia platformy Azure należy użyć definicji YAML do utworzenia lub zaktualizowania aplikacji kontenera.
Aby zapoznać się z samouczkiem krok po kroku dotyczącym montowania udziału plików SMB, zobacz Tworzenie montowania magazynu Azure Files w usłudze Azure Container Apps.
Dodaj definicję magazynu do środowiska usługi Container Apps.
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 ReadWriteZastąp
<STORAGE_ACCOUNT_NAME>i<STORAGE_ACCOUNT_KEY>nazwą i kluczem konta magazynu. Zastąp<STORAGE_SHARE_NAME>ciąg nazwą udziału plików na koncie magazynu.Prawidłowe wartości dla
--access-modeto iReadWriteReadOnly.Aby zaktualizować istniejącą aplikację kontenera w celu zainstalowania udziału plików, wyeksportuj specyfikację aplikacji do pliku YAML o nazwie app.yaml.
az containerapp show -n <APP_NAME> -g <RESOURCE_GROUP_NAME> -o yaml > app.yamlWprowadź następujące zmiany w specyfikacji aplikacji kontenera.
- Dodaj tablicę
volumestemplatedo sekcji definicji aplikacji kontenera i zdefiniuj wolumin. Jeśli masz już tablicęvolumes, dodaj do niej nowy wolumin.- Jest
nameto identyfikator woluminu. - W przypadku
storageTypeprogramu należy użyćAzureFileprotokołu SMB lubNfsAzureFilesystemu plików NFS. Ta wartość musi być zgodna z typem magazynu zdefiniowanym w środowisku. - W przypadku
storageNameprogramu użyj nazwy magazynu zdefiniowanego w środowisku. - Jest to
mountOptionsoddzielony przecinkami ciąg opcji montowania. Aby uzyskać więcej informacji, zobacz Use mountOptions settings in Azure Files (Używanie ustawień mountOptions w usłudze Azure Files). - Lista
secretsjest listą wpisów tajnych do zainstalowania w woluminie. Aby uzyskać więcej informacji, zobacz Instalowanie tajemnic w woluminie.
- Jest
- Dla każdego kontenera w szablonie, który chcesz zainstalować w magazynie Azure Files, zdefiniuj instalację woluminu w tablicy
volumeMountsdefinicji kontenera.- Jest to
volumeNamenazwa zdefiniowana w tablicyvolumes. - Jest to
mountPathścieżka w kontenerze, w której ma zostać zainstalowany wolumin. - Jest
subPathto ścieżka w woluminie do zainstalowania. Jeśli nie określisz tej wartości, katalog główny woluminu zostanie zainstalowany. Aby uzyskać więcej informacji, zobacz (#sub-path).
- Jest to
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- Dodaj tablicę
Zaktualizuj aplikację kontenera przy użyciu pliku YAML.
az containerapp update --name <APP_NAME> --resource-group <RESOURCE_GROUP_NAME> \ --yaml app.yaml
Pełny przykład można znaleźć w specyfikacji YAML.
Poniższe fragmenty szablonu usługi ARM pokazują, jak dodać udział Azure Files do środowiska usługi Container Apps i używać go w aplikacji kontenera.
Dodaj zasób podrzędny
storagesdo środowiska usługi Container Apps.{ "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" } } } ] }Zaktualizuj zasób aplikacji kontenera, aby dodać wolumin i instalację woluminu.
{ "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" } ] } } }- Dodaj tablicę
volumestemplatedo sekcji definicji aplikacji kontenera i zdefiniuj wolumin. Jeśli masz już tablicęvolumes, dodaj do niej nowy wolumin.- Jest
nameto identyfikator woluminu. - W przypadku
storageTypeprogramu należy użyćAzureFileprotokołu SMB lubNfsAzureFilesystemu plików NFS. Ta wartość musi być zgodna z typem magazynu zdefiniowanym w środowisku. - W przypadku
storageNameprogramu użyj nazwy magazynu zdefiniowanego w środowisku. - Jest to
mountOptionsoddzielony przecinkami ciąg opcji montowania. Aby uzyskać więcej informacji, zobacz Use mountOptions settings in Azure Files (Używanie ustawień mountOptions w usłudze Azure Files). - Lista
secretsjest listą wpisów tajnych do zainstalowania w woluminie. Aby uzyskać więcej informacji, zobacz Montowanie sekretów w woluminie.
- Jest
- Dla każdego kontenera w szablonie, który chcesz zainstalować w magazynie Azure Files, zdefiniuj instalację woluminu w tablicy
volumeMountsdefinicji kontenera.- Jest to
volumeNamenazwa zdefiniowana w tablicyvolumes. - Jest to
mountPathścieżka w kontenerze, w której ma zostać zainstalowany wolumin. - Wartość
subPath(opcjonalna) to ścieżka w woluminie do zainstalowania. Jeśli nie określisz go, katalog główny woluminu zostanie zainstalowany. Aby uzyskać więcej informacji, zobacz (#sub-path).
- Jest to
- Dodaj tablicę
Aby zapoznać się z pełnym przykładem, zobacz specyfikację interfejsu API szablonu usługi ARM .
Aby skonfigurować instalację woluminu dla magazynu Azure Files w Azure Portal, dodaj udział plików do środowiska Container Apps, a następnie dodaj instalację woluminu do aplikacji kontenera, tworząc nową poprawkę.
W Azure Portal przejdź do środowiska usługi Container Apps.
W okienku nawigacji w obszarze Ustawienia wybierz pozycję Azure Files.
Wybierz Dodaj.
Wybierz pozycję Server Message Block (SMB) lub Network File System (NFS), w zależności od protokołu używanego przez udział plików.
W okienku kontekstowym Dodawanie udziału plików wprowadź następujące informacje:
- Nazwa: nazwa udziału plików.
- Nazwa konta magazynu: nazwa konta magazynu, które zawiera udział plików.
- Klucz konta magazynu: klucz dostępu dla konta magazynu.
- Udział plików: nazwa udziału plików.
- Tryb dostępu: tryb dostępu do udziału plików. Prawidłowe wartości to Odczyt/Zapis i Tylko do odczytu.
Wybierz pozycję Dodaj , aby zamknąć okienko kontekstowe.
Wybierz pozycję Zapisz , aby zatwierdzić zmiany.
Przejdź do aplikacji kontenera.
W okienku nawigacji w obszarze Aplikacja wybierz pozycję Poprawki i repliki.
Wybierz pozycję Utwórz nową poprawkę.
Na stronie Tworzenie i wdrażanie nowej poprawki wybierz kartę Woluminy .
Wybierz Dodaj.
W okienku Dodaj wolumin ustaw następujące wartości.
- Typ woluminu: wolumin pliku platformy Azure.
- Nazwa: Wprowadź nazwę woluminu.
- Nazwa udziału plików: wybierz utworzony wcześniej udział plików.
- Opcje montowania: Opcjonalnie wprowadź oddzielony przecinkami ciąg opcji montowania. Aby uzyskać więcej informacji, zobacz Use mountOptions settings in Azure Files (Używanie ustawień mountOptions w usłudze Azure Files).
Wybierz pozycję Dodaj , aby zamknąć okienko kontekstowe.
Na stronie Tworzenie i ponowne stosowanie nowej poprawki wybierz kartę Kontener .
Wybierz kontener, w którym chcesz zainstalować wolumin.
W okienku Edytowanie kontekstu kontenera wybierz kartę Instalacje woluminów .
W obszarze Nazwa woluminu wybierz utworzony wcześniej wolumin.
W polu Ścieżka instalacji wprowadź ścieżkę bezwzględną w kontenerze, aby zainstalować wolumin.
W polu Ścieżka podrzędna (opcjonalnie) wprowadź ścieżkę w woluminie do zainstalowania. Jeśli nie określisz tej wartości, katalog główny woluminu zostanie zainstalowany. Aby uzyskać więcej informacji, zobacz (#sub-path).
Wybierz pozycję Zapisz , aby zapisać zmiany i zamknąć okienko kontekstowe.
Wybierz pozycję Utwórz , aby utworzyć nową poprawkę.
Ścieżka podrzędna
Podczas montowania zasobu udostępnionego z usługi Azure Files można określić zarówno ścieżkę montowania, jak i ścieżkę podrzędną.
- Ścieżka instalacji: ścieżka w kontenerze, w którym chcesz zainstalować wolumin.
- Ścieżka podrzędna: Ścieżka w woluminie, który chcesz zainstalować.
Ścieżka podrzędna jest opcjonalna. Jeśli nie określisz ścieżki podrzędnej, zamontowany zostanie root woluminu.
Ścieżka podrzędna jest ścieżką względną od katalogu głównego woluminu. Nie uruchamiaj ścieżki podrzędnej za pomocą polecenia /. Jeśli określisz ścieżkę podrzędną rozpoczynającą się od /, aplikacja kontenera może nie zostać uruchomiona. Na przykład my-volume-folder jest prawidłową ścieżką podrzędną, ale /my-volume-folder nie.
Ścieżka podrzędna może odwoływać się do folderu lub pliku w woluminie.
Jeśli ścieżka podrzędna odwołuje się do folderu, ścieżka instalacji powinna odwoływać się do pustego folderu w kontenerze.
Jeśli ścieżka podrzędna odwołuje się do pliku, ścieżka instalacji powinna odwoływać się do pliku, który jeszcze nie istnieje w kontenerze.
Załóżmy na przykład, że ścieżka podrzędna to
my-volume-folder/my-volume-file.txt, a ścieżka instalacji to/my-container-folder/my-container-file. Folder/my-container-folderpowinien już istnieć w kontenerze, ale nie powinien jeszcze zawierać plikumy-container-file.txt.
System ignoruje wszystkie ukośniki ścieżki podrzędnej.