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

Aplikacja kontenera ma dostęp do różnych typów magazynu. W razie potrzeby jedna aplikacja może korzystać z więcej niż jednego typu magazynu.

Typ magazynu opis Trwałość Przykład użycia
Magazyn o zakresie kontenera Efemeryczny magazyn dostępny dla uruchomionego kontenera Dane są dostępne do czasu zamknięcia kontenera Pisanie lokalnej pamięci podręcznej aplikacji.
Magazyn o zakresie repliki Efemeryczny magazyn do udostępniania plików między kontenerami w tej samej repliki Dane są dostępne do czasu zamknięcia repliki Główny kontener aplikacji zapisujący pliki dziennika przetwarzane przez kontener przyczepki.
Azure Files Magazyn trwały Dane są utrwalane w usłudze Azure Files Zapisywanie plików w udziale plików w celu udostępnienia danych innym systemom.

Magazyn efemeryczny

Aplikacja kontenera może odczytywać i zapisywać dane tymczasowe w magazynie efemerycznym. Magazyn efemeryczny można ograniczyć do kontenera lub repliki. Łączna ilość magazynu o zakresie kontenera i magazynu w zakresie repliki dostępna dla każdej repliki zależy od całkowitej ilości procesorów wirtualnych przydzielonych do repliki.

Procesory wirtualne Całkowity magazyn efemeryczny
0,25 lub niższa 1 GiB
0,5 lub niższa 2 GiB
1 lub niższa 4 GiB
Ponad 1 8 GiB

Magazyn o zakresie kontenera

Kontener może zapisywać w swoim 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.
  • Pliki zapisane 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 (pusty katalog) na platformie Kubernetes. Ten magazyn jest przeznaczony do pojedynczej repliki. Użyj woluminu EmptyDir do udostępniania danych między kontenerami w tej samej repliki.

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ą.
  • Każdy kontener inicjowania lub aplikacji w repliki może zainstalować ten sam wolumin.
  • Kontener może zainstalować wiele EmptyDir woluminów.

Aby skonfigurować magazyn o zakresie repliki, najpierw zdefiniuj EmptyDir wolumin w poprawce. Następnie zdefiniuj instalację woluminu w co najmniej jednym kontenerze w poprawce.

Wymagania wstępne

Wymaganie Instrukcje
Konto platformy Azure Jeśli go nie masz, utwórz bezpłatne konto.
Środowisko usługi Azure Container Apps Tworzenie środowiska aplikacji kontenera.

Konfigurowanie

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

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"
        }
      ]
    }
  }
}

Zobacz specyfikację interfejsu API szablonu usługi ARM, aby zapoznać się z pełnym przykładem.

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

  1. W witrynie Azure Portal przejdź do aplikacji kontenera.

  2. Wybierz pozycję Zarządzanie poprawkami 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ę Instalacja woluminu.

  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 do zainstalowania woluminu.
  7. Wybierz pozycję Zapisz , aby zapisać zmiany i zamknąć okienko kontekstu.

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

Wolumin usługi Azure Files

Udział plików można zainstalować z usługi Azure Files jako wolumin w kontenerze.

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

  • Pliki zapisywane 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 zainstalować ten sam udział plików, w tym te, które znajdują się w innej replice, wersji lub aplikacji kontenera.
  • Wszystkie kontenery, które zainstalują 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 usługi Azure Files.

Usługa Azure Files obsługuje protokoły SMB i NFS. Udział usługi 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 używanego przez udział plików na koncie magazynu.

Uwaga

Obsługa instalowania udziałów NFS w usłudze Azure Container Apps jest dostępna w wersji zapoznawczej.

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 Container Apps.
  • Jeśli używasz systemu plików NFS, środowisko musi być skonfigurowane z niestandardową siecią wirtualną, a konto magazynu musi być skonfigurowane tak, aby zezwalało na dostęp z sieci wirtualnej. Aby uzyskać więcej informacji, zobacz Udziały plików NFS w usłudze Azure Files .
  • Jeśli środowisko jest skonfigurowane przy użyciu niestandardowej sieci wirtualnej, należy 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 co najmniej jednym kontenerze w poprawce.
  • Użyte konto magazynu usługi 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 Create a storage account (Tworzenie konta magazynu).
Środowisko usługi Azure Container Apps Tworzenie środowiska aplikacji kontenera.

Konfigurowanie

Podczas konfigurowania aplikacji kontenera w celu zainstalowania 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 instalowania udziału plików SMB, zobacz Tworzenie instalacji magazynu usługi 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> wartości 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 to --access-modeReadWrite i ReadOnly.

  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ę volumes do template sekcji definicji aplikacji kontenera i zdefiniuj wolumin. Jeśli masz już tablicę volumes , dodaj nowy wolumin do tablicy.
      • Jest name to identyfikator woluminu.
      • W przypadku storageTypeprogramu należy użyć dla 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.
    • Dla każdego kontenera w szablonie, który chcesz zainstalować w usłudze Azure Files Storage, zdefiniuj instalację woluminu w volumeMounts tablicy definicji kontenera.
      • Jest volumeName to nazwa zdefiniowana w tablicy volumes .
      • Jest mountPath to ścieżka w kontenerze do zainstalowania woluminu.
    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
        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 kodu szablonu usługi ARM pokazują, jak dodać udział usługi Azure Files do środowiska usługi Container Apps i używać go w aplikacji kontenera.

  1. Dodaj zasób podrzędny storages do środowiska 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"
                }
              ]
            }
          ],
          "scale": {
            "minReplicas": 1,
            "maxReplicas": 3
          },
          "volumes": [
            {
              "name": "azure-files-volume",
              "storageType": "AzureFile",
              "storageName": "myazurefiles"
            }
          ]
        }
      }
    }
    
    • Dodaj tablicę volumes do template sekcji definicji aplikacji kontenera i zdefiniuj wolumin. Jeśli masz już tablicę volumes , dodaj nowy wolumin do tablicy.
      • Jest name to identyfikator woluminu.
      • W przypadku storageTypeprogramu należy użyć dla 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.
    • Dla każdego kontenera w szablonie, który chcesz zainstalować w usłudze Azure Files Storage, zdefiniuj instalację woluminu w volumeMounts tablicy definicji kontenera.
      • Jest volumeName to nazwa zdefiniowana w tablicy volumes .
      • Jest mountPath to ścieżka w kontenerze do zainstalowania woluminu.

Zobacz specyfikację interfejsu API szablonu usługi ARM, aby zapoznać się z pełnym przykładem.

Aby skonfigurować instalację woluminu dla usługi Azure Files Storage w witrynie Azure Portal, dodaj udział plików do środowiska usługi Container Apps, a następnie dodaj instalację woluminu do aplikacji kontenera, tworząc nową poprawkę.

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

  2. Wybierz pozycję Azure Files z menu po lewej stronie.

  3. Wybierz Dodaj.

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

    • Nazwa: nazwa udziału plików.
    • Nazwa konta magazynu: nazwa konta magazynu zawierającego 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 dla udziału plików. Prawidłowe wartości to "Odczyt/zapis" i "Tylko do odczytu".
  5. Wybierz pozycję Dodaj , aby zamknąć okienko kontekstu.

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

  7. Przejdź do aplikacji kontenera.

  8. Wybierz pozycję Zarządzanie poprawkami z menu po lewej stronie.

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

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

  11. W okienku Edytowanie kontekstu kontenera wybierz kartę Instalacja woluminu.

  12. W sekcji Udziały plików utwórz nowy wolumin z następującymi informacjami.

    • Nazwa udziału plików: dodany udział plików.
    • Ścieżka instalacji: ścieżka bezwzględna w kontenerze do zainstalowania woluminu.
  13. Wybierz pozycję Zapisz , aby zapisać zmiany i zamknąć okienko kontekstu.

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