Udostępnij przez


Używanie instalacji magazynu w usłudze Azure Container Apps

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 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 znika po zamknięciu lub ponownym uruchomieniu kontenera.
  • Pliki zapisywane w tym magazynie są widoczne tylko dla procesów uruchomionych w bieżącym kontenerze.

Magazyn o zakresie repliki

Możesz zainstalować efemeryczny, tymczasowy wolumin, który jest odpowiednikiem EmptyDir (pustego katalogu) w 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 cały 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ć 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 o zakresie repliki przy użyciu interfejsu wiersza polecenia platformy Azure należy użyć definicji YAML do utworzenia lub zaktualizowania aplikacji kontenera.

  1. 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.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.
      • Jest name to identyfikator woluminu.
      • Użyj EmptyDir jako .storageType
    • Dla każdego kontenera w szablonie, w którym chcesz zainstalować wolumin, zdefiniuj instalację woluminu w tablicy volumeMounts definicji kontenera.
      • Jest to volumeName nazwa zdefiniowana w tablicy volumes .
      • Jest to mountPath ścieżka w kontenerze, w której ma zostać zainstalowany 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
    

Zobacz specyfikację YAML, aby zapoznać się z pełnym przykładem.

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ę volumestemplate do sekcji definicji aplikacji kontenera i zdefiniuj wolumin. Jeśli masz już tablicę volumes , dodaj do niej nowy wolumin.
    • Jest name to identyfikator woluminu.
    • Użyj EmptyDir jako .storageType
  • Dla każdego kontenera w szablonie, w którym chcesz zainstalować wolumin, zdefiniuj instalację woluminu w tablicy volumeMounts definicji kontenera.
    • Jest to volumeName nazwa zdefiniowana w tablicy volumes .
    • Jest to mountPath ścieżka w kontenerze, w której ma zostać zainstalowany wolumin.

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 Azure Portal.

  1. W Azure Portal 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 Edytowanie kontekstu kontenera wybierz kartę Instalacje woluminów .

  6. 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.
  7. Wybierz pozycję Zapisz , aby zapisać zmiany i zamknąć okienko kontekstowe.

  8. 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) lub NfsAzureFile (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 w celu zainstalowania woluminu 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 instalowania udziału plików SMB, zobacz Tworzenie instalacji magazynu Azure Files w usłudze Azure Container Apps.

  1. 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 ReadWrite
    

    Zastą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-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.
      • Jest name to identyfikator woluminu.
      • W przypadku storageTypeprogramu należy użyć AzureFile protokołu SMB lub NfsAzureFile systemu 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 mountOptions oddzielony przecinkami ciąg opcji montowania. Aby uzyskać więcej informacji, zobacz Używanie ustawień mountOptions w Azure Files.
      • Lista secrets jest listą wpisów tajnych do zainstalowania w woluminie. Aby uzyskać więcej informacji, zobacz Instalowanie wpisów tajnych w woluminie.
    • Dla każdego kontenera w szablonie, który chcesz zainstalować w magazynie Azure Files, zdefiniuj instalację woluminu w tablicy volumeMounts definicji kontenera.
      • Jest to volumeName nazwa zdefiniowana w tablicy volumes .
      • Jest to mountPath ścieżka w kontenerze, w której ma zostać zainstalowany wolumin.
      • Jest subPath to ścieżka w woluminie do zainstalowania. Jeśli nie zostanie określony, zostanie zainstalowany katalog główny. Aby uzyskać więcej informacji, zobacz (#sub-path).
    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
    

Zobacz specyfikację YAML, aby zapoznać się z pełnym przykładem.

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.

  1. Dodaj zasób podrzędny storages do ś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"
            }
          }
        }
      ]
    }
    
  2. 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ę volumestemplate do sekcji definicji aplikacji kontenera i zdefiniuj wolumin. Jeśli masz już tablicę volumes , dodaj do niej nowy wolumin.
      • Jest name to identyfikator woluminu.
      • W przypadku storageTypeprogramu należy użyć AzureFile protokołu SMB lub NfsAzureFile systemu 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 mountOptions oddzielony przecinkami ciąg opcji montowania. Aby uzyskać więcej informacji, zobacz Używanie ustawień mountOptions w Azure Files.
      • Lista secrets jest listą wpisów tajnych do zainstalowania w woluminie. Aby uzyskać więcej informacji, zobacz Instalowanie wpisów tajnych w woluminie.
    • Dla każdego kontenera w szablonie, który chcesz zainstalować w magazynie Azure Files, zdefiniuj instalację woluminu w tablicy volumeMounts definicji kontenera.
      • Jest to volumeName nazwa zdefiniowana w tablicy volumes .
      • 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 zostanie określony, zostanie zainstalowany katalog główny. Aby uzyskać więcej informacji, zobacz (#sub-path).

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ę.

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

  2. W okienku nawigacji w obszarze Ustawienia wybierz pozycję Azure Files.

  3. Wybierz Dodaj.

  4. Wybierz pozycję Server Message Block (SMB) lub Network File System (NFS), w zależności od protokołu używanego przez udział plików.

  5. 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.
  6. Wybierz pozycję Dodaj , aby zamknąć okienko kontekstowe.

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

  8. Przejdź do aplikacji kontenera.

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

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

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

  12. Wybierz Dodaj.

  13. W okienku Dodawanie kontekstu woluminu ustaw następujące ustawienia.

    • 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 Używanie ustawień mountOptions w Azure Files.
  14. Wybierz pozycję Dodaj , aby zamknąć okienko kontekstowe.

  15. Na stronie Tworzenie i ponowne stosowanie nowej poprawki wybierz kartę Kontener .

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

  17. W okienku Edytowanie kontekstu kontenera wybierz kartę Instalacje woluminów .

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

  19. W polu Ścieżka instalacji wprowadź ścieżkę bezwzględną w kontenerze, aby zainstalować wolumin.

  20. W polu Ścieżka podrzędna (opcjonalnie) wprowadź ścieżkę w woluminie do zainstalowania. Jeśli nie zostanie określony, zostanie zainstalowany katalog główny. Aby uzyskać więcej informacji, zobacz (#sub-path).

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

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

Ścieżka podrzędna

Podczas instalowania udziału plików z Azure Files oprócz ścieżki instalacji można również określić ś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 zostanie określony, zostanie zainstalowany katalog główny.

Ścieżka podrzędna jest ścieżką względną od katalogu głównego woluminu. Ścieżka podrzędna nie powinna zaczynać się od /. Określenie ścieżki podrzędnej, która zaczyna się od / może uniemożliwić uruchomienie aplikacji kontenera. Na przykład my-volume-folder jest prawidłową ścieżką podrzędną, gdzie /my-volume-folder nie jest.

Ś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-folder powinien już istnieć w kontenerze, ale nie powinien jeszcze zawierać pliku my-container-file.txt.

Wszystkie końcowe ukośniki ścieżki podrzędnej są ignorowane.