Driver di volume per File di Azure di Service Fabric (anteprima)Service Fabric Azure Files Volume Driver (Preview)

Il plug-in di volume di File di Azure è un plug-in di volume Docker che fornisce volumi basati su File di Azure per contenitori Docker.The Azure Files volume plugin is a Docker volume plugin that provides Azure Files based volumes for Docker containers. Questo plug-in di volume Docker viene offerto come pacchetto di applicazione di Service Fabric distribuibile nei cluster di Service Fabric,This Docker volume plugin is packaged as a Service Fabric application that can be deployed to Service Fabric clusters. con lo scopo di fornire volumi basati su File di Azure per altre applicazioni contenitore di Service Fabric distribuite nel cluster.It's purpose is to provide Azure Files based volumes for other Service Fabric container applications that are deployed to the cluster.

Nota

La versione 6.255.389.9494 del plug-in di volume di File di Azure è una versione di anteprima disponibile con questo documento.Version 6.255.389.9494 of the Azure Files volume plugin is a preview release that is available with this document. In quanto versione di anteprima, l'uso in ambienti di produzione non è supportato.As a preview release, it is not supported for use in production environments.

prerequisitiPrerequisites

Distribuire l'applicazione File di Azure di Service FabricDeploy the Service Fabric Azure Files application

L'applicazione di Service Fabric che fornisce i volumi per i contenitori può essere scaricata dal collegamento seguente.The Service Fabric application that provides the volumes for your containers can be downloaded from the following link. L'applicazione può essere distribuita nel cluster tramite PowerShell, l'interfaccia della riga di comando o le API di FabricClient.The application can be deployed to the cluster via PowerShell, CLI or FabricClient APIs.

  1. Usando la riga di comando, passare alla directory radice del pacchetto dell'applicazione scaricato.Using the command line, change directory to the root directory of the application package downloaded.

    cd .\AzureFilesVolume\
    
    cd ~/AzureFilesVolume
    
  2. Copiare il pacchetto dell'applicazione nell'archivio immagini. Eseguire questo comando con i valori appropriati per [ApplicationPackagePath] e [ImageStoreConnectionString]:Copy the application package to the image store Run the command below with the appropriate value for [ApplicationPackagePath] and [ImageStoreConnectionString]:

    Copy-ServiceFabricApplicationPackage -ApplicationPackagePath [ApplicationPackagePath] -ImageStoreConnectionString [ImageStoreConnectionString] -ApplicationPackagePathInImageStore AzureFilesVolumePlugin
    
    sfctl cluster select --endpoint https://testcluster.westus.cloudapp.azure.com:19080 --pem test.pem --no-verify
    sfctl application upload --path [ApplicationPackagePath] --show-progress
    
  3. Registrare il tipo di applicazioneRegister the application type

    Register-ServiceFabricApplicationType -ApplicationPathInImageStore AzureFilesVolumePlugin
    
    sfctl application provision --application-type-build-path [ApplicationPackagePath]
    
  4. Creare l'applicazione. Nel comando per la creazione dell'applicazione riportato di seguito, si noti il parametro ListenPort dell'applicazione.Create the application In the command to create the application below, note the ListenPort application parameter. Il valore specificato per questo parametro dell'applicazione è la porta su cui il plug-in di volume di File di Azure resta in ascolto delle richieste dal daemon Docker.This value specified for this application parameter is the port on which the Azure Files volume plugin listens for requests from the Docker daemon. È importante assicurarsi che la porta specificata per l'applicazione non sia in conflitto con altre porte usate dal cluster o dalle applicazioni.It is important to ensure that the port provided to the application does not conflict with any other port that the cluster or your applications use.

    New-ServiceFabricApplication -ApplicationName fabric:/AzureFilesVolumePluginApp -ApplicationTypeName AzureFilesVolumePluginType -ApplicationTypeVersion 6.255.389.9494 -ApplicationParameter @{ListenPort='19100'}
    
    sfctl application create --app-name fabric:/AzureFilesVolumePluginApp --app-type AzureFilesVolumePluginType --app-version 6.255.389.9494 --parameter '{"ListenPort":"19100"}'
    

Nota

Windows Server 2016 Datacenter non supporta il mapping dei montaggi SMB nei contenitori (supportati solo in Windows Server versione 1709).Windows Server 2016 Datacenter does not support mapping SMB mounts to containers (That is only supported on Windows Server version 1709). Questa limitazione impedisce il mapping del volume della rete e l'uso dei driver di volume di File di Azure precedenti alla versione 1709.This constraint prevents network volume mapping and Azure Files volume drivers on versions older than 1709.

Distribuire l'applicazione in un cluster di sviluppo localeDeploy the application on a local development cluster

