Montaże pamięci masowej w Azure Container Apps

Aplikacja kontenera ma dostęp do różnych typów przestrzeni dyskowej. 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 przestrzeni kontenera Przestrzeń efemeryczna dostępna dla działającego 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 do Azure Files Zapisywanie plików w udziale plików w celu udostępnienia danych innym systemom.

Uwaga / Notatka

Azure Container Apps nie obsługuje instalowania udziałów plików z 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ść pamięci ograniczonej do kontenera i repliki dostępna dla każdej repliki zależy od łącznej liczby procesorów wirtualnych przydzielonych każdej replice.

wirtualne jednostki centralne przetwarzania (vCPUs) Całkowite tymczasowe magazynowanie
0,25 lub mniej 1 GiB
0,5 lub mniej 2 GiB
1 lub mniej 4 GiB
Ponad 1 8 GiB

Przechowywanie o zakresie kontenera

Kontener może zapisywać dane we własnym systemie plików.

Przechowywanie systemu plików kontenera 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. Przechowywanie jest ograniczone do jednej repliki. Użyj woluminu EmptyDir , aby udostępnić dane między kontenerami w tej samej replice.

Magazyn przeznaczony dla 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 EmptyDir woluminów.

Aby skonfigurować pamięć o zakresie repliki, najpierw zdefiniuj wolumin EmptyDir w wersji. Następnie zdefiniuj podłączenie wolumenu w jednym lub kilku kontenerach w rewizji.

Wymagania wstępne

Wymaganie Instrukcje
konto Azure Jeśli go nie masz, utwórz bezpłatne konto.
środowisko Azure Container Apps Utwórz środowisko aplikacji kontenera.

Konfiguracja

Podczas konfigurowania magazynu ograniczonego do repliki przy użyciu Azure CLI, należy użyć definicji YAML do utworzenia lub zaktualizowania aplikacji kontenerowej.

  1. Aby zaktualizować istniejącą aplikację kontenera do używania pamięci ze zasięgiem repliki, wyeksportuj specyfikację aplikacji do pliku YAML o nazwie app.yaml.

    az containerapp show -n <APP_NAME> -g <RESOURCE_GROUP_NAME> -o yaml > app.yaml
    
  2. Wprowadź następujące zmiany w specyfikacji aplikacji kontenera.

    • Dodaj tablicę volumestemplate do sekcji definicji aplikacji kontenera i zdefiniuj wolumin. Jeśli masz już tablicę volumes , dodaj do niej nowy wolumin.
      • name jest identyfikatorem woluminu.
      • Użyj EmptyDir jako .storageType
    • Dla każdego kontenera w szablonie, w którym chcesz zamontować wolumin, zdefiniuj punkt montowania woluminu w tablicy volumeMounts definicji kontenera.
      • Nazwa volumeName jest zdefiniowana w tablicy volumes.
      • Jest to mountPath ścieżka w kontenerze, na której ma zostać zamontowany wolumin.
    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
    
  3. 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 ograniczony do repliki i zainstalować go w kontenerze, wprowadź następujące zmiany w zasobie aplikacji kontenerowej w szablonie ARM.

  • Dodaj tablicę volumestemplate do sekcji definicji aplikacji kontenera i zdefiniuj wolumin. Jeśli masz już tablicę volumes , dodaj do niej nowy wolumin.
    • name jest identyfikatorem woluminu.
    • Użyj EmptyDir jako .storageType
  • Dla każdego kontenera w szablonie, w którym chcesz zamontować wolumin, zdefiniuj punkt montowania woluminu w tablicy volumeMounts definicji kontenera.
    • Nazwa volumeName jest zdefiniowana w tablicy volumes.
    • Jest to mountPath ścieżka w kontenerze, na której ma zostać zamontowany wolumin.

Przykładowy fragment kodu szablonu 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"
        }
      ]
    }
  }
}

Zobacz specyfikację API szablonu ARM dla pełnego przykładu.

