Utiliser des volumes NFS comme datastores vSphere dans VMware Engine

Ce document explique comment utiliser des volumes NFS en tant que datastores vSphere dans VMware Engine en créant et en gérant des datastores NFS soutenus par des instances Filestore, des volumes Google Cloud NetApp Volumes ou des partages NFS tiers à l'aide de l'API VMware Engine ou de Google Cloud CLI. Le point de terminaison de l'API est vmwareengine.googleapis.com. Les opérations d'API et de gcloud CLI permettant de créer, de mettre à jour, de supprimer, de monter et de démonter des datastores sont asynchrones. Lorsque vous lancez l'une de ces opérations, VMware Engine renvoie un objet d'opération que vous pouvez utiliser pour suivre l'état de votre demande.

Interroger une opération

Pour suivre l'état d'une opération, utilisez une requête GET ou la CLI gcloud.

API

curl -X GET \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
https://vmwareengine.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/operations/OPERATION_ID

Remplacez les éléments suivants :

  • PROJECT_ID : ID de votre projet Google Cloud .
  • LOCATION : emplacement de l'opération.
  • OPERATION_ID : ID de l'opération suivie.

gcloud

gcloud vmware operations describe OPERATION_ID --location=LOCATION --project=PROJECT_ID

Remplacez les éléments suivants :

  • PROJECT_ID : ID de votre projet Google Cloud .
  • LOCATION : emplacement de l'opération.
  • OPERATION_ID : ID de l'opération suivie.

Créer un datastore NFS

Pour créer un datastore basé sur une instance Filestore, un volume Google Cloud NetApp Volumes ou un partage NFS tiers, utilisez la gcloud CLI ou envoyez la requête POST suivante :

POST https://vmwareengine.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datastores?datastoreId=DATASTORE_ID

Remplacez les éléments suivants :

  • PROJECT_ID : ID de votre projet Google Cloud .
  • LOCATION : emplacement du datastore.
  • DATASTORE_ID : nom de votre Datastore.

Le corps de la requête doit être un objet JSON contenant les détails du volume NFS qui servira de sauvegarde pour Datastore.

  • description : (facultatif) brève description de votre Datastore.
  • nfs_datastore : (obligatoire) conteneur pour la configuration du datastore NFS.

Filestore

Les sections suivantes décrivent comment créer un Datastore reposant sur Filestore à l'aide de l'API ou de gcloud CLI.

API

Pour un Datastore sauvegardé par Filestore, indiquez les éléments suivants dans google_file_service :

  • filestore_instance : (obligatoire) nom complet de la ressource de l'instance Filestore au format projects/{project}/locations/{location}/instances/{instance}.

Exemple de corps de la requête :

{
  "description": "Filestore Datastore example",
  "nfs_datastore": {
    "google_file_service": {
      "filestore_instance": "projects/FILESTORE_PROJECT_ID/locations/LOCATION/instances/INSTANCE_NAME"
    }
  }
}

Remplacez les éléments suivants :

  • FILESTORE_PROJECT_ID : ID du projet dans lequel réside votre instance Filestore.
  • LOCATION : emplacement de l'instance Filestore. Il doit être identique à l'emplacement Datastore spécifié dans l'URL de la requête.
  • INSTANCE_NAME : nom de votre instance Filestore.

gcloud

gcloud vmware datastores create DATASTORE_ID \
--location=LOCATION --project=PROJECT_ID \
--filestore=projects/FILESTORE_PROJECT_ID/locations/LOCATION/instances/INSTANCE_NAME

Remplacez les éléments suivants :

  • DATASTORE_ID : nom de votre Datastore.
  • LOCATION : emplacement de l'instance Datastore et Filestore.
  • PROJECT_ID : ID de votre projet Google Cloud .
  • FILESTORE_PROJECT_ID : ID du projet dans lequel réside votre instance Filestore.
  • INSTANCE_NAME : nom de votre instance Filestore.

Google Cloud NetApp Volumes

Les sections suivantes décrivent comment créer un datastore reposant sur Google Cloud NetApp Volumes à l'aide de l'API ou de gcloud CLI.

API

Pour un Datastore basé sur Google Cloud NetApp Volumes, indiquez les informations suivantes dans google_file_service :

  • netapp_volume : (obligatoire) nom complet de la ressource du volume Google Cloud NetApp Volumes au format projects/{project}/locations/{location}/volumes/{volume}.

Exemple de corps de la requête :

{
  "description": "NetApp Volumes Datastore example",
  "nfs_datastore": {
    "google_file_service": {
      "netapp_volume": "projects/NETAPP_PROJECT_ID/locations/LOCATION/volumes/VOLUME_NAME"
    }
  }
}

Remplacez les éléments suivants :

  • NETAPP_PROJECT_ID : ID du projet dans lequel réside votre volume Google Cloud NetApp Volumes.
  • LOCATION : emplacement du volume Google Cloud NetApp Volumes. Il doit être identique à l'emplacement Datastore spécifié dans l'URL de la requête.
  • VOLUME_NAME : nom de votre volume Google Cloud NetApp Volumes.

gcloud

gcloud vmware datastores create DATASTORE_ID \
--location=LOCATION --project=PROJECT_ID \
--netapp=projects/NETAPP_PROJECT_ID/locations/LOCATION/volumes/VOLUME_NAME

Remplacez les éléments suivants :

  • DATASTORE_ID : nom de votre Datastore.
  • LOCATION : emplacement du volume Datastore et Google Cloud NetApp Volumes.
  • PROJECT_ID : ID de votre projet Google Cloud .
  • NETAPP_PROJECT_ID : ID du projet dans lequel réside votre volume Google Cloud NetApp Volumes.
  • VOLUME_NAME : nom de votre volume Google Cloud NetApp Volumes.

NFS tiers

Les sections suivantes décrivent comment créer un datastore reposant sur un partage NFS tiers à l'aide de l'API ou de gcloud CLI.

API

Pour un Datastore reposant sur un partage NFS tiers, indiquez les informations suivantes dans nfs_datastore :

  • third_party_nfs : (obligatoire) contient la configuration pour le NFS tiers.
    • network : nom du réseau VPC au format projects/{project}/global/networks/{network}.
    • file_share : nom du partage de fichiers.
    • servers : liste des adresses IP des serveurs.

Le corps de la requête se présente comme suit :

{
  "description": "Third-party NFS Datastore example",
  "nfs_datastore": {
    "third_party_nfs": {
      "network": "projects/PROJECT_ID/global/networks/NETWORK_NAME",
      "file_share": "FILE_SHARE_NAME",
      "servers": ["SERVER_ADDRESS_1"]
    }
  }
}

Remplacez les éléments suivants :

  • PROJECT_ID : ID de votre projet Google Cloud .
  • NETWORK_NAME : nom du réseau VPC pour le datastore NFS tiers.
  • FILE_SHARE_NAME : nom du partage de fichiers pour le datastore NFS tiers.
  • SERVER_ADDRESS_1 : adresse IP du serveur pour le datastore NFS tiers. Si nécessaire, ajoutez d'autres adresses à la liste.

gcloud

gcloud vmware datastores create DATASTORE_ID \
--third-party-nfs-network=NETWORK_NAME \
--third-party-nfs-file-share=FILE_SHARE_NAME \
--third-party-nfs-servers=SERVER_ADDRESSES \
--location=LOCATION --project=PROJECT_ID

Remplacez les éléments suivants :

  • DATASTORE_ID : nom de votre Datastore.
  • NETWORK_NAME : nom du réseau VPC pour le datastore NFS tiers.
  • FILE_SHARE_NAME : nom du partage de fichiers pour le datastore NFS tiers.
  • SERVER_ADDRESSES : liste d'adresses IP de serveur séparées par une virgule pour le datastore NFS tiers.
  • LOCATION : emplacement du datastore.
  • PROJECT_ID : ID de votre projet Google Cloud .

Lister ou obtenir des datastores

Pour lister tous les magasins de données pour un projet et un emplacement donnés, utilisez la gcloud CLI ou envoyez une requête GET :

API

Pour lister tous les data stores d'un projet et d'un emplacement donnés, envoyez une requête GET :

GET https://vmwareengine.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datastores

Pour récupérer des informations sur un datastore spécifique, envoyez une requête GET :

GET https://vmwareengine.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datastores/DATASTORE_ID

Remplacez les éléments suivants :

  • PROJECT_ID : ID de votre projet Google Cloud .
  • LOCATION : emplacement du datastore.
  • DATASTORE_ID : nom du Datastore.

gcloud

Pour répertorier tous les data stores d'un projet et d'un emplacement donnés, utilisez la commande gcloud vmware datastores list :

gcloud vmware datastores list \
--location=LOCATION --project=PROJECT_ID

Pour récupérer des informations sur un Datastore spécifique, utilisez la commande gcloud vmware datastores describe :

gcloud vmware datastores describe DATASTORE_ID \
--location=LOCATION --project=PROJECT_ID

Remplacez les éléments suivants :

  • LOCATION : emplacement du datastore.
  • PROJECT_ID : ID de votre projet Google Cloud .
  • DATASTORE_ID : nom du Datastore.

Monter un datastore

Après avoir créé une ressource Datastore, vous devez l'installer sur un cluster vSphere pour la rendre disponible aux hôtes ESXi. Pour monter un datastore NFS, utilisez gcloud CLI ou envoyez une requête POST au cluster cible :

API

POST https://vmwareengine.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/privateClouds/PRIVATE_CLOUD_ID/clusters/CLUSTER_ID:mountDatastore

Exemple de corps de la requête :

{
  "datastore_mount_config": {
    "datastore": "projects/PROJECT_ID/locations/LOCATION/datastores/DATASTORE_ID",
    "datastore_network": {
      "subnet": "projects/PROJECT_ID/locations/LOCATION/privateClouds/PRIVATE_CLOUD_ID/subnets/SERVICE_SUBNET_NAME",
      "connection_count": 4
    },
    "access_mode": "READ_WRITE",
    "nfs_version": "NFS_V3"
  }
}
  • datastore : nom de ressource du Datastore à installer.
  • subnet : nom de ressource du sous-réseau de service à utiliser pour le trafic NFS.
  • connection_count : (facultatif) nombre de connexions. La valeur par défaut est 4.
  • access_mode (facultatif) : mode d'accès, READ_WRITE ou READ_ONLY. La valeur par défaut est READ_WRITE.
  • nfs_version : (facultatif) version NFS. La valeur par défaut est NFS_V3.

Remplacez les éléments suivants :

  • PROJECT_ID : ID de votre projet Google Cloud .
  • LOCATION : emplacement des ressources.
  • PRIVATE_CLOUD_ID : nom du cloud privé.
  • CLUSTER_ID : nom du cluster.
  • DATASTORE_ID : nom du Datastore à monter.
  • SERVICE_SUBNET_NAME : nom du sous-réseau de service à utiliser pour le trafic NFS.

gcloud

gcloud vmware private-clouds clusters mount-datastore CLUSTER_ID \
--location=LOCATION --project=PROJECT_ID \
--private-cloud=PRIVATE_CLOUD_ID \
--datastore=projects/PROJECT_ID/locations/LOCATION/datastores/DATASTORE_ID \
--subnet=SERVICE_SUBNET_NAME

Vous pouvez également fournir les détails de la configuration réseau à l'aide d'un fichier JSON avec l'indicateur --datastore-network :

gcloud vmware private-clouds clusters mount-datastore CLUSTER_ID \
--location=LOCATION --project=PROJECT_ID \
--private-cloud=PRIVATE_CLOUD_ID \
--datastore=projects/PROJECT_ID/locations/LOCATION/datastores/DATASTORE_ID \
--datastore-network=network-config.json

network-config.json contient :

{
    "subnet": "SERVICE_SUBNET_NAME",
    "mtu": 1500,
    "connection-count": 4
}

Remplacez les éléments suivants :

  • CLUSTER_ID : nom du cluster.
  • LOCATION : emplacement des ressources.
  • PROJECT_ID : ID de votre projet Google Cloud .
  • PRIVATE_CLOUD_ID : nom du cloud privé.
  • DATASTORE_ID : nom du Datastore à monter.
  • SERVICE_SUBNET_NAME : nom du sous-réseau de service à utiliser pour le trafic NFS.

