Accéder aux instances Filestore avec le pilote CSI Filestore

Restez organisé à l'aide des collections Enregistrez et classez les contenus selon vos préférences.

Le pilote CSI Filestore est le principal moyen d'utiliser les instances Filestore avec Google Kubernetes Engine (GKE). Le pilote CSI Filestore offre une expérience entièrement gérée fournie par le pilote CSI Google Cloud Filestore Open Source.

La version du pilote CSI Filestore est liée aux numéros de version mineures de Kubernetes. La version du pilote CSI Filestore est généralement le dernier pilote disponible au moment de la publication de la version mineure de Kubernetes. Les pilotes sont mis à jour automatiquement lorsque le cluster est mis à niveau afin d'intégrer le dernier correctif GKE.

Avantages

L'utilisation du pilote CSI Filestore offre les avantages suivants :

  • Vous pouvez utiliser des instantanés de volume avec le pilote CSI Filestore. Les instantanés de volume CSI peuvent servir à créer des sauvegardes Filestore, qui créent une copie différentielle du partage de fichiers, y compris toutes les données et métadonnées de ces fichiers dans un espace de stockage distinct. Vous ne pouvez restaurer cette copie que sur une nouvelle instance Filestore. Il n'est pas possible d'effectuer une restauration sur une instance Filestore existante. Vous pouvez utiliser l'API d'instantanés de volume CSI pour déclencher des sauvegardes Filestore, en ajoutant un champ type:backup dans la classe d'instantanés de volume.
  • Vous pouvez utiliser l'expansion de volume avec le pilote CSI Filestore. L'expansion de volume permet de redimensionner la capacité du volume.
  • Vous pouvez accéder aux instances Filestore existantes en utilisant des instances Filestore préprovisionnées dans les charges de travail Kubernetes. Vous pouvez également créer ou supprimer des instances Filestore de manière dynamique, et les utiliser dans des charges de travail Kubernetes à l'aide d'un objet StorageClass ou Deployment.
  • Accepte les multipartages Filestore pour GKE. Cette fonctionnalité vous permet de créer une instance Filestore et de lui attribuer plusieurs volumes persistants de plus petite taille sur n'importe quel nombre de clusters GKE. Pour en savoir plus, consultez Utiliser plusieurs partages Filestore pour GKE.

Conditions requises

  • Pour utiliser le pilote CSI Filestore, vos clusters doivent utiliser GKE version 1.21 ou ultérieure.
  • Pour que vous puissiez exploiter la fonctionnalité Multishare Filestore, vos clusters doivent utiliser GKE version 1.23 ou ultérieure.
  • Le pilote CSI Filestore est compatible avec les clusters utilisant Linux uniquement. Les nœuds Windows Server ne sont pas compatibles.
  • La taille minimale d'une instance pour Filestore est d'au moins 1 Tio. La taille minimale de l'instance dépend du niveau de service Filestore que vous avez sélectionné. Pour en savoir plus, consultez la page Niveaux de service.

Avant de commencer

Avant de commencer, effectuez les tâches suivantes :

  • Activez l'API Cloud Filestore et l'API Google Kubernetes Engine.
  • Activer les API
  • Si vous souhaitez utiliser Google Cloud CLI pour cette tâche, installez puis initialisez gcloud CLI.

Activer le pilote CSI Filestore sur un nouveau cluster

Pour activer le pilote CSI du pilote CSI Filestore lorsque vous créez un cluster standard, suivez ces étapes avec Google Cloud CLI ou la console Google Cloud.

gcloud

gcloud container clusters create CLUSTER_NAME \
    --addons=GcpFilestoreCsiDriver \
    --cluster-version=VERSION

Remplacez les éléments suivants :

  • CLUSTER_NAME : nom du cluster
  • VERSION : numéro de version de GKE. Vous devez sélectionner la version 1.21 ou ultérieure pour utiliser cette fonctionnalité. Vous pouvez également utiliser l'option --release-channel et spécifier une version disponible.

Console

  1. Accédez à la page Google Kubernetes Engine dans Google Cloud Console.

    Accéder à Google Kubernetes Engine

  2. Cliquez sur Créer.

  3. Sélectionnez le mode de cluster Standard, puis cliquez sur Configurer.

  4. Configurez le cluster comme vous le souhaitez.

  5. Dans le volet de navigation, sous Cluster, cliquez sur Fonctionnalités.

  6. Cochez la case Activer le pilote CSI Filestore.

  7. Cliquez sur Créer.

Si vous souhaitez utiliser Filestore sur un réseau VPC partagé, consultez la page Activer le pilote CSI Filestore sur un nouveau cluster avec VPC partagé.