Il numero predefinito di istanze del servizio per l'applicazione del plug-in di volume di File di Azure è -1, corrispondente alla distribuzione di un'istanza del servizio in ogni nodo del cluster.The default service instance count for the Azure Files volume plugin application is -1, which means that there is an instance of the service deployed to each node in the cluster. Quando si distribuisce l'applicazione del plug-in di volume di File di Azure in un cluster di sviluppo locale, tuttavia, il numero di istanze del servizio specificato dovrà essere 1.However, when deploying the Azure Files volume plugin application on a local development cluster, the service instance count should be specified as 1. A questo scopo è possibile usare il parametro InstanceCount dell'applicazione.This can be done via the InstanceCount application parameter. Il comando per distribuire l'applicazione del plug-in di volume di File di Azure in un cluster di sviluppo locale è quindi il seguente:Therefore, the command for deploying the Azure Files volume plugin application on a local development cluster is:

New-ServiceFabricApplication -ApplicationName fabric:/AzureFilesVolumePluginApp -ApplicationTypeName AzureFilesVolumePluginType -ApplicationTypeVersion 6.255.389.9494 -ApplicationParameter @{ListenPort='19100';InstanceCount='1'}
sfctl application create --app-name fabric:/AzureFilesVolumePluginApp --app-type AzureFilesVolumePluginType --app-version 6.255.389.9494 --parameter '{"ListenPort": "19100","InstanceCount": "1"}'

Configurare le applicazioni per l'uso del volumeConfigure your applications to use the volume

Il frammento seguente illustra come è possibile specificare un volume basato su File di Azure nel manifesto dell'applicazione.The following snippet shows how an Azure Files based volume can be specified in the application manifest of your application. L'elemento di specifico interesse è il tag Volume:The specific element of interest is the Volume tag:

?xml version="1.0" encoding="UTF-8"?>
<ApplicationManifest ApplicationTypeName="WinNodeJsApp" ApplicationTypeVersion="1.0" xmlns="http://schemas.microsoft.com/2011/01/fabric" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <Description>Calculator Application</Description>
    <Parameters>
      <Parameter Name="ServiceInstanceCount" DefaultValue="3"></Parameter>
      <Parameter Name="MyCpuShares" DefaultValue="3"></Parameter>
      <Parameter Name="MyStorageVar" DefaultValue="c:\tmp"></Parameter>
    </Parameters>
    <ServiceManifestImport>
        <ServiceManifestRef ServiceManifestName="NodeServicePackage" ServiceManifestVersion="1.0"/>
     <Policies>
       <ContainerHostPolicies CodePackageRef="NodeService.Code" Isolation="hyperv">
            <PortBinding ContainerPort="8905" EndpointRef="Endpoint1"/>
            <RepositoryCredentials PasswordEncrypted="false" Password="****" AccountName="test"/>
            <Volume Source="azfiles" Destination="c:\VolumeTest\Data" Driver="sfazurefile">
                <DriverOption Name="shareName" Value="" />
                <DriverOption Name="storageAccountName" Value="" />
                <DriverOption Name="storageAccountKey" Value="" />
            </Volume>
       </ContainerHostPolicies>
   </Policies>
    </ServiceManifestImport>
    <ServiceTemplates>
        <StatelessService ServiceTypeName="StatelessNodeService" InstanceCount="5">
            <SingletonPartition></SingletonPartition>
        </StatelessService>
    </ServiceTemplates>
</ApplicationManifest>

Il nome del driver per il plug-in di volume di File di Azure è sfazurefile.The driver name for the Azure Files volume plugin is sfazurefile. Questo valore viene impostato per l'attributo Driver dell'elemento Volume nel manifesto dell'applicazione.This value is set for the Driver attribute of the Volume element in the application manifest.

Nell'elemento Volume nel frammento precedente, il plug-in di volume di File di Azure richiede i tag seguenti.In the Volume element in the snippet above, the Azure Files volume plugin requires the following tags:

  • Source: corrisponde al nome del volume.Source - This is the name of the volume. L'utente può scegliere qualsiasi nome per il volume.The user can pick any name for their volume.
  • Destination: questo tag è la posizione in cui viene eseguito il mapping del volume nel contenitore in esecuzione.Destination - This tag is the location that the volume is mapped to within the running container. La destinazione non può quindi essere una posizione già esistente nel contenitore.Thus, your destination can't be a location that already exists within your container