Une fois l'opération de montage réussie, vous pouvez afficher la configuration du datastore monté dans la ressource de cluster. La ressource de cluster inclut une entrée DatastoreMountConfig qui correspond au montage. Exemple :

...
datastoreMountConfig:
- accessMode: READ_WRITE
  datastore: projects/PROJECT_ID/locations/LOCATION/datastores/DATASTORE_ID
  datastoreNetwork:
    connectionCount: 4
    mtu: 1500
    networkPeering: projects/PROJECT_ID/locations/global/networkPeerings/PEERING_NAME
    subnet: projects/PROJECT_ID/locations/LOCATION/privateClouds/PRIVATE_CLOUD_ID/subnets/SUBNET_NAME
  fileShare: FILE_SHARE_NAME
  nfsVersion: NFS_V3
  servers:
  - SERVER_IP
...

Une fois l'opération de montage réussie, la liste clusters de la ressource Datastore est mise à jour. Vous pouvez décrire un datastore pour voir sur quels clusters il est monté.

API

GET https://vmwareengine.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datastores/DATASTORE_ID

gcloud

gcloud vmware datastores describe DATASTORE_ID --location=LOCATION --project=PROJECT_ID

Après avoir décrit un Datastore, recherchez le champ clusters dans la réponse pour voir sur quels clusters le Datastore est monté. L'exemple de résultat suivant montre un Datastore monté sur un cluster :

{
  "name": "projects/PROJECT_ID/locations/LOCATION/datastores/DATASTORE_ID",
  ...
  "clusters": [
    "projects/PROJECT_ID/locations/LOCATION/privateClouds/PRIVATE_CLOUD_ID/clusters/CLUSTER_ID"
  ],
  ...
}

Mettre à jour un datastore

Seul le champ description d'un Datastore peut être mis à jour. Pour mettre à jour un Datastore, utilisez la gcloud CLI ou envoyez une requête PATCH :

API

PATCH https://vmwareengine.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datastores/DATASTORE_ID

Exemple de corps de la requête :

{
  "description": "New datastore description"
}

Remplacez les éléments suivants :

  • PROJECT_ID : ID de votre projet Google Cloud .
  • LOCATION : emplacement du datastore.
  • DATASTORE_ID : ID du datastore.

gcloud

gcloud vmware datastores update DATASTORE_ID \
--location=LOCATION --project=PROJECT_ID \
--description="DESCRIPTION"

Remplacez les éléments suivants :

  • DATASTORE_ID : nom du Datastore.
  • LOCATION : emplacement du datastore.
  • PROJECT_ID : ID de votre projet Google Cloud .
  • DESCRIPTION : description du Datastore.

Démonter un datastore

Pour démonter un datastore NFS d'un cluster, utilisez la gcloud CLI ou envoyez une requête POST :

API

POST https://vmwareengine.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/privateClouds/PRIVATE_CLOUD_ID/clusters/CLUSTER_ID:unmountDatastore

Exemple de corps de la requête :

{
  "datastore": "projects/PROJECT_ID/locations/LOCATION/datastores/DATASTORE_ID"
}

Remplacez les éléments suivants :

  • PROJECT_ID : ID de votre projet Google Cloud .
  • LOCATION : emplacement des ressources.
  • PRIVATE_CLOUD_ID : nom du cloud privé.
  • CLUSTER_ID : nom du cluster.
  • DATASTORE_ID : nom du Datastore à démonter.

gcloud

gcloud vmware private-clouds clusters unmount-datastore CLUSTER_ID \
--location=LOCATION --project=PROJECT_ID \
--private-cloud=PRIVATE_CLOUD_ID \
--datastore=projects/PROJECT_ID/locations/LOCATION/datastores/DATASTORE_ID

Remplacez les éléments suivants :

  • CLUSTER_ID : nom du cluster.
  • LOCATION : emplacement des ressources.
  • PROJECT_ID : ID de votre projet Google Cloud .
  • PRIVATE_CLOUD_ID : nom du cloud privé.
  • DATASTORE_ID : nom du Datastore à démonter.

