File Storage Service - Premiers pas (bêta)
Objectif
OVHcloud propose un service File Storage basé sur OpenStack Manila. Ce service fournit des shares NFS gérés sur des réseaux privés, avec un accès ReadWriteMany (RWX) possible depuis plusieurs instances ou pods Kubernetes.
Il est accessible via les API OVHcloud, OpenStack CLI et API, Manila CSI et Terraform.
Ce service est actuellement en version bêta et disponible uniquement dans les régions SBG5, DE1 et GRA. Les fonctionnalités et la disponibilité peuvent être modifiées.
Pendant la phase bêta, la taille autorisée des shares varie entre 150 Gio à 10 Tio.
Prérequis
- Vous disposez déjà d’un réseau privé dans votre projet Public Cloud
- Une instance Public Cloud dans votre compte OVHcloud
- Un environnement CLI OpenStack prêt à l’emploi
En pratique
Actuellement, le service File Storage ne peut être consulté et géré que via les API OVHcloud et la CLI OpenStack avec le plugin Manila. D’autres interfaces seront disponibles à l’avenir.
1. Créer un share
Identifiez votre réseau privé et votre sous-réseau.
Avant de créer ou d'associer un service File Storage, vous devez identifier le réseau privé cible.
Récupérez l'ID du réseau :
Exemple de résultat :
Note : Sélectionnez uniquement un réseau privé.
Récupérez l'ID du sous-réseau à l'aide de l'ID réseau :
Exemple de résultat :
L'ID réseau et l'ID sous-réseau doivent tous deux respecter le format suivant : abc12345-def6-4abc-8def-123456abcdef.
Créez un share NFS de 150 Gio connecté à votre réseau privé :
Note : Remplacez par le nom de share que vous avez choisi.
Répertoriez vos actions et attendez que la nouvelle action apparaisse avec le statut available.
Exemple de résultat :
Note : L'identifiant du share doit avoir le format abc12345-def6-4abc-8def-123456abcdef.
Récupérez les détails du share à l'aide de l'ID de share :
Exemple de résultat :
2. Autoriser une machine virtuelle cliente
Assurez-vous que la machine virtuelle cliente se trouve sur le même réseau privé que le share.
Récupérez l'adresse IP privée de la machine virtuelle.
Accordez l'accès au share à l'aide de l'adresse IP privée de la machine virtuelle (par exemple, 10.1.0.123) via la gestion ACL :
Exemple de résultat :
Vérifiez l'accès au share NFS à partir de la machine virtuelle cliente autorisée :
3. Montez le share sur votre machine virtuelle cliente
Connectez-vous à votre machine virtuelle cliente et installez les utilitaires NFS nécessaires pour monter le share :
Créez un point de montage et montez le share :
Vérifiez le montage :
Rendez le montage persistant après les redémarrages :
Cela garantit que le share NFS est automatiquement remonté après le redémarrage de la VM.
4. Vérifier la capacité et l'utilisation
Une fois le share NFS monté, vérifiez son espace disponible et son utilisation :
Exemple de résultat :
Note : Cela vous permet de surveiller la capacité de stockage et l'utilisation de votre share NFS.
Prérequis supplémentaires
- Assurez-vous que l'utilisateur OpenStack dispose du rôle
`AdministratorouShare operator.
1. Installer le plugin CLI Manila
Si les commandes Manila ne sont pas encore disponibles, installez le plugin :
Vérifiez l’installation :
Vous devriez voir des commandes telles que :
- share create
- share list
- share network create
- share access create
2. Vérifier les types de shares disponibles
Listez les types de shares disponibles dans votre région :
Sortie attendue :
Remarque : Le type standard-1az utilise driver_handles_share_servers = True, ce qui signifie que vous devez associer un réseau partagé lors de la création d'un share.
3. Créer un Share Network
Identifiez votre réseau privé et votre sous-réseau :
Récupérez leurs IDs :
Les IDs du réseau et du sous-réseau devraient ressembler à : abc12345-def6-4abc-8def-123456abcdef
Créez un share network lié à votre réseau privé :
Remarque : Remplacez <my-share-network-name> par le nom que vous souhaitez donner à votre share network.
Vérifiez le share network :
4. Créer un share NFS
Créez un share NFS de 150 Go :
Remarque : Remplacez par le nom que vous souhaitez donner à votre share.
Surveillez l’état du share jusqu’à ce qu’il devienne available :
5. Autoriser une VM cliente
Assurez-vous que votre VM cliente se trouve dans le même réseau privé que le share.
Récupérez l’adresse IP privée de la VM :
Exemple de sortie :
Autorisez l’accès au share en utilisant l’IP privée de la VM (par exemple, 10.1.0.123) :
Vérifiez les accès :
6. Récupérer le chemin d’export
Obtenez l’emplacement d’export NFS :
Exemple de sortie :
Remarque : Ce chemin d’export est utilisé pour monter le share sur votre VM cliente.
7. Monter le share sur votre VM cliente
Connectez-vous à votre VM et installez les utilitaires NFS :
Créez un point de montage et montez le share :
Vérifiez le montage :
Remarque : Remplacez le chemin d’export par celui récupéré pour votre share.
8. Vérifier la capacité et l’utilisation
Affichez l’espace disponible sur le share monté :
Exemple de sortie :
Remarque : Cela vous permet de suivre la capacité de stockage et l’utilisation de votre share NFS.
9. Gérer le cycle de vie du share
Redimensionner le share :
Seule l’extension d’un share est autorisée pour le moment ; la réduction n’est pas supportée.
Supprimer un share :
Supprimer le share network :
Remarque : Assurez-vous qu’aucun share actif n’utilise le réseau avant de le supprimer.
10. Dépannage
| Symptôme | Cause | Solution |
|---|---|---|
Unknown command ['share'] | CLI Manila non installée | Installez-la avec sudo apt install python3-manilaclient |
Share network must be set | Utilisation d’un type de share DHSS=True | Fournissez --share-network |
| Cannot mount NFS | IP non autorisée ou réseau incorrect | Assurez-vous que la VM est sur le même sous-réseau privé et que la règle d’accès est créée |
| Share stuck in creating | ID de réseau ou sous-réseau invalide | Vérifiez NETWORK_ID et SUBNET_ID |
1. Prérequis supplémentaires :
- Helm CLI installé sur votre machine locale.
- OpenStack CLI configuré et prêt à l'emploi.
- Krew (gestionnaire de plugins kubectl) installé.
- Stern (plugin de suivi des logs kubectl) installé via Krew.
- Un cluster Kubernetes déployé dans un réseau privé au sein d'une région Public Cloud où les points de terminaison Manila sont accessibles.
- Assurez-vous que votre utilisateur OpenStack dispose du rôle Administrateur ou Opérateur de partage.
Ce guide fonctionne à la fois avec les clusters Managed Kubernetes Service (MKS) et les clusters Kubernetes autogérés.
2. Installation de la ligne de commande Helm
3. Installation des outils Krew et Stern
Exécutez la commande suivante pour installer Krew dans votre environnement :
Une fois Krew installé, installez Stern avec :
4. Installation de la CLI OpenStack
Préparez votre environnement pour utiliser l'API OpenStack en installant python-openstackclient, en suivant ce guide.
Installez le client Manila pour gérer les partages du service File Storage :
N'oubliez pas de mettre à jour votre script de complétion de shell pour activer l'autocomplétion OpenStack share.
5. Installation du driver CSI NFS
Ajoutez le référentiel de chart Helm :
Listez les versions disponibles du chart CSI NFS :
Installez la version choisie du chart Helm :
Remplacez les flags facultatifs --wait -v=5 --debug selon vos besoins pour le débogage ou l'installation synchrone.
Suivez les logs du driver CSI NFS :
6. Installation du driver CSI Manila
Ajoutez le référentiel de chart Helm :
Listez les versions disponibles du driver CSI Manila :
Installez la version choisie du chart Helm :
Suivez les logs du driver CSI Manila :
7. Préparation des ressources OpenStack pour Manila CSI
7.1. Créez un utilisateur OpenStack dédié pour Manila
Vous avez besoin d'un utilisateur OpenStack séparé pour gérer les ressources Manila. Cet utilisateur peut être créé :
- Via l'espace client OVHcloud (Public Cloud > Paramètres > Utilisateurs & Rôles)
- Ou via la CLI OVHcloud
7.2. Collectez les détails du projet et de l'utilisateur OpenStack
Téléchargez le fichier openrc de votre projet depuis l'espace client OVHcloud et notez les informations suivantes :
- os-userName
- os-password
- os-domainName
- os-projectDomainID
- os-projectName
- os-projectDomainID
Une fois ces valeurs obtenues, créez un fichier nommé secrets.yaml avec le contenu suivant. Ce secret Kubernetes permet au pilote CSI Manila de s'authentifier auprès d'OpenStack et de gérer les ressources Manila dans votre cluster.
Ensuite, appliquez-le à votre cluster Kubernetes :
7.3. Configurez le réseau partagé OpenStack
Manila nécessite un réseau partagé car le driver est configuré avec DHSS=true (driver_handles_share_servers).
Cette ressource est gérée par le propriétaire du projet OpenStack.
Exemple de sortie :
8. Configuration du driver CSI Manila
Une fois le réseau de share OpenStack créé, et avant de configurer le pilote CSI Manila, vous devez définir la plage CIDR utilisée par vos nœuds Kubernetes. Cela garantit que les nœuds peuvent accéder aux shares Manila.
Éditez la ConfigMap de runtime :
Créez un fichier nommé manila-runtime-configmap.yaml et mettez à jour le champ nfs.matchExportLocationAddress afin qu'il corresponde au CIDR de votre cluster :
Exemple :
Appliquez la ConfigMap à votre cluster Kubernetes :
9. Création de shares NFS via provisionnement dynamique
Pour permettre au driver CSI Manila de créer dynamiquement des shares Manila et de les utiliser comme volumes Kubernetes, vous devez définir une StorageClass dans votre cluster. Cette StorageClass spécifie le réseau partagé qui sera utilisé pour créer et accorder l'accès aux exports NFS.
Récupérez l'ID du réseau partagé en utilisant la CLI OpenStack pour obtenir l'ID de votre réseau partagé :
Configurez la StorageClass :
- Créez un fichier nommé
dynamic-storageclass.yamlavec le contenu suivant :
- Mettez à jour la valeur
parameter.shareNetworkIDavec l'identifiant réseau partagé. - Mettez à jour la valeur
parameter.nfs-shareClientavec le CIDR du sous-réseau défini lors de la création du cluster.
Créez la StorageClass dynamique en appliquant la StorageClass à votre cluster :
Une fois la StorageClass créée, créez un fichier nommé nfs-pvc.yaml définissant une PersistentVolumeClaim (PVC) qui utilise cette StorageClass. Par exemple, demandez un volume de 150 Gio avec un accès ReadWriteMany (RWX) :
Après avoir appliqué la demande de volume, listez les nouveaux shares Manila créés dans votre projet Public Cloud :
Exemple de sortie :
Créez un fichier nommé nfs-deployment.yaml avec le contenu suivant :
Déployez le serveur web avec 2 répliques, qui monteront et partageront le volume RWX créé précédemment :
Vous pouvez vérifier la fonctionnalité RWX en vous connectant à un pod en utilisant la commande kubectl exec et en créant un fichier dans le répertoire monté (par exemple, /var/lib/www/). Ensuite, connectez-vous au deuxième pod et vérifiez que le fichier est visible. Si c'est le cas, votre share Manila exposé via NFS fonctionne correctement.
10. Redimensionner un share NFS à l'aide du provisionnement dynamique
Le redimensionnement d'un share NFS n'est pris en charge que pour :
- Les PersistentVolumeClaims (PVC) provisionnés dynamiquement
- Les volumes démontés (vous devez réduire votre déploiement avant de redimensionner pour éviter les erreurs)
À l'heure actuelle, seule l'extension de share est prise en charge — il n'est pas possible de réduire un volume.
Pour redimensionner un share Manila existant :
Réduisez le déploiement pour vous assurer que le volume est démonté :
Modifiez le PVC pour demander une nouvelle taille (par exemple, 42 Gi) :
Vérifiez que le share OpenStack a été mis à jour :
Si le share a été étendu avec succès, redimensionnez le déploiement :
Toute tentative de redimensionnement d'un PVC qui n'est pas provisionné dynamiquement par une StorageClass entraînera une erreur telle que :
error: persistentvolumeclaims "existing-nfs-share-pvc" could not be patched: persistentvolumeclaims "existing-nfs-share-pvc" is forbidden: only dynamically provisioned pvc can be resized and the storageclass that provisions the pvc must support resize
11. Montage d'un share Manila existant comme volume dans les pods
Comme indiqué précédemment, une StorageClass Kubernetes peut créer dynamiquement des shares Manila exposés via NFS. Alternativement, vous pouvez utiliser un share Manila pré-provisionné et le monter directement dans un pod.
Créez un nouveau share avec la CLI OpenStack :
Où :
SHARE_TYPEeststandard-1azpar défaut. Vous pouvez vérifier les types de share existants avec :
SHARE_NETWORK_IDest l'identifiant de votre réseau partagé.NFS_SHARE_NAMEest le nom de votre share NFS.SHARE_PROTOCOLest le protocole à utiliser (actuellement, seul NFS est pris en charge).SHARE_SIZEest la taille à allouer à votre volume NFS (en GiB).
Créez une règle d'accès au share :
Où :
SHARE_ACCESS_NAMEest le nom du share.SUBNET_CIDRest le CIDR utilisé lors de la configuration du runtime Manila CSI.
Récupérez l'ID de share NFS et l'ID d'accès au share, puis créez un fichier nommé
static-provisioning.yamlet mettez à jour les paramètresvolumeAttributes.shareIDetvolumeAttributes.shareAccessID:
Appliquez le manifeste pour créer un volume persistant et sa demande de volume persistant en utilisant le share NFS pré-provisionné. Le share Manila ne sera utilisé que si le pod qui réclame la demande de volume est déployé dans votre cluster :
Déployez un pod qui monte ce share :
Vous pouvez maintenant utiliser kubectl exec pour accéder au pod et exécuter df -h pour vérifier que le share Manila pré-créé est correctement monté.
CLI utiles
Avec vos informations d'identification OpenStack chargées dans l'environnement, vous pouvez gérer les shares Manila en utilisant la CLI OpenStack. Les commandes courantes incluent :
Ressources utiles
Votre stockage ReadWriteMany (RWX) dans k8s avec Manila CSI Manila/Concepts Approche générique pour le provisionnement de share Plugin officiel Manila CSI sur GitHub
1. Prérequis additionnels
- Vous disposez déjà d'un environnement Terraform fonctionnel.
Vous pouvez trouver des exemples utiles ici
2. Déclarer le fournisseur OpenStack
Ajoutez la configuration suivante à votre main.tf pour spécifier les fournisseurs Terraform requis :
vim main.tf
terraform {
required_providers {
ovh = {
source = "ovh/ovh"
}
openstack = {
source = "terraform-provider-openstack/openstack"
}
}
}
Ce bloc garantit que Terraform utilise les fournisseurs corrects pour gérer les ressources OVH et OpenStack.
3. Récupérer les informations de votre réseau privé
Ajoutez les blocs suivants à votre fichier main.tf pour récupérer les détails de votre réseau privé et sous-réseau :
Ces blocs de données permettent à Terraform d'interroger OpenStack et de récupérer les détails nécessaires de votre réseau privé et sous-réseau, requis pour configurer le service File Storage.
4. Créer un réseau partagé
Ajoutez la ressource suivante à votre main.tf pour créer un réseau partagé pour votre service File Storage :
Cette ressource crée un réseau partagé dans OpenStack, l'associant à votre réseau privé et sous-réseau existants. Elle est nécessaire pour provisionner et gérer des systèmes de fichiers partagés.
5. Créer un partage NFS
Ajoutez la ressource suivante à votre main.tf pour créer un partage NFS sur votre service File Storage :
Cette ressource provisionne un partage NFS dans OpenStack, lié au réseau partagé précédemment créé. Ajustez la size et share_type selon vos besoins.
6. Autoriser une machine virtuelle cliente
Assurez-vous que votre machine virtuelle cliente est connectée au même réseau privé que votre partage.
Récupérez l'adresse IP privée de la machine virtuelle :
Exemple de sortie :
Utilisez l'adresse IP privée (par exemple : 10.1.0.123) pour accorder l'accès au partage NFS :
Cette ressource autorise la machine virtuelle cliente spécifiée à accéder au partage NFS avec des permissions en lecture / écriture.
7. Récupérer le chemin d'exportation
Ajoutez le bloc de sortie suivant à votre main.tf pour récupérer le chemin d'exportation du partage NFS :
Cette sortie fournit le chemin d'exportation NFS, utilisable par les machines virtuelles clientes pour monter le partage.
8. Monter le partage sur votre machine virtuelle cliente
Connectez-vous à votre machine virtuelle cliente et installez les utilitaires NFS nécessaires :
Créez un point de montage et montez le partage :
Remplacez par le chemin d'exportation récupéré via Terraform (par exemple : 10.1.0.12:/shares/share-abc12345-def6-4abc-8def-123456abcdef).
Vérifiez le montage :
Rendez le montage persistant après les redémarrages :
Cela garantit que votre partage NFS est automatiquement remonté après les redémarrages de la machine virtuelle.
9. Vérifier la capacité et l'utilisation
Une fois le partage NFS monté, vérifiez son espace disponible et son utilisation :
Exemple de sortie :
Cette commande affiche la taille totale, l'espace utilisé et l'espace disponible sur votre partage NFS monté.
Aller plus loin
Échangez avec notre communauté d'utilisateurs.