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¶
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.
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;
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 $$;
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.
Vérifiez le statut du service :
SELECT SYSTEM$GET_SERVICE_STATUS('my_service');
Prenez un instantané¶
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';
Examiner l’instantané
Listez les instantanés à l’aide de SHOW SNAPSHOTS.
SHOW SNAPSHOTS;
Récupérez les informations relatives à un instantané spécifique à l’aide de DESCRIBE SNAPSHOT.
DESC SNAPSHOT my_snapshot;
Exécutez la commande ALTER SNAPSHOT pour modifier l’instantané.
ALTER SNAPSHOT my_snapshot SET comment='updated comment';
Utiliser l’instantané¶
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;
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é.Suspendez le service afin de pouvoir restaurer l’instantané sur le volume de stockage en bloc.
ALTER SERVICE my_service SUSPEND;
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;
Vérifiez le statut du service.
call SYSTEM$GET_SERVICE_STATUS('my_service');
Utilisez la commande DROP SNAPSHOT pour supprimer l’instantané.
DROP SNAPSHOT my_snapshot;
Nettoyage¶
Supprimez les ressources que vous avez créées.
Supprimez les deux services que vous avez créés :
DROP SERVICE my_service; DROP SERVICE new_service;
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.