Supprimer un datastore

Pour supprimer une ressource Datastore, utilisez la gcloud CLI ou envoyez une requête DELETE. Le Datastore ne doit être installé sur aucun cluster.

API

DELETE https://vmwareengine.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datastores/DATASTORE_ID

Remplacez les éléments suivants :

  • PROJECT_ID : ID de votre projet Google Cloud .
  • LOCATION : emplacement du datastore.
  • DATASTORE_ID : nom du Datastore à supprimer.

gcloud

gcloud vmware datastores delete DATASTORE_ID \
--location=LOCATION --project=PROJECT_ID

Remplacez les éléments suivants :

  • DATASTORE_ID : nom du Datastore à supprimer.
  • LOCATION : emplacement du datastore.
  • PROJECT_ID : ID de votre projet Google Cloud .

Dépannage

Les tableaux suivants répertorient les erreurs courantes lors de la création et du montage de Datastore :

Erreurs de création de Datastore

Le tableau suivant décrit les erreurs que vous pouvez rencontrer lors de la création de data stores :

Message d'erreur Cause Solution
L'instance de serveur de fichiers NFS Filestore ne peut pas être vide. Le champ filestore_instance du corps de la requête est vide. Indiquez le nom complet de la ressource de votre instance Filestore.
Le volume du serveur de fichiers NFS NetApp ne peut pas être vide. Le champ netapp_volume du corps de la requête est vide. Indiquez le nom complet de la ressource de votre volume Google Cloud NetApp Volumes.
Format de champ non valide pour le type de champ filestore_instance Le champ filestore_instance ne respecte pas le format requis. Assurez-vous que le nom de la ressource est au format projects/{project}/locations/{location}/instances/{instance}.
Format de champ non valide pour le type de champ netapp_volume… Le champ netapp_volume ne respecte pas le format requis. Assurez-vous que le nom de la ressource est au format projects/{project}/locations/{location}/volumes/{volume}.
Le volume Datastore et le volume NFS se trouvent à des emplacements différents. L'instance Filestore ou le volume Google Cloud NetApp Volumes se trouve dans un emplacement différent de celui du Datastore que vous essayez de créer. Assurez-vous que le volume NFS et le Datastore se trouvent au même emplacement.
L'utilisateur ne dispose pas de l'autorisation requise "file.instances.get" Le compte de service ne dispose pas des autorisations IAM nécessaires pour accéder à l'instance Filestore. Attribuez le rôle roles/file.viewer à l'agent de service VMware Engine.
Autorisation "netapp.volumes.get" refusée pour la ressource… Le compte de service ne dispose pas des autorisations IAM nécessaires pour accéder au volume Google Cloud NetApp Volumes. Attribuez le rôle roles/netapp.viewer à l'agent de service VMware Engine.
L'instance Filestore ... n'existe pas. L'instance Filestore spécifiée est introuvable. Vérifiez que l'instance Filestore existe et que le nom de la ressource est correct.
Le volume Netapp "..." n'existe pas. Le volume Google Cloud NetApp Volumes spécifié est introuvable. Vérifiez que le volume Google Cloud NetApp Volumes existe et que le nom de la ressource est correct.
L'instance Filestore utilise un niveau non compatible L'instance Filestore utilise un niveau non compatible avec cette fonctionnalité. Créez une instance Filestore avec un niveau compatible : zonal ou régional.
L'instance Filestore utilise une version NFS non compatible L'instance Filestore utilise une version NFS non acceptée. Créez une instance Filestore avec la version 3 de NFS.
Le volume Netapp ... utilise une version NFS non compatible ... Le volume Google Cloud NetApp Volumes utilise une version NFS non compatible. Créez un volume Google Cloud NetApp Volumes avec NFS version 3.
La protection contre la suppression est désactivée pour le volume Netapp "...". La protection contre la suppression est désactivée pour le volume Google Cloud NetApp Volumes. Activez la protection contre la suppression sur le volume Google Cloud NetApp Volumes.
Impossible de créer Datastore. La ressource ... avec la même configuration existe déjà. Un datastore portant le même nom et ayant la même configuration existe déjà. Choisissez un autre nom pour votre Datastore ou modifiez la configuration.