Aby utworzyć wolumin o zakresie repliki i zainstalować go w kontenerze, wdróż nową poprawkę aplikacji kontenera przy użyciu portalu Azure.

  1. W portalu Azure przejdź do aplikacji kontenera.

  2. Wybierz Zarządzanie wersjami w menu po lewej stronie.

  3. Wybierz pozycję Utwórz nową poprawkę.

  4. Wybierz kontener, w którym chcesz zainstalować wolumin.

  5. W okienku kontekstu Edytowanie kontenera wybierz kartę Punkty montowania woluminów.

  6. W sekcji Magazyn efemeryczny utwórz nowy wolumin z następującymi informacjami:

    • Nazwa woluminu: nazwa woluminu efemerycznego.
    • Ścieżka montowania: ścieżka bezwzględna w kontenerze do zamontowania woluminu.
  7. Wybierz pozycję Zapisz , aby zapisać zmiany i zamknąć okienko kontekstowe.

  8. Wybierz pozycję Utwórz , aby utworzyć nową poprawkę.

wolumin Azure Files

Możesz zamontować udział plików z Azure Files jako wolumin w kontenerze.

Important

Azure Container Apps obsługuje tylko klasyczne udziały plików Azure, które są tworzone w ramach konta pamięci masowej (typ Microsoft.Storage/storageAccounts/fileServices/shares zasobu). Container Apps nie obsługuje nowszego typu zasobu najwyższego poziomu Microsoft.FileShares. Jeśli spróbujesz zamontować zasób Microsoft.FileShares, operacja zakończy się niepowodzeniem. Aby utworzyć obsługiwany udział plików, zobacz Tworzenie klasycznego udziału plików platformy Azure.

Usługa Azure Files ma następujące charakterystyki:

  • 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 montować więcej niż jeden wolumin Azure Files.

Azure Files obsługuje protokoły SMB (blok komunikatów serwera) i NFS (system plików sieciowych). 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 przechowywania.

W przypadku nowych montowań udziałów SMB używaj uwierzytelniania tożsamością zarządzaną (wersja zapoznawcza) zamiast kluczy konta magazynu. Container Apps używa tożsamości zarządzanej przypisanej przez system lub użytkownika przypisanej do środowiska Container Apps, a nie do pojedynczej aplikacji kontenerowej, aby uwierzytelnić się w Azure Files. Ten tryb eliminuje potrzebę pobierania, przechowywania lub obracania klucza konta magazynu. Musisz wyraźnie wybrać uwierzytelnianie tożsamością zarządzaną w definicji pamięci masowej; istniejące montowania z użyciem klucza konta magazynu pozostają obsługiwane.

Uwierzytelnianie tożsamości zarządzanej dotyczy tylko udziałów SMB. Udziały NFS korzystają z sieciowych kontroli dostępu i nie używają ustawień uwierzytelniania SMB.

Aby włączyć przechowywanie Azure Files w kontenerze, ustaw środowisko i aplikację kontenerową następująco:

  • 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 korzystasz z NFS, konto pamięci nie może wymagać szyfrowanych połączeń NFS. Container Apps nie obsługuje szyfrowania w tranzycie dla udostępnionych plików NFS. Jeśli na koncie magazynu jest włączone ustawienie Require Encryption in Transit for NFS albo jeśli to ustawienie nie jest skonfigurowane, a włączone jest ustawienie Secure transfer required, montowanie kończy się niepowodzeniem z błędem takim jak mount.nfs: access denied by server while mounting. Aby uzyskać więcej informacji, zobacz Szyfrowanie w trakcie transferu dla usługi NFS Azure.
  • 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) lub NfsAzureFile (NFS) w poprawce.
  • Zdefiniuj montowanie wolumenu w jednym lub kilku kontenerach w rewizji.
  • 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 Azure Jeśli go nie masz, utwórz bezpłatne konto.
Konto usługi Azure Storage Stwórz konto pamięci z klasycznym udostępnianiem plików Azure.
środowisko Azure Container Apps Utwórz środowisko aplikacji kontenera.
Zarządzana tożsamość do uwierzytelniania SMB Włącz systemową tożsamość zarządzaną środowiska lub przypisz środowisku zarządzaną tożsamość przypisaną przez użytkownika. Zobacz Zarządzaj tożsamościami środowiskowymi.
Ustawienia konta pamięci masowej dla uwierzytelniania tożsamości zarządzanej przez SMB Włącz tożsamość zarządzaną dla SMB (SMBOAuth) na koncie pamięci masowej. Ustawienia bezpieczeństwa SMB muszą również umożliwiać uwierzytelnianie Kerberos.
Azure RBAC for SMB managed identity authentication Przypisz rolę Storage File Data SMB MI Admin do wybranej tożsamości środowiska w zakresie konta magazynowego. Zobacz Przypisz wbudowaną rolę RBAC do tożsamości zarządzanej. Aby przypisać role, potrzebujesz Microsoft.Authorization/roleAssignments/write uprawnienia na tym zakresie. Zaczekaj, aż przypisania ról zostaną zastosowane, przed zamontowaniem udziału sieciowego.

Konfiguracja

Podczas konfigurowania aplikacji kontenera do instalowania woluminu Azure Files przy użyciu Azure CLI należy użyć definicji YAML do utworzenia lub zaktualizowania aplikacji kontenera.

Zainstaluj najnowszy Azure CLI i zaktualizuj rozszerzenie Container Apps:

az extension add --name containerapp --upgrade

