チュートリアル4: ブロックストレージボリュームがマウントされたサービスを作成する

概要

このチュートリアルでは、ブロックストレージボリュームを使用するシンプルなサービスを作成するためのステップバイステップの手順を説明します。また、ストレージボリュームのスナップショットを取得し、スナップショットの使用方法を検討します。

サービスの作成

  1. チュートリアル1 に従って、サンプルサービスのコードをダウンロードし、Dockerイメージを作成し、Snowflakeアカウントのリポジトリにアップロードします。

  2. リポジトリに my_echo_service_image イメージがあることを確認します。

    SHOW IMAGES IN IMAGE REPOSITORY tutorial_db.data_schema.tutorial_repository;
    
    Copy
  3. サービスを作成します。サービスが実行されると、コンテナには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

    注釈

    このチュートリアルでは、ブロックストレージボリュームでサービスを作成する方法のみを説明します。サービスコード(チュートリアル1コードの検証)はボリュームを使用しません。

  4. サービスステータスの確認:

    SELECT SYSTEM$GET_SERVICE_STATUS('my_service');
    
    Copy

スナップショットを取る

  1. CREATE SNAPSHOT コマンドを使用して、サービスインスタンス0にアタッチされているブロックストレージボリュームのスナップショットを取ります。インスタンス0を指定したのは、1つのサービスインスタンスしか実行していないからです。

    VOLUME パラメーターの名前は、サービス仕様の名前の大文字と小文字を一致させるために、二重引用符で囲んでください。

    CREATE SNAPSHOT my_snapshot
      FROM SERVICE my_service
      VOLUME "block-vol1"
      INSTANCE 0
      COMMENT='new snapshot';
    
    Copy
  2. スナップショットを確認する

    • SHOW SNAPSHOTS を使用して、スナップショットを一覧表示します。

      SHOW SNAPSHOTS;
      
      Copy
    • DESCRIBE SNAPSHOT を使用して、特定のスナップショットの情報を取得します。

      DESC SNAPSHOT my_snapshot;
      
      Copy
  3. ALTER SNAPSHOT コマンドを実行して、スナップショットを変更します。

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

スナップショットを使用する

  1. スナップショットは次の2つの方法で使用できます。

    • 新しいサービスを作成するためにスナップショットを使用する: 新しいサービスの作成時に、スナップショットをブロックストレージボリュームの初期コンテンツとして使用することができます。以下の CREATE SERVICE コマンドは、50 Giブロックストレージボリュームを持つ別のサービス(new_service)を作成します。インライン仕様には、ブロックストレージボリュームの初期化に使用するスナップショット名が含まれます。

      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
    • 既存サービスのストレージボリューム上のスナップショットを復元する: この例では、元のブロックボリュームのコンテンツをスナップショットのコンテンツに置き換えることで、最初に作成したサービス(my_service)を再起動します。

      1. サービスを一時停止して、ブロックストレージボリューム上のスナップショットを復元できるようにします。

        ALTER SERVICE my_service SUSPEND;
        
        Copy
      2. new_serviceインスタンスのコンテナにマウントされたブロックストレージボリューム上のスナップショットを復元します。Echoサービスのインスタンスを1つだけ実行しているので、インスタンス ID 0を指定します。

        ALTER SERVICE my_service RESTORE     -- this will auto RESUME the service.
          VOLUME "block-vol1"
          INSTANCES 0
          FROM SNAPSHOT my_snapshot;
        
        Copy
      3. サービスステータスを確認します。

        call SYSTEM$GET_SERVICE_STATUS('my_service');
        
        Copy
  2. DROP SNAPSHOT コマンドを使用して、スナップショットをドロップします。

    DROP SNAPSHOT my_snapshot;
    
    Copy

クリーンアップする

作成したリソースを削除します。

  1. 作成した2つのサービスをドロップします。

DROP SERVICE my_service;
DROP SERVICE new_service;
Copy
  1. チュートリアル1 の手順に従って、チュートリアル1で作成した他のリソースをクリーンアップしてください。

次の内容

このチュートリアルを完了したため、 上級チュートリアル に戻って他のトピックを調べることができます。