Erreurs de montage et de démontage de Datastore

Le tableau suivant décrit les erreurs que vous pouvez rencontrer lors du montage ou du démontage des DataStores :

Message d'erreur Cause Solution
Échec de la validation de DatastoreFormat. Le format Datastore spécifié n'est pas accepté ou n'est pas valide. Assurez-vous que le format du datastore est compatible avec VMware Engine (par exemple, NFSv3).
Plage MTU non valide. Elle doit être comprise entre 1 300 et 9 000. La valeur MTU (unité de transmission maximale) fournie pour le réseau Datastore ne se trouve pas dans la plage acceptable de 1 300 à 9 000. Définissez une valeur MTU comprise entre 1 300 et 9 000.
Le projet Datastore n'est pas identique au projet de cluster L'ID de projet Google Cloud du Datastore ne correspond pas à l'ID de projet Google Cloud du cluster vSphere. Assurez-vous que Datastore et le cluster appartiennent au même projet Google Cloud .
MTU non valide. La MTU doit être cohérente avec celle de Datastore monté existant dans le cluster. La MTU du nouveau réseau de datastore ne correspond pas à celle des autres datastores NFS déjà montés sur le même cluster. Alignez la MTU du nouveau Datastore sur celle des Datastores montés existants dans le cluster.
Datastore doit être présent et à l'état "Prêt" La ressource Datastore spécifiée n'existe pas ou n'est pas à l'état READY. Vérifiez que le Datastore a bien été créé et que son état est READY à l'aide de l'API Get ou List Datastore.
Pour les ressources propriétaires, le filestore ou le netapp référencés doivent être présents et à l'état "Prêt". L'instance Filestore ou le volume Google Cloud NetApp Volumes sous-jacents sont manquants ou ne sont pas dans un état READY. Assurez-vous que le volume NFS référencé existe et qu'il est à l'état READY dans son projet Google Cloud .
L'appairage réseau doit être actif entre le VPC du partage de fichiers et le réseau VMware Engine du cloud privé du cluster. Une connexion d'appairage de réseaux VPC est requise entre le réseau VPC où réside le volume NFS et le réseau VMware Engine du cloud privé. Cette connexion est manquante ou n'est pas à l'état ACTIVE. Vérifiez qu'une connexion d'appairage de réseaux VPC active existe entre le VPC du partage de fichiers et le réseau VMware Engine de votre cloud privé.
Échec de l'opération de montage sur les anciens réseaux Pour les anciens réseaux, la connexion privée au projet locataire du volume NFS est manquante ou inactive. Assurez-vous qu'une connexion privée active au projet locataire existe avant d'essayer de monter Datastore. Ne supprimez pas une connexion privée utilisée par un Datastore installé.
Pour le mode First Party, une option d'exportation doit être ajoutée pour autoriser le sous-réseau PC utilisé pour le montage. La règle d'exportation du volume NFS n'inclut pas le sous-réseau de service du cloud privé pour l'accès. Modifiez la règle d'exportation de votre volume NFS pour autoriser l'accès à partir du sous-réseau de service du cloud privé qui sera utilisé pour le montage.
Le sous-réseau doit être présent et une plage CIDR d'adresses IP valide doit y être configurée. Le sous-réseau de service spécifié pour le réseau Datastore est manquant ou ne comporte pas de plage CIDR d'adresses IP valide. Assurez-vous que le sous-réseau de service désigné existe et qu'il dispose d'une plage CIDR d'adresses IP correctement configurée, suffisante pour allouer des adresses IP à tous les hôtes ESXi du cluster.
Format Datastore non valide Le nom de ressource Datastore spécifié n'est pas dans un format reconnu ou correct, ce qui empêche l'opération de démontage. Vérifiez que le nom de ressource Datastore fourni dans la demande de démontage est exact et respecte le format projects/{project}/locations/{location}/datastores/{datastore_id}.
Datastore non monté sur le cluster Le Datastore que vous tentez de démonter n'est pas monté sur le cluster spécifié. Avant d'essayer de démonter le datastore, vérifiez qu'il est monté sur le cluster vSphere cible.