Aby zapoznać się z samouczkiem krok po kroku dotyczącym instalowania udziału plików SMB, zobacz Tworzenie instalacji magazynu Azure Files w Azure Container Apps.

  1. Dodaj definicję magazynu do środowiska usługi Container Apps.

    Uwierzytelnianie za pomocą tożsamości zarządzanej (zalecane)

    Aby użyć systemowej tożsamości zarządzanej środowiska, najpierw ją włącz:

    az containerapp env identity assign --name my-env --resource-group my-group \
        --system-assigned
    

    Nadaj tożsamości rolę Storage File Data SMB MI Admin na swoim koncie pamięci i włącz Managed Identity for SMB, zgodnie z wymaganiami wstępnymi. Następnie stwórz definicję magazynu:

    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-identity system \
        --azure-file-share-name <STORAGE_SHARE_NAME> \
        --access-mode ReadWrite
    

    Zastąp elementy <STORAGE_ACCOUNT_NAME> i <STORAGE_SHARE_NAME> nazwami konta magazynu i udziału plików. Wartość system wybiera przypisaną przez system tożsamość zarządzaną środowiska.

    Aby zamiast tego użyć zarządzanej tożsamości przypisanej przez użytkownika, przypisz ją do środowiska:

    az containerapp env identity assign --name my-env --resource-group my-group \
        --user-assigned <MANAGED_IDENTITY_RESOURCE_ID>
    

    Nadaj tej tożsamości tę samą rolę na koncie magazynu. W poleceniu storage zastąp --azure-file-identity system go na --azure-file-identity <MANAGED_IDENTITY_RESOURCE_ID>, używając pełnego ID zasobu Azure tożsamości, a nie ID klienta ani identyfikatora głównego.

    Nie należy łączyć --azure-file-identity z --azure-file-account-key ani z --azure-file-key-vault-secret-url. Te tryby uwierzytelniania są wzajemnie wykluczające się.

    Uwierzytelnianie klucza konta magazynowego (alternatywne)

    Jeśli nie możesz użyć uwierzytelniania tożsamością zarządzaną, możesz zamiast tego użyć klucza konta magazynowego:

    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 ReadWrite
    

    Zastąp <STORAGE_ACCOUNT_NAME> i <STORAGE_ACCOUNT_KEY> nazwą i kluczem konta przechowywania. Zastąp <STORAGE_SHARE_NAME> nazwą udziału plików na koncie magazynowym.

    Prawidłowe wartości dla --access-mode to i ReadWriteReadOnly.

  2. 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.yaml
    
  3. Wprowadź następujące zmiany w specyfikacji aplikacji kontenera.

    • Dodaj tablicę volumestemplate do sekcji definicji aplikacji kontenera i zdefiniuj wolumin. Jeśli masz już tablicę volumes , dodaj do niej nowy wolumin.
      • name jest identyfikatorem woluminu.
      • W przypadku storageType użyj AzureFile dla SMB lub NfsAzureFile dla NFS. Ta wartość musi być zgodna z typem magazynu zdefiniowanym w środowisku.
      • W przypadku storageName użyj nazwy przechowywania zdefiniowanego w środowisku.
      • Jest to mountOptions oddzielony przecinkami ciąg opcji montowania. Aby uzyskać więcej informacji, zobacz Użyj ustawienia mountOptions w Azure Files.
      • Lista secrets to lista tajnych danych do zamontowania w woluminie. Aby uzyskać więcej informacji, zobacz Instalowanie tajemnic w woluminie.
    • Dla każdego kontenera w szablonie, który ma korzystać z magazynu Azure Files, zdefiniuj zamontowanie woluminu w definicji kontenera tablicy volumeMounts.
      • Nazwa volumeName jest zdefiniowana w tablicy volumes.
      • Jest to mountPath ścieżka w kontenerze, na której ma zostać zamontowany wolumin.
      • subPath to ścieżka w woluminie do zamontowania. Jeśli nie określisz tej wartości, katalog główny woluminu zostanie zainstalowany. Więcej informacji można znaleźć w artykule Subpath.
    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
    
  4. 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 szablonów ARM pokazują, jak dodać udział Azure Files do środowiska aplikacji kontenerowych i jak używać go w aplikacjach kontenerowych. W przypadku uwierzytelniania SMB przy użyciu tożsamości zarządzanej należy włączyć lub przypisać tożsamość w środowisku i spełnić wymagania wstępne dotyczące konta magazynu przed wdrożeniem definicji magazynu.

  1. Dodaj zasób podrzędny storages do środowiska usługi Container Apps.

    Uwierzytelnianie za pomocą tożsamości zarządzanej (zalecane)

    Po pierwsze, włącz zarządzaną tożsamość na zasobie Microsoft.App/managedEnvironments, a nie na zasobie Microsoft.App/containerApps. Aby włączyć tożsamość przypisaną przez system dla środowiska, dodaj następującą właściwość najwyższego poziomu identity do swojego zasobu środowiska:

    {
      "identity": {
        "type": "SystemAssigned"
      }
    }
    

    Połącz ten fragment z istniejącym zasobem środowiska, zachowując jego inną konfigurację. Użyj wersji interfejsu API środowiska, która obsługuje zarządzane tożsamości, na przykład 2026-03-02-preview. Schemat zasobów znajdziesz pod Microsoft.App/managedEnvironments.

    Włącz Managed Identity for SMB (SMBOAuth) na koncie pamięci masowej i przypisz tożsamości środowiska rolę Storage File Data SMB MI Admin w zakresie konta pamięci, zgodnie z wymaganiami wstępnymi.

    Następnie użyj wersji 2026-03-02-preview interfejsu API dla zasobu magazynu. Ustaw properties.azureFile.identity na system , aby wybrać tożsamość przypisaną przez system środowisku:

    {
      "type": "Microsoft.App/managedEnvironments/storages",
      "apiVersion": "2026-03-02-preview",
      "name": "[concat(parameters('environment_name'), '/myazurefiles')]",
      "properties": {
        "azureFile": {
          "accountName": "[parameters('storage_account_name')]",
          "identity": "system",
          "shareName": "[parameters('storage_share_name')]",
          "accessMode": "ReadWrite"
        }
      }
    }
    

    Aby zamiast tego użyć tożsamości zarządzanej przypisanej przez użytkownika, dodaj ją do właściwości najwyższego poziomu identity środowiska:

    {
      "identity": {
        "type": "UserAssigned",
        "userAssignedIdentities": {
          "[parameters('managed_identity_resource_id')]": {}
        }
      }
    }
    

    Zdefiniuj parametr managed_identity_resource_id jako string zawierający pełny identyfikator zasobu Azure tej tożsamości. W zasobie pamięci ustaw properties.azureFile.identity na [parameters('managed_identity_resource_id')] zamiast system. Nadaj tej tożsamości tę samą rolę na koncie magazynu.

    Zachowaj wszelkie tożsamości już przypisane do środowiska. Jeśli włączysz oba typy tożsamości, użyj SystemAssigned,UserAssigned dla identity.type środowiska i zachowaj jego userAssignedIdentities wpisy.

    Nie uwzględniaj accountKey ani accountKeyVaultProperties podczas korzystania z uwierzytelniania tożsamości zarządzanej. Dla schematu zasobów pamięci masowej zobacz Microsoft.App/managedEnvironments/storages.

    Uwierzytelnianie klucza konta magazynowego (alternatywne)

    Aby użyć klucza konta magazynowego, ustaw accountKey i pomiń identity. Zdefiniuj parametr szablonu storage_account_key jako secureString.

    {
      "type": "Microsoft.App/managedEnvironments/storages",
      "apiVersion": "2022-03-01",
      "name": "[concat(parameters('environment_name'), '/myazurefiles')]",
      "properties": {
        "azureFile": {
          "accountName": "[parameters('storage_account_name')]",
          "accountKey": "[parameters('storage_account_key')]",
          "shareName": "[parameters('storage_share_name')]",
          "accessMode": "ReadWrite"
        }
      }
    }
    

    Te fragmenty kodu dotyczące magazynu zakładają, że środowisko i udział plików już istnieją. Jeśli wdrożysz je w tym samym szablonie, dodaj środowisko i zasoby udziałów plików do tablicy dependsOn zasobów pamięci masowej. Do uwierzytelniania zarządzanej tożsamości dodaj też zależność do przypisania roli, jeśli utworzysz ją w tym szablonie. Zależność wdrożenia nie eliminuje opóźnień propagacji przypisania ról.

  2. Zaktualizuj zasób aplikacji kontenera, aby dodać wolumin i punkt montowania woluminu.

    Uwierzytelnianie SMB jest konfigurowane w definicji magazynu środowiska. Konfiguracja głośności na poziomie aplikacji jest taka sama w przypadku uwierzytelniania tożsamością zarządzaną i kluczem konta magazynu. Jeśli wdrożysz zasób pamięci masowej i aplikację kontenerową w tym samym szablonie, dodaj zasób pamięci do tablicy dependsOn aplikacji kontenerowej.

    {
      "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ę volumestemplate do sekcji definicji aplikacji kontenera i zdefiniuj wolumin. Jeśli masz już tablicę volumes , dodaj do niej nowy wolumin.
      • name jest identyfikatorem woluminu.
      • W przypadku storageType użyj AzureFile dla SMB lub NfsAzureFile dla NFS. Ta wartość musi być zgodna z typem magazynu zdefiniowanym w środowisku.
      • W przypadku storageName użyj nazwy przechowywania zdefiniowanego w środowisku.
      • Jest to mountOptions oddzielony przecinkami ciąg opcji montowania. Aby uzyskać więcej informacji, zobacz Użyj ustawienia mountOptions w Azure Files.
      • Lista secrets to lista tajnych danych do zamontowania w woluminie. Aby uzyskać więcej informacji, zobacz Instalowanie tajemnic w woluminie.
    • Dla każdego kontenera w szablonie, który ma korzystać z magazynu Azure Files, zdefiniuj zamontowanie woluminu w definicji kontenera tablicy volumeMounts.
      • Nazwa volumeName jest zdefiniowana w tablicy volumes.
      • Jest to mountPath ścieżka w kontenerze, na której ma zostać zamontowany wolumin.
      • Wartość subPath (opcjonalna) to ścieżka w woluminie do zainstalowania. Jeśli nie określisz go, katalog główny woluminu zostanie zainstalowany. Więcej informacji można znaleźć w artykule Subpath.

Zobacz specyfikację API szablonu ARM dla pełnego przykładu.

Aby skonfigurować montowanie woluminu dla magazynu Azure Files w portalu Azure, dodaj udział plików do środowiska usługi Container Apps, a następnie dodaj montowanie woluminu do aplikacji kontenera, tworząc nową rewizję. W przypadku nowych montaży SMB wybierz uwierzytelnianie za pomocą tożsamości zarządzanej.

  1. W portalu Azure przejdź do środowiska usługi Container Apps.

  2. Aby uwierzytelnić zarządzaną tożsamością SMB, wybierz Ustawienia>Tożsamość i włącz tożsamość przypisaną przez system lub dodaj tożsamość przypisaną przez użytkownika do środowiska. Przed dodaniem udostępnienia wypełnij ustawienia konta pamięci oraz przypisanie ról opisane w wymaganiach Azure Files.

  3. W okienku nawigacji w obszarze Ustawienia wybierz pozycję Instalacja woluminu.

  4. Wybierz Dodaj.

  5. Wybierz protokół Server Message Block (SMB) lub Network File System (NFS), w zależności od używanego przez twoje udostępnienie plików.

  6. W okienku kontekstowym Dodawanie udziału plików wprowadź następujące informacje:

    • Nazwa: Nazwa definicji pamięci środowiska.
    • Nazwa konta magazynowego: Nazwa konta magazynowego, które zawiera zasób plików.
    • Uwierzytelnianie: Wybierz Tożsamość zarządzaną (zalecana).
    • Tożsamość: Wybierz tożsamość przypisaną przez system środowiska lub tożsamość przypisaną przez użytkownika, przypisaną do środowiska, z listy zarządzanych tożsamości. Wybierz tożsamość, która ma rolę Storage File Data SMB MI Admin na koncie magazynu.
    • Nazwa udziału plików: Nazwa udziału plików SMB.
    • Tryb dostępu: tryb dostępu do zasobu udostępnionego. Prawidłowe wartości to Odczyt/Zapis i Tylko do odczytu.

    Aby zamiast tego użyć uwierzytelniania za pomocą klucza konta magazynu, wybierz Klucz konta magazynu w sekcji Uwierzytelnianie i wprowadź klucz dostępu konta magazynu. Wybierz jedną metodę uwierzytelniania dla definicji magazynu.

  7. Wybierz pozycję Dodaj , aby zamknąć okienko kontekstowe.

  8. Wybierz pozycję Zapisz , aby zatwierdzić zmiany.

  9. Przejdź do aplikacji kontenera.

  10. W okienku nawigacji w obszarze Aplikacja wybierz pozycję Poprawki i repliki.

  11. Wybierz pozycję Utwórz nową poprawkę.

  12. Na stronie Tworzenie i wdrażanie nowej poprawki wybierz kartę Woluminy .

  13. Wybierz Dodaj.

  14. W okienku Dodaj wolumin ustaw następujące wartości.

    • typ woluminu: Azure plików wolumin.
    • 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 Użyj ustawienia mountOptions w Azure Files.
  15. Wybierz pozycję Dodaj , aby zamknąć okienko kontekstowe.

  16. Na stronie Utwórz i wdroż nową wersję wybierz zakładkę Kontener .

  17. Wybierz kontener, w którym chcesz zamontować wolumin.

  18. W okienku kontekstu Edytowanie kontenera wybierz kartę Punkty montowania woluminów.

  19. W obszarze Nazwa woluminu wybierz utworzony wcześniej wolumin.

  20. W polu Ścieżka montowania wprowadź ścieżkę bezwzględną w kontenerze, aby zamontować wolumin.

  21. W polu Ścieżka podrzędna (opcjonalnie) wprowadź ścieżkę w woluminie do zamontowania. Jeśli nie określisz tej wartości, katalog główny woluminu zostanie zainstalowany. Więcej informacji można znaleźć w artykule Subpath.

  22. Wybierz pozycję Zapisz , aby zapisać zmiany i zamknąć okienko kontekstowe.

  23. Wybierz pozycję Utwórz , aby utworzyć nową poprawkę.

Ścieżka podrzędna

Podczas montowania udziału plików z 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 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.txt. Folder /my-container-folder powinien już istnieć w kontenerze, ale nie powinien jeszcze zawierać pliku my-container-file.txt.

System ignoruje wszystkie ukośniki ścieżki podrzędnej.