Azure-fájlmegosztás csatlakoztatása az Azure Container Instancesben
Az Azure Container Instances alapértelmezés szerint állapot nélküli. Ha a tároló újraindul, összeomlik vagy leáll, az összes állapota elvész. Ha azt szeretné, hogy az állapot a tároló élettartamán túl is megmaradjon, külső tárból kell csatlakoztatnia egy kötetet. Ahogy az ebben a cikkben is látható, Azure Container Instances csatlakoztathatja a Azure Files létrehozott Azure-fájlmegosztást. Azure Files az Azure Storage-ban üzemeltetett teljes körűen felügyelt fájlmegosztásokat kínál, amelyek az iparági szabvány server message block (SMB) protokollon keresztül érhetők el. Az Azure-fájlmegosztások használata Azure Container Instances olyan fájlmegosztási funkciókat biztosít, mint az Azure-fájlmegosztások Azure-beli virtuális gépekkel való használata.
Korlátozások
- Csak Azure Files megosztásokat csatlakoztathat Linux-tárolókhoz. Tekintse át a Linux- és Windows-tárolócsoportok funkciótámogatásának különbségeit az áttekintésben.
- Az Azure-fájlmegosztás kötetének csatlakoztatásához a Linux-tároló gyökérként való futtatására van szükség.
- Az Azure-fájlmegosztás kötetcsatlakoztatásai a CIFS-támogatásra korlátozódnak.
Megjegyzés
A Azure Files-megosztás tárolópéldányhoz való csatlakoztatása hasonló a Docker-kötés csatlakoztatásához. Ha egy megosztást olyan tárolókönyvtárba csatlakoztat, amelyben fájlok vagy könyvtárak találhatók, a csatlakoztatás elhomályosítja a fájlokat vagy könyvtárakat, így azok elérhetetlenné váltak a tároló futtatása közben.
Fontos
Ha tárolócsoportokat helyez üzembe egy Azure-Virtual Network, hozzá kell adnia egy szolgáltatásvégpontot az Azure Storage-fiókjához.
Azure-fájlmegosztás létrehozása
Az Azure-fájlmegosztást először létre kell hoznia, hogy aztán megoszthassa az Azure Container Instances-példánnyal. A következő szkript futtatásával hozzon létre egy tárfiókot a fájlmegosztás üzemeltetéséhez, és magát a megosztást is. A tárfiók nevének globálisan egyedinek kell lennie, ezért a szkript hozzáad egy véletlenszerű értéket az alapsztringhez.
# 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
Tároló hitelesítő adatainak lekérése
Ahhoz, hogy az Azure-fájlmegosztást kötetként csatlakoztassa az Azure Container Instancesben, három értékre lesz szüksége: a tárfiók nevére, a megosztás nevére és tárelérési kulcsra.
Tárfiók neve – Ha az előző szkriptet használta, a tárfiók neve a
$ACI_PERS_STORAGE_ACCOUNT_NAME
változóban lett tárolva. A fiók nevének megtekintéséhez írja be a következőt:echo $ACI_PERS_STORAGE_ACCOUNT_NAME
Megosztás neve – Ez az érték már ismert (az előző szkriptben definiálva
acishare
)Tárfiókkulcs – Ez az érték a következő paranccsal található meg:
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
Tároló üzembe helyezése és kötet csatlakoztatása – PARANCSSORI FELÜLET
Ha egy Azure-fájlmegosztást kötetként szeretne csatlakoztatni egy tárolóban az Azure CLI használatával, adja meg a megosztási és kötetcsatlakoztatási pontot, amikor a tárolót az az container create paranccsal hozza létre. Ha követte az előző lépéseket, csatlakoztathatja a korábban létrehozott megosztást a következő paranccsal egy tároló létrehozásához:
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/
Az --dns-name-label
értéknek egyedinek kell lennie abban az Azure-régióban, ahol a tárolópéldányt létrehozza. Frissítse az előző parancs értékét, ha a parancs végrehajtásakor DNS-névcímke hibaüzenetet kap.
Fájlok kezelése csatlakoztatott köteten
A tároló elindítása után a Microsoft aci-hellofiles rendszerképen keresztül üzembe helyezett egyszerű webalkalmazással kis szövegfájlokat hozhat létre az Azure-fájlmegosztásban a megadott csatlakoztatási útvonalon. Szerezze be a webalkalmazás teljes tartománynevét (FQDN) az az container show paranccsal:
az container show --resource-group $ACI_PERS_RESOURCE_GROUP \
--name hellofiles --query ipAddress.fqdn --output tsv
Miután az alkalmazással mentette a szöveget, az Azure Portal vagy egy olyan eszközzel, mint a Microsoft Azure Storage Explorer, lekérheti és megvizsgálhatja a fájlmegosztásba írt fájlokat vagy fájlokat.
Tároló üzembe helyezése és kötet csatlakoztatása – YAML
Tárolócsoportot is üzembe helyezhet, és csatlakoztathat egy kötetet egy tárolóban az Azure CLI-vel és egy YAML-sablonnal. A YAML-sablonnal történő üzembe helyezés előnyben részesített módszer több tárolóból álló tárolócsoportok üzembe helyezésekor.
Az alábbi YAML-sablon egy tárolócsoportot határoz meg, amely egy tárolót hoz létre a aci-hellofiles
rendszerképpel. A tároló csatlakoztatja a korábban kötetként létrehozott Azure-fájlmegosztási acishare-t . Ahol ez szerepel, adja meg a fájlmegosztást üzemeltető tárfiók nevét és tárkulcsát.
A CLI-példához hasonlóan az dnsNameLabel
értéknek egyedinek kell lennie abban az Azure-régióban, ahol a tárolópéldányt létrehozza. Szükség esetén frissítse a YAML-fájl értékét.
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
A YAML-sablonnal való üzembe helyezéshez mentse az előző YAML-fájlt egy nevű deploy-aci.yaml
fájlba, majd hajtsa végre az az container create parancsot a --file
paraméterrel:
# Deploy with YAML template
az container create --resource-group myResourceGroup --file deploy-aci.yaml
Tároló üzembe helyezése és kötet csatlakoztatása – Resource Manager
A parancssori felület és a YAML üzembe helyezése mellett üzembe helyezhet egy tárolócsoportot, és csatlakoztathat egy kötetet egy tárolóban egy Azure Resource Manager-sablon használatával.
Először töltse ki a volumes
tömböt a sablon tárolócsoport properties
szakaszában.
Ezután töltse ki a volumeMounts
tömböt minden olyan tároló esetében, amelyben csatlakoztatni szeretné a kötetet a tárolódefiníció szakaszában properties
.
Az alábbi Resource Manager sablon egy tárolócsoportot határoz meg, amelyben egy tároló van létrehozva a aci-hellofiles
rendszerképpel. A tároló csatlakoztatja a korábban kötetként létrehozott Azure-fájlmegosztási acishare-t . Ahol ez szerepel, adja meg a fájlmegosztást üzemeltető tárfiók nevét és tárkulcsát.
Az előző példákhoz hasonlóan az dnsNameLabel
értéknek egyedinek kell lennie abban az Azure-régióban, ahol a tárolópéldányt létrehozza. Szükség esetén frissítse a sablon értékét.
{
"$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>"
}
}
]
}
}
]
}
A Resource Manager sablonnal való üzembe helyezéshez mentse az előző JSON-t egy nevű deploy-aci.json
fájlba, majd hajtsa végre az az deployment group create parancsot a --template-file
paraméterrel:
# Deploy with Resource Manager template
az deployment group create --resource-group myResourceGroup --template-file deploy-aci.json
Több kötet csatlakoztatása
Ha több kötetet szeretne csatlakoztatni egy tárolópéldányhoz, üzembe kell helyeznie egy Azure Resource Manager-sablont, egy YAML-fájlt vagy más programozott módszert. Sablon vagy YAML-fájl használatához adja meg a megosztás részleteit, és határozza meg a köteteket a volumes
fájl szakaszában lévő properties
tömb feltöltésével.
Ha például létrehozott két Azure Files share1 és share2 nevű megosztást a myStorageAccount tárfiókban, a volumes
Resource Manager sablon tömbje az alábbihoz hasonló lesz:
"volumes": [{
"name": "myvolume1",
"azureFile": {
"shareName": "share1",
"storageAccountName": "myStorageAccount",
"storageAccountKey": "<storage-account-key>"
}
},
{
"name": "myvolume2",
"azureFile": {
"shareName": "share2",
"storageAccountName": "myStorageAccount",
"storageAccountKey": "<storage-account-key>"
}
}]
Ezután töltse ki a volumeMounts
tömböt a tárolódefiníció szakaszában properties
a tárolócsoport azon tárolócsoportjában, amelyben csatlakoztatni szeretné a köteteket. Ez például csatlakoztatja a két korábban definiált myvolume1 és myvolume2 kötetet:
"volumeMounts": [{
"name": "myvolume1",
"mountPath": "/mnt/share1/"
},
{
"name": "myvolume2",
"mountPath": "/mnt/share2/"
}]
Következő lépések
Megtudhatja, hogyan csatlakoztathat más kötettípusokat a Azure Container Instances: