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, które przetwarza 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 w zakresie kontenera i magazynu w zakresie repliki dostępna dla każdej repliki zależy od całkowitej liczby 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.
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
Wprowadź następujące zmiany w specyfikacji aplikacji kontenera.
- Dodaj tablicę
volumes
dotemplate
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
- Jest
- 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 tablicyvolumes
. - Jest
mountPath
to ścieżka w kontenerze do zainstalowania woluminu.
- Jest
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
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
dotemplate
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
- Jest
- 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 tablicyvolumes
. - Jest
mountPath
to ścieżka w kontenerze do zainstalowania woluminu.
- Jest
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.
W witrynie Azure Portal przejdź do aplikacji kontenera.
Wybierz pozycję Zarządzanie poprawkami 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ę Instalacja woluminu.
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.
Wybierz pozycję Zapisz , aby zapisać zmiany i zamknąć okienko kontekstu.
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 (Server Message Block) i NFS (Network File System). 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) lubNfsAzureFile
(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.
- Jeśli używasz systemu plików NFS, musisz również wyłączyć bezpieczny transfer. Aby uzyskać więcej informacji, zobacz udziały plików NFS w usłudze Azure Files i sekcję Tworzenie udziału plików platformy Azure NFS w tym samouczku.
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.
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-mode
ReadWrite
iReadOnly
.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
Wprowadź następujące zmiany w specyfikacji aplikacji kontenera.
- Dodaj tablicę
volumes
dotemplate
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
storageType
programu należy użyć dlaAzureFile
protokołu SMB lubNfsAzureFile
systemu plików NFS. Ta wartość musi być zgodna z typem magazynu zdefiniowanym w środowisku. - W przypadku
storageName
programu użyj nazwy magazynu zdefiniowanego w środowisku.
- Jest
- 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 tablicyvolumes
. - Jest
mountPath
to ścieżka w kontenerze do zainstalowania woluminu.
- Jest
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
- Dodaj tablicę
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.
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" } } } ] }
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
dotemplate
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
storageType
programu należy użyć dlaAzureFile
protokołu SMB lubNfsAzureFile
systemu plików NFS. Ta wartość musi być zgodna z typem magazynu zdefiniowanym w środowisku. - W przypadku
storageName
programu użyj nazwy magazynu zdefiniowanego w środowisku.
- Jest
- 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 tablicyvolumes
. - Jest
mountPath
to ścieżka w kontenerze do zainstalowania woluminu.
- Jest
- Dodaj tablicę
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ę.
W witrynie Azure Portal przejdź do środowiska usługi Container Apps.
Wybierz pozycję Azure Files z menu po lewej stronie.
Wybierz Dodaj.
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".
Wybierz pozycję Dodaj , aby zamknąć okienko kontekstu.
Wybierz pozycję Zapisz , aby zatwierdzić zmiany.
Przejdź do aplikacji kontenera.
Wybierz pozycję Zarządzanie poprawkami z 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ę Instalacja woluminu.
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.
Wybierz pozycję Zapisz , aby zapisać zmiany i zamknąć okienko kontekstu.
Wybierz pozycję Utwórz , aby utworzyć nową poprawkę.