Après avoir activé le pilote CSI Filestore, vous pouvez l'utiliser dans les volumes Kubernetes à l'aide du nom du pilote et de l'approvisionneur : filestore.csi.storage.gke.io.

Activer le pilote CSI Filestore sur un cluster existant

Pour activer le pilote CSI Filestore dans les clusters existants, utilisez Google Cloud CLI ou la console Google Cloud.

Pour activer le pilote sur un cluster existant, procédez comme suit :

gcloud

gcloud container clusters update CLUSTER_NAME \
   --update-addons=GcpFilestoreCsiDriver=ENABLED

Remplacez CLUSTER_NAME par le nom du cluster existant.

Console

  1. Accédez à la page Google Kubernetes Engine dans Google Cloud Console.

    Accéder à Google Kubernetes Engine

  2. Dans la liste des clusters, cliquez sur le nom du cluster que vous souhaitez modifier.

  3. Sous Fonctionnalités, à côté du champ Pilote CSI Filestore, cliquez sur  Modifier le pilote CSI Filestore.

  4. Cochez la case Activer le pilote CSI Filestore.

  5. Cliquez sur Save Changes (Enregistrer les modifications).

Désactiver le pilote CSI Filestore

Vous pouvez désactiver le pilote CSI Filestore sur un cluster Autopilot ou Standard existant à l'aide de la CLI Google Cloud ou de la console Google Cloud.

gcloud

gcloud container clusters update CLUSTER_NAME \
    --update-addons=GcpFilestoreCsiDriver=DISABLED \
    --region REGION

Remplacez les valeurs suivantes :

  • CLUSTER_NAME : nom du cluster existant.
  • REGION : région choisie de votre cluster (par exemple, us-central1).

Console

  1. Dans Google Cloud Console, accédez au menu Google Kubernetes Engine.

    Accéder à Google Kubernetes Engine

  2. Dans la liste des clusters, cliquez sur le nom du cluster que vous souhaitez modifier.

  3. Sous Fonctionnalités, à côté du champ Pilote CSI Filestore, cliquez sur  Modifier le pilote CSI Filestore.

  4. Cochez la case Activer le pilote CSI Filestore.

  5. Cliquez sur Save Changes (Enregistrer les modifications).

Accéder à un volume à l'aide du pilote CSI Filestore

Les sections suivantes décrivent la procédure d'utilisation standard d'un volume Kubernetes reposant sur un pilote CSI Filestore dans GKE.

Créer un objet StorageClass

Une fois le pilote CSI Filestore activé, GKE installe automatiquement les objets StorageClasses suivants pour le provisionnement d'instances Filestore :

Exécutez la commande suivante pour trouver le nom de votre objet StorageClass installé :

kubectl get sc

Vous pouvez également installer un autre objet StorageClass qui utilise le pilote CSI Filestore en ajoutant filestore.csi.storage.gke.io dans le champ provisioner.

  1. Enregistrez le manifeste suivant sous le nom filestore-example-class.yaml :

    apiVersion: storage.k8s.io/v1
    kind: StorageClass
    metadata:
      name: filestore-example
    provisioner: filestore.csi.storage.gke.io
    volumeBindingMode: Immediate
    allowVolumeExpansion: true
    parameters:
      tier: standard
      network: default
    

    Dans le fichier manifeste, examinez la configuration de paramètre suivante :

    • Si vous définissez volumeBindingMode sur Immediate, le provisionnement du volume commence immédiatement. Cela est possible car les instances Filestore sont accessibles depuis n'importe quelle zone. Par conséquent, GKE n'a pas besoin de connaître la zone dans laquelle le pod est programmé, contrairement au disque persistant Compute Engine. Lorsque ce paramètre est défini sur WaitForFirstConsumer, GKE ne commence le provisionnement qu'après la planification du pod. Pour en savoir plus, consultez la section VolumeBindingMode.
    • Tout niveau peut être spécifié dans le paramètre tier (par exemple, standard, premium ou enterprise). + Le paramètre network peut être utilisé lors du provisionnement d'instances Filestore sur des VPC autres que ceux par défaut. Les VPC autres que ceux définis par défaut nécessitent la configuration de règles de pare-feu spéciales.
  2. Pour créer une ressource StorageClass basée sur le fichier manifeste filestore-example-class.yaml, exécutez la commande suivante :

    kubectl create -f filestore-example-class.yaml
    

Si vous souhaitez utiliser Filestore sur un réseau VPC partagé, consultez la section Créer une StorageClass lorsque vous utilisez le pilote CSI Filestore avec un VPC partagé.

Utiliser un objet PersistentVolumeClaim pour accéder au volume

Vous pouvez créer une ressource PersistentVolumeClaim qui fait référence à l'objet StorageClass du pilote CSI Filestore.

Vous pouvez utiliser une StorageClass préinstallée ou personnalisée.

L'exemple de fichier manifeste suivant crée un objet PersistentVolumeClaim qui référence la StorageClass nommée filestore-example.

  1. Enregistrez le fichier manifeste suivant sous le nom pvc-example.yaml :

    kind: PersistentVolumeClaim
    apiVersion: v1
    metadata:
      name: podpvc
    spec:
      accessModes:
      - ReadWriteMany
      storageClassName: filestore-example
      resources:
        requests:
          storage: 1Ti
    
  2. Pour créer une ressource PersistentVolume basée sur le fichier manifeste pvc-example.yaml, exécutez la commande suivante :

    kubectl create -f pvc-example.yaml
    

Créer un objet Deployment qui consomme le volume

L'exemple de fichier manifeste de déploiement suivant utilise la ressource PersistentVolume nommée pvc-example.yaml.

Plusieurs pods peuvent partager la même ressource PersistentVolumeClaim.

  1. Enregistrez le fichier manifeste filestore-example-deployment.yaml suivant sous le nom  :

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: web-server-deployment
      labels:
        app: nginx
    spec:
      replicas: 3
      selector:
        matchLabels:
          app: nginx
      template:
        metadata:
          labels:
            app: nginx
        spec:
          containers:
          - name: nginx
            image: nginx
            volumeMounts:
            - mountPath: /usr/share/nginx/html
              name: mypvc
          volumes:
          - name: mypvc
            persistentVolumeClaim:
              claimName: podpvc
    ---
    kind: PersistentVolumeClaim
    apiVersion: v1
    metadata:
      name: podpvc
    spec:
      accessModes:
        - ReadWriteMany
      storageClassName: filestore-example
      resources:
        requests:
          storage: 1Ti
    
  2. Pour créer un objet Deployment basé sur le fichier manifeste filestore-example-deployment.yaml, exécutez la commande suivante :

    kubectl apply -f filestore-example-deployment.yaml
    
  3. Vérifiez que le déploiement a bien été créé :

    kubectl get deployment
    

    Le provisionnement des instances Filestore peut prendre un certain temps. Avant cela, les déploiements ne signaleront pas l'état READY. Vous pouvez suivre la progression en surveillant l'état de votre PVC en exécutant la commande suivante:

    kubectl get pvc
    

    Le PVC devrait atteindre l'état BOUND une fois le provisionnement du volume terminé.

Ajouter des étiquettes aux instances Filestore

Vous pouvez utiliser des libellés pour regrouper des instances associées et stocker des métadonnées sur une instance. Un libellé est une paire clé-valeur qui vous aide à organiser vos instances Filestore. Vous pouvez associer un libellé à chaque ressource, puis filtrer les ressources par libellé.

Vous pouvez fournir des libellés à l'aide de la clé labels dans StorageClass.parameters. Une instance Filestore peut être libellée avec des informations sur ce que l'instance PersistentVolumeClaim/PersistentVolume a créé. Les clés et valeurs des libellés personnalisés doivent respecter la convention d'attribution de noms des libellés. Consultez l'exemple de classe de stockage Kubernetes pour appliquer des libellés personnalisés à l'instance Filestore.

Utiliser fsgroup avec des volumes Filestore

Kubernetes utilise fsGroup pour modifier les autorisations et les droits de propriété du volume afin de faire correspondre un fsGroup demandé par l'utilisateur dans le paramètre SecurityContext du pod. Un fsGroup est un groupe supplémentaire qui s'applique à tous les conteneurs d'un pod. Vous pouvez appliquer un fsgroup aux volumes provisionnés par le pilote CSI Filestore.

Utiliser Filestore avec un VPC partagé

Cette section explique comment utiliser une instance Filestore sur un réseau VPC partagé à partir d'un projet de service.

Configurer un cluster avec un VPC partagé

Pour configurer vos clusters avec un réseau VPC partagé, procédez comme suit :

  1. Créer un hôte et un projet de service
  2. Activez l'API Google Kubernetes Engine sur vos projets hôtes et de service.
  3. Dans votre projet hôte, créez un réseau et un sous-réseau.
  4. Activez le VPC partagé dans le projet hôte.
  5. Sur le projet hôte, attribuez la liaison de rôle utilisateur HostServiceAgent au compte de service GKE du projet de service.
  6. Activez l'accès privé aux services sur le réseau VPC partagé.

Activer le pilote CSI Filestore sur un nouveau cluster avec VPC partagé

Pour activer le pilote CSI Filestore sur un nouveau cluster avec un VPC partagé, procédez comme suit :

  1. Vérifiez les sous-réseaux utilisables et les plages secondaires. Lorsque vous créez un cluster, vous devez spécifier un sous-réseau ainsi que les plages d'adresses IP secondaires à utiliser pour les pods et les services du cluster.

    gcloud container subnets list-usable \
       --project=SERVICE_PROJECT_ID \
       --network-project=HOST_PROJECT_ID
    

    Le résultat ressemble à ce qui suit :

    PROJECT                   REGION       NETWORK     SUBNET  RANGE
    HOST_PROJECT_ID  us-central1  shared-net  tier-1  10.0.4.0/22
    ┌──────────────────────┬───────────────┬─────────────────────────────┐
    │ SECONDARY_RANGE_NAME │ IP_CIDR_RANGE │            STATUS           │
    ├──────────────────────┼───────────────┼─────────────────────────────┤
    │ tier-1-pods          │ 10.4.0.0/14   │ usable for pods or services │
    │ tier-1-services      │ 10.0.32.0/20  │ usable for pods or services │
    └──────────────────────┴───────────────┴─────────────────────────────┘
    
  2. créer un cluster GKE ; Les exemples suivants montrent comment utiliser gcloud CLI pour créer un cluster Autopilot ou standard configuré pour un VPC partagé. Les exemples suivants utilisent les noms de réseau, de sous-réseau et de plage de la section Créer un réseau et deux sous-réseaux.

    Autopilot

    gcloud container clusters create-auto tier-1-cluster \
       --project=SERVICE_PROJECT_ID \
       --region=COMPUTE_REGION \
       --network=projects/HOST_PROJECT_ID/global/networks/NETWORK_NAME \
       --subnetwork=projects/HOST_PROJECT_ID/regions/COMPUTE_REGION/subnetworks/SUBNET_NAME \
       --cluster-secondary-range-name=tier-1-pods \
       --services-secondary-range-name=tier-1-services
    

    Standard

    gcloud container clusters create tier-1-cluster \
       --project=SERVICE_PROJECT_ID \
       --zone=COMPUTE_REGION \
       --enable-ip-alias \
       --network=projects/HOST_PROJECT_ID/global/networks/NETWORK_NAME \
       --subnetwork=projects/HOST_PROJECT_ID/regions/COMPUTE_REGION/subnetworks/SUBNET_NAME \
       --cluster-secondary-range-name=tier-1-pods \
       --services-secondary-range-name=tier-1-services \
       --addons=GcpFilestoreCsiDriver
    
  3. Créez des règles de pare-feu pour autoriser la communication entre les nœuds, les pods et les services de votre cluster. L'exemple suivant montre comment créer une règle Filestore nommée my-shared-net-rule-2.

    gcloud compute firewall-rules create my-shared-net-rule-2 \
       --project HOST_PROJECT_ID \
       --network=shared-net \
       --allow=tcp,udp \
       --direction=INGRESS \
       --source-ranges=10.0.4.0/22,10.4.0.0/14,10.0.32.0/20
    

    Dans l'exemple, les valeurs IP des plages sources proviennent de l'étape précédente où vous avez vérifié les sous-réseaux et les plages secondaires utilisables.

Créer une classe StorageClass lorsque vous utilisez le pilote CSI Filestore avec un VPC partagé

L'exemple suivant montre comment créer une classe StorageClass lorsque vous utilisez le pilote CSI Filestore avec un VPC partagé :

cat <<EOF | kubectl apply -f -

apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: filestore-sharedvpc-example
provisioner: filestore.csi.storage.gke.io
parameters:
  network: "projects/HOST_PROJECT_ID/global/networks/SHARED_VPC_NAME"
  connect-mode: PRIVATE_SERVICE_ACCESS
  reserved-ip-range: RESERVED_IP_RANGE_NAME
allowVolumeExpansion: true

EOF

Remplacez les éléments suivants :

  • HOST_PROJECT_ID : ID ou nom du projet hôte du réseau VPC partagé.
  • SHARED_VPC_NAME : nom du réseau VPC partagé que vous avez créé précédemment
  • RESERVED_IP_RANGE_NAME : nom de la plage d'adresses IP réservée spécifique dans laquelle provisionner l'instance Filestore. Ce champ est facultatif. Si une plage d'adresses IP réservée est spécifiée, il doit s'agir d'une plage d'adresses nommée au lieu d'une valeur CIDR directe.

Si vous souhaitez provisionner un volume sauvegardé par plusieurs partages Filestore sur des clusters GKE exécutant la version 1.23 ou ultérieure, consultez la page Utiliser plusieurs partages Filestore sur GKE.

Étapes suivantes