자습서 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을 지정합니다.

    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. 스냅샷은 두 가지 방법으로 사용할 수 있습니다.

    • 스냅샷을 사용하여 새로운 서비스 만들기: 새로운 서비스를 만들 때 표시된 대로 스냅샷을 블록 저장소 볼륨의 초기 콘텐츠로 사용할 수 있습니다. 다음 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 Service 인스턴스를 하나만 실행하고 있으므로 인스턴스 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. 만든 두 서비스를 삭제합니다.

DROP SERVICE my_service;
DROP SERVICE new_service;
Copy
  1. 자습서 1 단계에 따라 자습서 1에서 만든 다른 리소스를 정리합니다.

다음에는 무엇을 해야 합니까?

이제 이 자습서를 마쳤으므로 고급 자습서 로 돌아가서 다른 항목을 살펴볼 수 있습니다.