Tutorial 4: Crie um serviço com um volume de armazenamento em bloco montado

Introdução

Este tutorial fornece instruções passo a passo para você criar um serviço simples que usa um volume de armazenamento em bloco. Você também tira um instantâneo do volume de armazenamento e explora maneiras de usá-lo.

Criação de um serviço

  1. Siga o Tutorial 1 para baixar o código do serviço de exemplo, crie uma imagem do Docker e carregue-a em um repositório na sua conta Snowflake.

  2. Verifique se você tem a imagem my_echo_service_image no repositório.

    SHOW IMAGES IN IMAGE REPOSITORY tutorial_db.data_schema.tutorial_repository;
    
    Copy
  3. Crie um serviço. Quando o serviço for executado, o contêiner terá um armazenamento de volume em bloco de 10 Gi.

    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

    Nota

    Este tutorial mostra apenas como criar um serviço com um volume de armazenamento em bloco. O código de serviço (Análise do código do tutorial 1) não usa o volume.

  4. Verifique o status do serviço:

    SELECT SYSTEM$GET_SERVICE_STATUS('my_service');
    
    Copy

Tire um instantâneo

  1. Use o comando CREATE SNAPSHOT para tirar um instantâneo do volume de armazenamento em bloco anexado à instância de serviço 0. Você especifica a instância 0 porque está executando apenas uma instância de serviço.

    Use aspas duplas em torno do nome no parâmetro VOLUME para corresponder à caixa do nome na especificação do serviço.

    CREATE SNAPSHOT my_snapshot
      FROM SERVICE my_service
      VOLUME "block-vol1"
      INSTANCE 0
      COMMENT='new snapshot';
    
    Copy
  2. Revise o instantâneo

    • Liste instantâneos usando SHOW SNAPSHOTS.

      SHOW SNAPSHOTS;
      
      Copy
    • Recupere informações de um instantâneo específico usando DESCRIBE SNAPSHOT.

      DESC SNAPSHOT my_snapshot;
      
      Copy
  3. Execute o comando ALTER SNAPSHOT para modificar o instantâneo.

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

Use o instantâneo

  1. Você pode usar o instantâneo de duas maneiras:

    • Use o instantâneo para criar um novo serviço: ao criar um novo serviço, você pode usar o instantâneo como o conteúdo inicial para um volume de armazenamento em bloco, conforme mostrado. O seguinte comando CREATE SERVICE cria outro serviço (new_service) com um volume de armazenamento em bloco 50 Gi. A especificação inline inclui o nome do instantâneo a ser usado para inicializar o volume de armazenamento em bloco.

      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
    • Restaure um instantâneo em um volume de armazenamento de um serviço existente: este exemplo reinicia o primeiro serviço (my_service) que você criou substituindo o conteúdo do volume do bloco original pelo conteúdo do instantâneo.

      1. Suspenda o serviço para que você possa restaurar o instantâneo no volume de armazenamento em bloco.

        ALTER SERVICE my_service SUSPEND;
        
        Copy
      2. Restaure o instantâneo no volume de armazenamento em bloco montado no contêiner da instância new_service. Você está executando apenas uma instância do Echo Service, então você especifica o ID da instância como 0.

        ALTER SERVICE my_service RESTORE     -- this will auto RESUME the service.
          VOLUME "block-vol1"
          INSTANCES 0
          FROM SNAPSHOT my_snapshot;
        
        Copy
      3. Verifique o status do serviço.

        call SYSTEM$GET_SERVICE_STATUS('my_service');
        
        Copy
  2. Use o comando DROP SNAPSHOT para descartar o instantâneo.

    DROP SNAPSHOT my_snapshot;
    
    Copy

Limpeza

Remova os recursos que você criou.

  1. Descarte os dois serviços que você criou:

DROP SERVICE my_service;
DROP SERVICE new_service;
Copy
  1. Siga as etapas do Tutorial 1 para limpar outros recursos criados no tutorial 1.

Qual é o próximo passo?

Agora que concluiu este tutorial, você pode retornar aos tutoriais avançados para explorar outros tópicos.