Instalowanie udziału plików platformy Azure w usłudze Azure Container Instances
Domyślnie usługa Azure Container Instances jest bezstanowa. Jeśli kontener zostanie uruchomiony ponownie, ulegnie awarii lub zatrzymaniu, cały jego stan zostanie utracony. Aby zachować stan również wtedy, należy zainstalować wolumin z magazynu zewnętrznego. Jak pokazano w tym artykule, usługa Azure Container Instances może zainstalować udział plików platformy Azure utworzony za pomocą usługi Azure Files. Usługa Azure Files oferuje w pełni zarządzane udziały plików hostowane w usłudze Azure Storage, które są dostępne za pośrednictwem standardowego protokołu SMB (Industry Standard Server Message Block). Korzystanie z udziału plików platformy Azure w usłudze Azure Container Instances zapewnia funkcje udostępniania plików podobne do korzystania z udziału plików platformy Azure z maszynami wirtualnymi platformy Azure.
Ograniczenia
- Usługa Azure Storage nie obsługuje instalowania protokołu SMB udziału plików przy użyciu tożsamości zarządzanej
- Udziały usługi Azure Files można zainstalować tylko w kontenerach systemu Linux. Przejrzyj więcej informacji na temat różnic w obsłudze funkcji dla grup kontenerów systemów Linux i Windows w omówieniu.
- Instalacja woluminu udziału plików platformy Azure wymaga uruchomienia kontenera systemu Linux jako katalogu głównego.
- Instalacja woluminów udziału plików platformy Azure jest ograniczona do obsługi funkcji CIFS.
Uwaga
Instalowanie udziału usługi Azure Files w wystąpieniu kontenera jest podobne do instalacji powiązanej z platformą Docker. Jeśli zainstalujesz udział w katalogu kontenera, w którym istnieją pliki lub katalogi, instalacja zaciemnia pliki lub katalogi, co czyni je niedostępnymi podczas uruchamiania kontenera.
Ważne
Jeśli połączenie wychodzące z Internetem jest zablokowane w delegowanej podsieci, musisz dodać punkt końcowy usługi do usługi Azure Strorage w delegowanej podsieci.
Tworzenie udziału plików platformy Azure
Przed rozpoczęciem korzystania z udziału plików platformy Azure za pomocą usługi Azure Container Instances należy go utworzyć. Uruchom następujący skrypt, aby utworzyć konto magazynu do hostowania udziału plików i sam udział. Nazwa konta magazynu musi być globalnie unikatowa, więc skrypt dodaje losową wartość do podstawowego ciągu.
# Change these four parameters as needed
ACI_PERS_RESOURCE_GROUP=myResourceGroup
ACI_PERS_STORAGE_ACCOUNT_NAME=mystorageaccount$RANDOM
ACI_PERS_LOCATION=eastus
ACI_PERS_SHARE_NAME=acishare
# Create the storage account with the parameters
az storage account create \
--resource-group $ACI_PERS_RESOURCE_GROUP \
--name $ACI_PERS_STORAGE_ACCOUNT_NAME \
--location $ACI_PERS_LOCATION \
--sku Standard_LRS
# Create the file share
az storage share create \
--name $ACI_PERS_SHARE_NAME \
--account-name $ACI_PERS_STORAGE_ACCOUNT_NAME
Uzyskiwanie poświadczeń magazynu
Aby zainstalować udział plików platformy Azure jako wolumin w usłudze Azure Container Instances, potrzebujesz trzech wartości: nazwy konta magazynu, nazwy udziału i klucza dostępu do magazynu.
Nazwa konta magazynu — jeśli użyto poprzedniego skryptu, nazwa konta magazynu była przechowywana w zmiennej
$ACI_PERS_STORAGE_ACCOUNT_NAME
. Aby wyświetlić nazwę konta, wpisz:echo $ACI_PERS_STORAGE_ACCOUNT_NAME
Nazwa udziału — ta wartość jest już znana (zdefiniowana jako
acishare
w poprzednim skrycie)Klucz konta magazynu — tę wartość można znaleźć za pomocą następującego polecenia:
STORAGE_KEY=$(az storage account keys list --resource-group $ACI_PERS_RESOURCE_GROUP --account-name $ACI_PERS_STORAGE_ACCOUNT_NAME --query "[0].value" --output tsv) echo $STORAGE_KEY
Wdrażanie kontenera i instalowanie woluminu — interfejs wiersza polecenia
Aby zainstalować udział plików platformy Azure jako wolumin w kontenerze przy użyciu interfejsu wiersza polecenia platformy Azure, określ udział i punkt instalacji woluminu podczas tworzenia kontenera za pomocą polecenia az container create. Jeśli wykonano poprzednie kroki, możesz zainstalować utworzony wcześniej udział, używając następującego polecenia, aby utworzyć kontener:
az container create \
--resource-group $ACI_PERS_RESOURCE_GROUP \
--name hellofiles \
--image mcr.microsoft.com/azuredocs/aci-hellofiles \
--dns-name-label aci-demo \
--ports 80 \
--azure-file-volume-account-name $ACI_PERS_STORAGE_ACCOUNT_NAME \
--azure-file-volume-account-key $STORAGE_KEY \
--azure-file-volume-share-name $ACI_PERS_SHARE_NAME \
--azure-file-volume-mount-path /aci/logs/
Wartość musi być unikatowa --dns-name-label
w regionie świadczenia usługi Azure, w którym tworzysz wystąpienie kontenera. Zaktualizuj wartość w poprzednim poleceniu, jeśli podczas wykonywania polecenia zostanie wyświetlony komunikat o błędzie etykiety nazwy DNS.
Zarządzanie plikami na woluminie zainstalowanym
Po uruchomieniu kontenera możesz użyć aplikacji internetowej wdrożonej za pośrednictwem obrazu aci-hellofiles firmy Microsoft, aby utworzyć małe pliki tekstowe w udziale plików platformy Azure w określonej ścieżce instalacji. Uzyskaj w pełni kwalifikowaną nazwę domeny aplikacji internetowej (FQDN) za pomocą polecenia az container show :
az container show --resource-group $ACI_PERS_RESOURCE_GROUP \
--name hellofiles --query ipAddress.fqdn --output tsv
Po zapisaniu tekstu przy użyciu aplikacji możesz użyć witryny Azure Portal lub narzędzia, takiego jak Eksplorator usługi Microsoft Azure Storage, aby pobrać i sprawdzić plik lub pliki zapisane w udziale plików.
Wdrażanie woluminu kontenera i instalacji — YAML
Grupę kontenerów można również wdrożyć i zainstalować wolumin w kontenerze przy użyciu interfejsu wiersza polecenia platformy Azure i szablonu YAML. Wdrażanie przy użyciu szablonu YAML jest preferowaną metodą wdrażania grup kontenerów składających się z wielu kontenerów.
Poniższy szablon YAML definiuje grupę kontenerów z jednym kontenerem utworzonym za pomocą aci-hellofiles
obrazu. Kontener instaluje udział plików platformy Azure utworzony wcześniej jako wolumin. W przypadku wskazania wprowadź nazwę i klucz magazynu dla konta magazynu, które hostuje udział plików.
Podobnie jak w przykładzie interfejsu wiersza polecenia, wartość musi być unikatowa w regionie świadczenia usługi Azure, dnsNameLabel
w którym tworzysz wystąpienie kontenera. W razie potrzeby zaktualizuj wartość w pliku YAML.
apiVersion: '2019-12-01'
location: eastus
name: file-share-demo
properties:
containers:
- name: hellofiles
properties:
environmentVariables: []
image: mcr.microsoft.com/azuredocs/aci-hellofiles
ports:
- port: 80
resources:
requests:
cpu: 1.0
memoryInGB: 1.5
volumeMounts:
- mountPath: /aci/logs/
name: filesharevolume
osType: Linux
restartPolicy: Always
ipAddress:
type: Public
ports:
- port: 80
dnsNameLabel: aci-demo
volumes:
- name: filesharevolume
azureFile:
sharename: acishare
storageAccountName: <Storage account name>
storageAccountKey: <Storage account key>
tags: {}
type: Microsoft.ContainerInstance/containerGroups
Aby wdrożyć przy użyciu szablonu YAML, zapisz poprzedni kod YAML w pliku o nazwie deploy-aci.yaml
, a następnie wykonaj polecenie az container create za pomocą parametru --file
:
# Deploy with YAML template
az container create --resource-group myResourceGroup --file deploy-aci.yaml
Wdrażanie kontenera i instalowanie woluminu — Resource Manager
Oprócz wdrożenia interfejsu wiersza polecenia i yaML można wdrożyć grupę kontenerów i zainstalować wolumin w kontenerze przy użyciu szablonu usługi Azure Resource Manager.
Najpierw wypełnij tablicę volumes
w sekcji grupy properties
kontenerów szablonu.
Następnie dla każdego kontenera, w którym chcesz zainstalować wolumin, wypełnij tablicę volumeMounts
w properties
sekcji definicji kontenera.
Poniższy szablon usługi Resource Manager definiuje grupę kontenerów z jednym kontenerem utworzonym za pomocą aci-hellofiles
obrazu. Kontener instaluje udział plików platformy Azure utworzony wcześniej jako wolumin. W przypadku wskazania wprowadź nazwę i klucz magazynu dla konta magazynu, które hostuje udział plików.
Podobnie jak w poprzednich przykładach, wartość musi być unikatowa w regionie świadczenia usługi Azure, dnsNameLabel
w którym tworzysz wystąpienie kontenera. W razie potrzeby zaktualizuj wartość w szablonie.
{
"$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"variables": {
"container1name": "hellofiles",
"container1image": "mcr.microsoft.com/azuredocs/aci-hellofiles"
},
"resources": [
{
"name": "file-share-demo",
"type": "Microsoft.ContainerInstance/containerGroups",
"apiVersion": "2019-12-01",
"location": "[resourceGroup().location]",
"properties": {
"containers": [
{
"name": "[variables('container1name')]",
"properties": {
"image": "[variables('container1image')]",
"resources": {
"requests": {
"cpu": 1,
"memoryInGb": 1.5
}
},
"ports": [
{
"port": 80
}
],
"volumeMounts": [
{
"name": "filesharevolume",
"mountPath": "/aci/logs"
}
]
}
}
],
"osType": "Linux",
"ipAddress": {
"type": "Public",
"ports": [
{
"protocol": "tcp",
"port": "80"
}
],
"dnsNameLabel": "aci-demo"
},
"volumes": [
{
"name": "filesharevolume",
"azureFile": {
"shareName": "acishare",
"storageAccountName": "<Storage account name>",
"storageAccountKey": "<Storage account key>"
}
}
]
}
}
]
}
Aby wdrożyć przy użyciu szablonu usługi Resource Manager, zapisz poprzedni kod JSON w pliku o nazwie deploy-aci.json
, a następnie wykonaj polecenie az deployment group create za pomocą parametru --template-file
:
# Deploy with Resource Manager template
az deployment group create --resource-group myResourceGroup --template-file deploy-aci.json
Instalowanie wielu woluminów
Aby zainstalować wiele woluminów w wystąpieniu kontenera, należy wdrożyć przy użyciu szablonu usługi Azure Resource Manager, pliku YAML lub innej metody programowej. Aby użyć szablonu lub pliku YAML, podaj szczegóły udziału i zdefiniuj woluminy, wypełniając volumes
tablicę w properties
sekcji pliku.
Jeśli na przykład utworzono dwa udziały usługi Azure Files o nazwie share1 i share2 na koncie magazynu myStorageAccount, tablica volumes
w szablonie usługi Resource Manager będzie wyglądać podobnie do poniższego przykładu:
"volumes": [{
"name": "myvolume1",
"azureFile": {
"shareName": "share1",
"storageAccountName": "myStorageAccount",
"storageAccountKey": "<storage-account-key>"
}
},
{
"name": "myvolume2",
"azureFile": {
"shareName": "share2",
"storageAccountName": "myStorageAccount",
"storageAccountKey": "<storage-account-key>"
}
}]
Następnie dla każdego kontenera w grupie kontenerów, w której chcesz zainstalować woluminy, wypełnij tablicę volumeMounts
w properties
sekcji definicji kontenera. Na przykład spowoduje to zainstalowanie dwóch woluminów, myvolume1 i myvolume2, wcześniej zdefiniowanych:
"volumeMounts": [{
"name": "myvolume1",
"mountPath": "/mnt/share1/"
},
{
"name": "myvolume2",
"mountPath": "/mnt/share2/"
}]
Następne kroki
Dowiedz się, jak zainstalować inne typy woluminów w usłudze Azure Container Instances: