Megosztás a következőn keresztül:


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 elveszik. 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. Ahogyan az ebben a cikkben látható, az Azure Container Instances csatlakoztathat egy Azure Files-fájlmegosztást. Az 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 kiszolgálói üzenetblokk (SMB) protokollon keresztül érhetők el. Ha Azure-fájlmegosztást használ az Azure Container Instances szolgáltatással, az Azure-beli virtuális gépekkel való Azure-fájlmegosztáshoz hasonló fájlmegosztási funkciókat biztosít.

Korlátozások

  • Az Azure Storage nem támogatja a fájlmegosztás SMB-csatlakoztatását felügyelt identitással
  • Azure Files-megosztásokat csak Linux-tárolókhoz csatlakoztathat. Tekintse át a Linux- és Windows-tárolócsoportok funkciótámogatási különbségeit az áttekintésben.
  • Az Azure-fájlmegosztás kötetének csatlakoztatásához a Linux-tárolót gyökérként kell futtatni.
  • Az Azure-fájlmegosztás kötet-csatlakoztatásai a CIFS-támogatásra korlátozódnak.

Feljegyzés

Az 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álik a tároló futtatása közben.

Fontos

Ha a delegált alhálózat blokkolja az internethez való kimenő kapcsolatot, hozzá kell adnia egy szolgáltatásvégpontot az Azure Strorage-hoz a delegált alhálózaton.

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 és a megosztás üzemeltetéséhez. 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ó:

    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óhoz az Azure CLI használatával, adja meg a megosztási és kötet-csatlakoztatási pontot, amikor a tárolót az az container create használatával 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üzenet jelenik meg.

Csatlakoztatott kötet fájljainak kezelése

A tároló elindítása után a Microsoft aci-hellofiles rendszerképén keresztül üzembe helyezett egyszerű webalkalmazással kis szöveges fá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 Portalon 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 egy kötetet csatlakoztathat egy tárolóba 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 a jelzés látható, 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 nevesített deploy-aci.yamlfá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 azure Resource Manager-sablonnal csatlakoztathat egy kötetet egy tárolóban.

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 tömböt minden olyan tároló esetében, amelyben csatlakoztatni szeretné a kötetet, töltse ki a volumeMounts tömböt a properties tárolódefiníció szakaszában.

Az alábbi Resource Manager-sablon egy tárolócsoportot határoz meg a rendszerképpel létrehozott tárolóval aci-hellofiles . A tároló csatlakoztatja a korábban kötetként létrehozott Azure-fájlmegosztási acishare-t . Ahol a jelzés látható, 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.jsonfá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 a myStorageAccount tárfiókban létrehozott két Share1 és Share2 nevű Azure Files-megosztást, a volumes Resource Manager-sablon tömbje a következőhöz hasonlóan jelenik meg:

"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 volumeMounts a tömböt a tárolódefiníció szakaszában properties azon tárolócsoport minden tárolójára, amelyben csatlakoztatni szeretné a köteteket. Ez például csatlakoztatja a korábban definiált két kötetet, a myvolume1-et és a myvolume2-t:

"volumeMounts": [{
  "name": "myvolume1",
  "mountPath": "/mnt/share1/"
},
{
  "name": "myvolume2",
  "mountPath": "/mnt/share2/"
}]

Következő lépések

Megtudhatja, hogyan csatlakoztathat más kötettípusokat az Azure Container Instancesben: