Tutoriel 4 : créer un service avec un volume de stockage en bloc monté

Introduction

Ce tutoriel fournit des instructions étape par étape pour vous permettre de créer un service simple qui utilise un volume de stockage en bloc. Vous prenez également un instantané du volume de stockage et étudiez les possibilités d’utilisation de l’instantané.

Créez un service

  1. Suivez Tutoriel 1 pour télécharger le code de l’exemple de service, créer une image Docker et la télécharger dans un référentiel de votre compte Snowflake.

  2. Vérifiez que vous avez l’image my_echo_service_image dans le référentiel.

    SHOW IMAGES IN IMAGE REPOSITORY tutorial_db.data_schema.tutorial_repository;
    
    Copy
  3. Créez un service. Lorsque le service s’exécute, le conteneur aura un stockage de volume de bloc 10 Gi monté.

    CREATE SERVICE my_service
     IN COMPUTE POOL tutorial_compute_pool
     FROM SPECIFICATION $$
    spec:
      containers:
      - name: echo
        image: /tutorial_db/data_schema/tutorial_repository/my_echo_service_image:latest
        volumeMounts:
        - name: block-vol1
          mountPath: /opt/block/path
        readinessProbe:
          port: 8080
          path: /healthcheck
      endpoints:
      - name: echoendpoint
        port: 8080
        public: true
      volumes:
      - name: block-vol1
        source: block
        size: 10Gi
    $$;
    
    Copy

    Note

    Ce tutoriel montre uniquement comment créer un service avec un volume de stockage en bloc. Le code de service (Examen du code du tutoriel 1) n’utilise pas le volume.

  4. Vérifiez le statut du service :

    SELECT SYSTEM$GET_SERVICE_STATUS('my_service');
    
    Copy

Prenez un instantané

  1. Utilisez la commande CREATE SNAPSHOT pour prendre un instantané du volume de stockage en bloc attaché à l’instance de service 0. Vous spécifiez l’instance 0 parce que vous n’exécutez qu’une seule instance de service.

    Utilisez des guillemets doubles autour du nom dans le paramètre VOLUME afin de respecter la casse du nom dans les spécificiations du service.

    CREATE SNAPSHOT my_snapshot
      FROM SERVICE my_service
      VOLUME "block-vol1"
      INSTANCE 0
      COMMENT='new snapshot';
    
    Copy
  2. Examiner l’instantané

    • Listez les instantanés à l’aide de SHOW SNAPSHOTS.

      SHOW SNAPSHOTS;
      
      Copy
    • Récupérez les informations relatives à un instantané spécifique à l’aide de DESCRIBE SNAPSHOT.

      DESC SNAPSHOT my_snapshot;
      
      Copy
  3. Exécutez la commande ALTER SNAPSHOT pour modifier l’instantané.

    ALTER SNAPSHOT my_snapshot SET comment='updated comment';
    
    Copy

Utiliser l’instantané

  1. Vous pouvez utiliser l’instantané de deux manières :

    • Utiliser un instantané pour créer un nouveau service : Lors de la création d’un nouveau service, vous pouvez utiliser l’instantané comme contenu initial d’un volume de stockage en bloc, comme indiqué. La commande CREATE SERVICE suivante crée un autre service (new_service) avec un volume de stockage en bloc 50 Gi. La spécification en ligne inclut le nom de l’instantané à utiliser pour initialiser le volume de stockage en bloc.

      CREATE SERVICE new_service
        IN COMPUTE POOL tutorial_compute_pool
        FROM SPECIFICATION $$
      spec:
        containers:
        - name: echo
          image: /tutorial_db/data_schema/tutorial_repository/my_echo_service_image:tutorial
          volumeMounts:
          - name: fromsnapshotvol
            mountPath: /opt/block/path
          readinessProbe:
            port: 8080
            path: /healthcheck
        endpoints:
        - name: echoendpoint
          port: 8080
          public: true
        volumes:
        - name: fromsnapshotvol
          source: block
          size: 50Gi
          blockConfig:
            initialContents:
              fromSnapshot: MY_SNAPSHOT
      $$
      min_instances=3
      max_instances=3;
      
      Copy
    • Restaurez un instantané sur un volume de stockage d’un service existant : Cet exemple redémarre le premier service (my_service) que vous avez créé en remplaçant le contenu du volume de blocs d’origine par le contenu de l’instantané.

      1. Suspendez le service afin de pouvoir restaurer l’instantané sur le volume de stockage en bloc.

        ALTER SERVICE my_service SUSPEND;
        
        Copy
      2. Restaurez l’instantané sur le volume de stockage en bloc monté sur le conteneur de l’instance new_service. Vous n’exécutez qu’une seule instance du service Echo, vous spécifiez donc l’instance ID 0.

        ALTER SERVICE my_service RESTORE     -- this will auto RESUME the service.
          VOLUME "block-vol1"
          INSTANCES 0
          FROM SNAPSHOT my_snapshot;
        
        Copy
      3. Vérifiez le statut du service.

        call SYSTEM$GET_SERVICE_STATUS('my_service');
        
        Copy
  2. Utilisez la commande DROP SNAPSHOT pour supprimer l’instantané.

    DROP SNAPSHOT my_snapshot;
    
    Copy

Nettoyage

Supprimez les ressources que vous avez créées.

  1. Supprimez les deux services que vous avez créés :

DROP SERVICE my_service;
DROP SERVICE new_service;
Copy
  1. Suivez les étapes du tutoriel 1 pour nettoyer les autres ressources créées dans le tutoriel 1.

Quelle est la prochaine étape ?

Maintenant que vous avez terminé ce tutoriel, vous pouvez revenir à Tutoriels avancés pour explorer d’autres sujets.