Come illustrato negli elementi DriverOption nel frammento precedente, il plug-in di volume di File di Azure supporta le opzioni del driver seguenti.As shown in the DriverOption elements in the snippet above, the Azure Files volume plugin supports the following driver options:

  • shareName: nome della condivisione file di File di Azure che fornisce il volume per il contenitoreshareName - Name of the Azure Files file share that provides the volume for the container
  • storageAccountName: nome dell'account di archiviazione di Azure contenente la condivisione file di File di AzurestorageAccountName - Name of the Azure storage account that contains the Azure Files file share
  • storageAccountKey: chiave di accesso dell'account di archiviazione di Azure contenente la condivisione file di File di AzurestorageAccountKey - Access key for the Azure storage account that contains the Azure Files file share

Tutte le opzioni del driver riportate sopra sono obbligatorie.All of the above driver options are required.

Uso di un driver di volume o di registrazione personalizzatoUsing your own volume or logging driver

Service Fabric consente anche di usare driver di volume o di registrazione personalizzati.Service Fabric also allows the usage of your own custom volume or logging drivers. Se il driver di volume/registrazione Docker non è installato nel cluster, è possibile installarlo manualmente usando i protocolli RDP/SSH.If the Docker volume/logging driver is not installed on the cluster, you can install it manually by using the RDP/SSH protocols. È possibile eseguire l'installazione con questi protocolli tramite un script di avvio del set di scalabilità di macchine virtuali o uno script SetupEntryPoint.You can perform the install with these protocols through a virtual machine scale set start-up script or an SetupEntryPoint script.

Un esempio di script per installare il driver di volume Docker per Azure è riportato di seguito:An example of the script to install the Docker volume driver for Azure is as follows:

docker plugin install --alias azure --grant-all-permissions docker4x/cloudstor:17.09.0-ce-azure1  \
    CLOUD_PLATFORM=AZURE \
    AZURE_STORAGE_ACCOUNT="[MY-STORAGE-ACCOUNT-NAME]" \
    AZURE_STORAGE_ACCOUNT_KEY="[MY-STORAGE-ACCOUNT-KEY]" \
    DEBUG=1

Nelle applicazioni, per usare il driver di volume o di registrazione installato sarà necessario specificare i valori appropriati negli elementi Volume e LogConfig inclusi in ContainerHostPolicies nel manifesto dell'applicazione.In your applications, to use the volume or logging driver you installed, you would have to specify the appropriate values in the Volume and LogConfig elements under ContainerHostPolicies in your application manifest.

<ContainerHostPolicies CodePackageRef="NodeService.Code" Isolation="hyperv">
    <PortBinding ContainerPort="8905" EndpointRef="Endpoint1"/>
    <RepositoryCredentials PasswordEncrypted="false" Password="****" AccountName="test"/>
    <LogConfig Driver="[YOUR_LOG_DRIVER]" >
        <DriverOption Name="test" Value="vale"/>
    </LogConfig>
    <Volume Source="c:\workspace" Destination="c:\testmountlocation1" IsReadOnly="false"></Volume>
    <Volume Source="[MyStorageVar]" Destination="c:\testmountlocation2" IsReadOnly="true"> </Volume>
    <Volume Source="myvolume1" Destination="c:\testmountlocation2" Driver="[YOUR_VOLUME_DRIVER]" IsReadOnly="true">
        <DriverOption Name="[name]" Value="[value]"/>
    </Volume>
</ContainerHostPolicies>

Quando si specifica un plug-in di volume, Service Fabric crea automaticamente il volume usando i parametri specificati.When specifying a volume plug-in, Service Fabric automatically creates the volume by using the specified parameters. Il tag Source per l'elemento Volume è il nome del volume e il tag Driver specifica il plug-in del driver di volume.The Source tag for the Volume element is the name of the volume and the Driver tag specifies the volume driver plug-in. Il tag Destination è il percorso in cui viene eseguito il mapping di Source all'interno del contenitore in esecuzione.The Destination tag is the location that the Source is mapped to within the running container. La destinazione non può quindi essere un percorso già esistente all'interno del contenitore.Thus, your destination can't be a location that already exists within your container. Le opzioni possono essere specificate tramite il tag DriverOption come indicato di seguito:Options can be specified by using the DriverOption tag as follows:

<Volume Source="myvolume1" Destination="c:\testmountlocation4" Driver="azure" IsReadOnly="true">
           <DriverOption Name="share" Value="models"/>
</Volume>

I parametri dell'applicazione sono supportati per i volumi, come illustrato nel frammento di manifesto precedente (cercare MyStorageVar per un esempio d'uso).Application parameters are supported for volumes as shown in the preceding manifest snippet (look for MyStorageVar for an example use).

Se viene specificato un driver di log Docker, è necessario distribuire gli agenti o i contenitori per gestire i registri nel cluster.If a Docker log driver is specified, you have to deploy agents (or containers) to handle the logs in the cluster. Il tag DriverOption può essere usato per specificare le opzioni per il driver di log.The DriverOption tag can be used to specify options for the log driver.

Passaggi successiviNext steps