cloud-barista / cb-spider

CB-Spider offers a unified view and interface for multi-cloud management.
https://github.com/cloud-barista/cb-spider/wiki
Apache License 2.0
32 stars 48 forks source link

[+MyImage] VM Snapshot, MyImage and Driver API #719

Closed powerkimhub closed 1 year ago

powerkimhub commented 2 years ago
powerkimhub commented 2 years ago
MZC-CSC commented 2 years ago

@powerkimhub 질문있습니다.

aws에서는 iid.nameId 를 "Name" 이라는 Tag로 지정하여 사용하고 있습니다. iid.systemId 는 해당 ID(vm의 경우 instanceId 등)를 사용합니다.

  1. SnapshotVM 에서 받는 Parameter가 vm의 IID만 받고 있는데 image의 이름은 해당 instance의 이름을 그대로 하면 되나요? 그렇다면 iid.NameId로 하면될 지, iid.SystemId로 하면 될지.

  2. MyImageInfo 에서 SourceVM 정보가 있는데 AWS는 source vm을 따로 관리하고 있지 않습니다. 필요하다면 Tag로 정의해서 사용하는 방법이 있는데 이경우 다른 Tag들과 구분 지을 수 있는 Tag명을 정의해야 하는데 우선 AWS는 prifix(CB_) + parameter(SOURCE_VM)명으로 지으려고 합니다. 예) SourceVM을 Tag로 지정하는 경우 Key : "CB_SOURCE_VM", Value : "인스턴스(IID.SystemId)"

혹시 공통으로 사용될 여지가 있거나 다른의견이 있으면 알려주시기 바랍니다.

powerkimhub commented 2 years ago

@MZC-CSC ( @inno-cloudbarista )

[1. SnapshotVM() 관련]

[2. SourceVM 정보 제공 관련]

MZC-CSC commented 2 years ago

@powerkimhub

질문있습니다.

  1. AWS의 myImage를 조회하려면 ownerID 를 알아야 하는데 ownerID를 받지 않고 있습니다.

API는 웹과 달리 로그인한 유저가 특정되지 않기 때문에 조회할 user의 ID 도 필요해 보입니다. MyImageInfo 에 ownerId가 추가 될 수 있을까요? 아니면 "self"로만 하면 권한을 가진 모든 snapshot이 나오는데... 이 결과면 될지요

The list of snapshots returned can be filtered by specifying snapshot IDs, snapshot owners, or AWS accounts with create volume permissions. If no options are specified, Amazon EC2 returns all snapshots for which you have create volume permissions.

https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_DescribeSnapshots.html

  1. Get이나 List 에서 반환되는 Info 에 IID가 여러개 있는경우 nameID를 return하기 위해서는 다시 해당 handler의 get 을 호출해야하는 불합리가 있습니다. spider에서 return 전에 채워줄 방안이 있나요? 아니면 필요시 driver의 handler안에서 채우는 방법이라도 있을까요?
powerkimhub commented 2 years ago

@MZC-CSC

MZC-CSC commented 2 years ago

re : 해당 API 에서도 보듯이 특정 유저를 지정합니다. 현재 connection에는 특정 유저가 아니라 API의 access key를 가진 유저라서 aws_access_key_id = 1 user 인지 aws_access_key_id = multi user 도 가능할 지 유저랑 1:1로 되는 것으로 보면 될까요?

input := &iam.GetUserInput{ UserName: aws.String("Bob"), }

MZC-CSC commented 2 years ago

추가질문입니다.

  1. MyImage라는 것이 Instance 에서 image를 추출하는 기능이 맞나요?

AWS 에서는 instance에서 ami 를 추출하는 createImage[1]가 있고 instance의 volume으로 snapshot을 생성하는 createSnapshot[2] 가 있습니다. Spider의 MyImageHandler.snapshotVm 이 [1]인지 [2]인지가 헤깔려서 문의드립니다.

  1. Spider의 VMHandler에서 Instance 생성시 DataDiskIID를 인자로 받아 사용하도록 추가되었는데 DISK관련 문의의 답변으로 "현재의 Spider에서는 Disk(volume) Snapshot은 제공하지 않으며, VM Snaphot만 제공하고 있습니다." 이 설명대로라면 AWS의 경우 instance 생성시점에는 disk attach를 할 수 없습니다.

instance 생성 후 attachDisk(attachVolume)으로 추가만 가능하게 하면 되는지요

MZC-CSC commented 2 years ago

제가 이해한 게 맞는지 확인바랍니다.

AWS에서

  1. myImage는 AMI 를 뜻한다. aws에서도 instance의 snapshot을 생성하는 기능이 있으나(createSnapshot) spider의 myImage는 아니다. spider의 snapshotVm = aws의 createImage

  2. aws 의 vm 생성시에 추가가능한 volume으로 snapshot을 사용할 수 있으나, spider에서는 사용하지 않는다.

  3. aws 의 vm 생성시 볼륨추가는 크기, 유형을 선택하여 추가할 수 있으나 spider는 iid를 인자로 넘겨주는 방식이므로 해당 방식은 사용하지 않는다.

  4. vmHandler.startVM의 vmReqInfo의 diskIID 는 diskHandler를 통해 먼저 생성한 diskIID로 disk를 먼저 생성 -> vm 생성 -> attachDisk 순으로 작업한다. (aws 특성상 instance의 생성시점의 parameter에 포함되지 않는다.)

참고. GCP는 생성시점에 attach 가능

powerkimhub commented 2 years ago

@MZC-CSC

  1. 네, 맞습니다. . 참고: https://drive.google.com/file/d/1aRKJzP5_FFELIqOniOfp47HKCTWb65sQ/view 에서 AWS 파트

  2. 제가 정확히 이해를 못했지만, Spider에서 사용하지 않는 것은 맞는 것 같습니다. . 관련된 부연 설명을 드리면 다음과 같습니다.

    . Disk 관련
    . Disk는 Root Disk type과 Data Disk type이 존재
      . Root Disk의 생성 시점: VM 생성시 자동 생성되고, DiskHandler로 정보 제공
      . Data Disk의 생성 시점: DiskHandler API를 사용해서 사용자가 생성 요청
      . VM과의 관계
        . StartVM 시에
          . Root Disk: Type과 Size는 설정하지 않으면 default 또는 CSP가 제공하는 type과 size에 맞게 설정 가능
          . Data Disk: DiskHandler를 통해서 이미 생성된 Disk들을 IID Array로 여러 개 설정
        . VM 운영 중에: DiskHandler를 통해서 Attach/Detach
    . Snapshot 관련
    . 일반적으로 다음과 같이 Disk Snapshot과 VM(Instance or Machine 등) Snapshot을 제공
      . Disk Snapshot: Disk의 내용만 복제, 복제된 Snapshot의 명칭 및 활용 방법이 CSP마다 다름
        => 현재 Spider에서는 제외, VM Snapshot만 제공
      . VM Snapshot: VM에 설치된 SW와 Root Filesystem(OS file, OS status, ...) 등을 포함한 VM 현재 상태 복제
        . 이때, 대상 VM에 마운트된 Data Disk까지 복제할지 뺄지 선택 가능 여부가 CSP마다 다를 수 있음
        . => Spider에서는 기본적으로 Data Disk까지 복제
               (복제를 원하지 않을 경우 사용자가 Snapshot 실행 전에 OS umount 및 DiskHandler.Detach 필요)
    . VM Snapshot 결과로 생성되는 복제물은 VM을 생성할 수 있는 Image 형식이며, 
      . Public 이미지와 대비되는 의미로 MyImage라 정의
    . VM과의 관계: StartVM 시에 Public Image 대신 MyImage의 IID를 선택 가능
      . MyImage로 생성된 VM은 원본 VM과 설치된 SW, OS 상태(CSP마다 정도의 차이가 있음) 및 Data-Disk에 포함된 데이터 까지 동일
  3. 네, 맞습니다. . 상세하게는 AWS Driver.StartVM() 함수 내에서 반환 전에 . Attach까지 완료 후 반환해주셔야 합니다.

powerkimhub commented 2 years ago

@MZC-CSC

추가질문입니다.

  1. MyImage라는 것이 Instance 에서 image를 추출하는 기능이 맞나요?

=> createImage[1] 가 맞습니다.

  1. Spider의 VMHandler에서 Instance 생성시 DataDiskIID를 인자로 받아 사용하도록 추가되었는데

=> 바로 위 답글 참고해주시기 바랍니다.

MZC-CSC commented 2 years ago

interface의 function이름이 SnapshotVm 이라고 해서 Image의 AMI 대신 Elastic Block Store의 snapshot에서 인스턴스의 다중스냅샷을 사용해야 하는 줄 착각했습니다. Disk와 Image 모두 이제 정리가 되었습니다.

답변 감사합니다.

powerkimhub commented 2 years ago

@MZC-CSC

re : 해당 API 에서도 보듯이 특정 유저를 지정합니다. 현재 connection에는 특정 유저가 아니라 API의 access key를 가진 유저라서 aws_access_key_id = 1 user 인지 aws_access_key_id = multi user 도 가능할 지 유저랑 1:1로 되는 것으로 보면 될까요?

input := &iam.GetUserInput{ UserName: aws.String("Bob"), }

powerkimhub commented 2 years ago

@MZC-CSC

MZC-CSC commented 2 years ago

[AWS] MyImage 관련하여 ownerId에 userId[1], "self"[2], "all"[3] 설정이 가능합니다.

ImageHandler의 경우 ownerId에 "amazone" 으로 설정하여 owner가 amazone인 모든 vmImage를 사용하고 MyImageHandler의 경우 ownerId에 "self"로 설정하여 자신이 생성한 vmImage를 사용합니다.

cb-spider의 유저기준으로 위에서 알려주신 IAM을 통해서 가져오는 유저 정보[1]를 이용하여 조회한 결과와 ownerId= "self"[2]로 조회한 결과는 동일한 것으로 보입니다.

powerkimhub commented 2 years ago

@MZC-CSC

MZC-CSC commented 2 years ago

ImageType 관련 질문있습니다.

aws의 경우 내가 만든 image의 공개 설정이 있습니다.(public : boolean ) 기본 private 이나 public으로 설정을 하면 public Image가 됩니다.

image 자체가 public 인지 private인지 구분은 하고 있으나 public으로 된 Image는 ImageHandler, MyImageHandler 두군데에서 모두 조회가 됩니다. . 동일한 DescribeImages() 를 사용하며 MyImage인 경우에는 ownerID ="self" 로 자신의 것만 필터링합니다.

startVM : 사용가능한 imageId 라면 public/private 구분없이 imageId 만으로 instance 생성 가능합니다. getVM : 사용가능한 imageId 라면 imageHandler/myImageHandler 구분없이 imageIID set 가능합니다. 단, 내가 만들었으나 public 으로 설정한 image의 경우 ImageType을 Set하기 위해서는
1) IAM 계정정보를 조회해서 image의 ownerid 와 비교하거나 2) 조회 된 image를 myImage인지 1번 더 비교하는 작업이 필요합니다.

imageType이 public인지 private인지만 구분해도 되지 않을지 검토바랍니다.

powerkimhub commented 2 years ago

@MZC-CSC

MZC-CSC commented 2 years ago

Image 삭제관련 질문있습니다. Alibaba 의 경우 삭제 parameter로 force가 있습니다. default=false로 해당 Image가 특정 instance에서 사용중이거나 다른 user에게 공유중일때 삭제가 불가하며 forece=true 면 이미지 사용,공유 여부와 상관없이 삭제합니다.

해당 옵션을 true로 해야할까요?


Specifies whether to forcibly delete the custom image. Valid values:

true: forcibly deletes the custom image, regardless of whether the image is being used by other instances.
false: verifies that the image is not being used by other instances and then deletes the image.

Default value: false.

https://www.alibabacloud.com/help/en/elastic-compute-service/latest/deleteimage

powerkimhub commented 2 years ago

@MZC-CSC (@inno-cloudbarista @innodreamer )

powerkimhub commented 2 years ago
innodreamer commented 2 years ago

@powerkimhub MyImage API wiki에서 SnapshotVM() interface 변경사항이 update되어있지 않아 update했습니다. 참고하십시오.

MyImage API wiki) https://github.com/cloud-barista/cb-spider/wiki/MyImage-and-Driver-API

MZC-CSC commented 2 years ago

@powerkimhub [Tencent] Tencent의 경우 Image를 생성하면 System Disk(Root Disk)에 대해서만 Image가 생성이 됩니다. (현재 PR된 버전) Data Disk에 대해서는 공식 문서에서 아래와 같이 말하고 있습니다. (https://intl.cloud.tencent.com/document/product/213/4942)

If you need to keep the data on the data disk of the original instance when launching a new instance, you can first take a snapshot of the data disk, and then use this data disk snapshot to create a new CBS data disk.

위의 문장대로라면 MyImage 생성 시 Data Disk에 대한 Snapshot 생성 > 해당 Snapshot ID를 MyImageInfo에 기록 > MyImage를 이용하여 Instance 생성 시 Data Disk Snapshot을 이용하여 Disk 생성 > Attach 와 같은 과정을 거쳐야 할 것으로 보이는데 이 과정이 의도하신 바와 일치하는지요?

powerkimhub commented 2 years ago

@MZC-CSC

[Tencent] VM Snapshot(Tencent: Create Image)과 Data Disk



inno-cloudbarista commented 2 years ago

Azure Snapshot 공유 사항 및 이슈 @powerkimhub

콘솔의 Capture 기능에 대한 설명: VM 상세창 상단의 Capture 기능 사용시, 선택한 기능에 따라 다양한 리소스로 캡처가 시행됩니다.

  1. Share image to Azure compute gallery : [V]Yes, share it to a gallery as a VM image version.

    • 갤러리 이미지라는 리소스로 생성됩니다.
    • 갤러리 이미지란, 퍼블릭으로 공유되는 이미지와 같은 리소스로, 갤러리=>갤러리이미지=>갤러리버전으로 이미지를 관리하는 리소스입니다.(스냅샷 기능시, Private 갤러리로 외부로 공유되진 않습니다.)
  2. Share image to Azure compute gallery : [V]No, capture only a managed image.

    • 이미지라는 리소스로 생성됩니다.
    • 하나의 이미지로, 갤러리 이미지와 달리 캡처되는 순간의 이미지를 보관합니다.

위 선택에서 이미지라는 리소스를 사용하여, 스냅샷기능을 구현하려 했으나, 이미지 리소스를 생성하기 위해서는 Generalized라는 과정을 거쳐야합니다. https://docs.microsoft.com/en-us/azure/virtual-machines/capture-image-portal?source=recommendations#capture-a-vm-in-the-portal 5번 항목 Generalized는 OS Profile, Secret등의 VM의 정보를 제거하는 작업입니다.

Generalized를 거친 VM은 다시 시작될수 없습니다.

위의 이유로, 1번의 갤러리 이미지를 활용하여, 스냅샷을 구현하려 합니다.

  1. Share image to Azure compute gallery : [V]Yes, share it to a gallery as a VM image version.

    1-1. Operating system state: [V]Generalized: VMs created from this image require hostname, admin user, and other VM related setup to be completed on first boot

    • 위 선택사항도 Generalized과정을 거치며, VM은 사용이 불가합니다.

    1-2. Operating system state: [V]Specialized: VMs created from this image are completely configured and do not require parameters such as hostname and admin user/password

    • 해당 선택사항 Generalized가 아닌 Specialized작업으로 VM에 영향이 가지 않은 상태로, 갤러리 이미지를 생성할 수 있습니다.

Azure의 Snapshot시 사용 리소스 Gallery Image이고, Specialized 과정을 거쳐 사용하려합니다.

이슈1. 갤러리의 생성시 이름에 관한 문제 갤러리 => 갤러리 이미지 => 갤러리 이미지 버전 3가지의 이름을 구성해야합니다. 현재 기능 동작 테스트를 위한 코드에는 갤러리는 DefaultGallery로 1개만을 이용, 갤러리 이미지의 이름을 스냅샷과 같은 단위로 활용중. 버전은 1.0.0으로 고정

ex: vm-snapshot1 생성 => DefaultGallery(cbspider) 내의 vm-snapshot1을 생성, vm-snapshot1의 1.0.0을 생성 vm-snapshot2 생성 => DefaultGallery(cbspider) 내의 vm-snapshot2을 생성, vm-snapshot2의 1.0.0을 생성

갤러리 이미지 리소스의 이름은 vm-snapshot1이지만, 활용하는 내부 코드에선 DefaultGallery내부의 vm-snapshot1의 1.0.0을 사용하는 식으로 이용해야 할 것 같습니다.

이슈2. 스냅샷으로 생성되는 DiskType의 단일화 스냅샷으로 생성시, VM의 OSDisk, DataDisk 등의 디스크 타입 1개만 지정할 수 있습니다.

ex: vm: OSDisk(PrimiumSSD), DataDisk1(StandardSSD), DataDisk2(StandardHHD) 가 존재할 경우 => snapshot => vm 생성시 Disk의 타입은 하나만 지정할 수 있습니다.

이슈3. OSProfile의 변경 불가. OSProfile내의 username, computername, ssh키 등의 값이 입력이 불가합니다.(Specialized방식으로 생성된 갤러리 이미지의 경우 OSProfile을 넘겨주는것을 막고 있습니다.) 스냅샷의 기능 상 위 사항이 이슈인지, 당연한 사항인지 애매해서 질문드립니다.

powerkimhub commented 2 years ago

@inno-cloudbarista @MZC-CSC @innodreamer


1. VM Snapshot 복제 대상은 무엇인가?

2. Snapshot 원본 VM이 Snapshot 후에도 사용 가능한가?

3. MyImage로 새로운 VM을 반복 생성 가능한가?

inno-cloudbarista commented 2 years ago

@powerkimhub [Azure]

  1. VM Snapshot 복제 대상은 무엇인가? Azure의 경우 참고 자료와 다른점이 있어, 추가합니다. Test 결과 history 기록도 보존됩니다. [Azure: Capture 기능, managed image 사용] nginx: O R-Disk file: O D-Disk file: O Command History: O

  2. Snapshot 원본 VM이 Snapshot 후에도 사용 가능한가? snapshot 실행 후에는 대상 VM은 사용 불가

  3. MyImage로 새로운 VM을 반복 생성 가능한가? (1) VM 생성 시 Public Image처럼 Image만 선택하고 나머지(Spec, KeyPair 등)는 선택 가능한가? => 선택가능 (2) data-disk가 포함된 VMIamage로 VM 생성시 마다 snapshot 데이터를 포함한 새로운 data-disk로 attach 되는가? => snapshot 데이터를 포함한 새로운 data-disk로 attach(data-disk id 확인)

[Openstack]

  1. VM Snapshot 복제 대상은 무엇인가? [Openstack: Snapshot 기능] nginx: O R-Disk file: O D-Disk file: O Command History: X

  2. Snapshot 원본 VM이 Snapshot 후에도 사용 가능한가?

snapshot시 vm에 아무 영향없음(stop되지 않음)

  1. MyImage로 새로운 VM을 반복 생성 가능한가? (1) VM 생성 시 Public Image처럼 Image만 선택하고 나머지(Spec, KeyPair 등)는 선택 가능한가? => 선택가능 (2) data-disk가 포함된 VMIamage로 VM 생성시 마다 snapshot 데이터를 포함한 새로운 data-disk로 attach 되는가? => snapshot 데이터를 포함한 새로운 data-disk로 attach(data-disk id 확인) => snapshot 생성시, volume의 snapshot도 생성되지만, handler에서 제어하는 부분이 아닌, openstack의 기능

IBM-VPC, Cloudit도 조사하는대로 추가하도록 하겠습니다.

inno-cloudbarista commented 2 years ago

IBM-VPC, Cloudit에 대한 조사가 완료되어 업데이트 드립니다.

[IBM-VPC]

  1. VM Snapshot 복제 대상은 무엇인가? [IBM-VPC: Snapshot 기능 사용] nginx: O R-Disk file: O D-Disk file: X Command History: O

  2. Snapshot 원본 VM이 Snapshot 후에도 사용 가능한가? => 사용 가능합니다.

  3. MyImage로 새로운 VM을 반복 생성 가능한가? (1) VM 생성 시 Public Image처럼 Image만 선택하고 나머지(Spec, KeyPair 등)는 선택 가능한가? => 선택 가능합니다. (2) data-disk가 포함된 VMIamage로 VM 생성시 마다 snapshot 데이터를 포함한 새로운 data-disk로 attach 되는가? => 새로운 data-disk가 생성되어 attach 됩니다.

[Cloudit]

  1. VM Snapshot 복제 대상은 무엇인가? [Cloudit: Snapshot 기능 사용] nginx: O R-Disk file: O D-Disk file: X Command History: X

  2. Snapshot 원본 VM이 Snapshot 후에도 사용 가능한가? 사용 가능합니다.

  3. MyImage로 새로운 VM을 반복 생성 가능한가? (1) VM 생성 시 Public Image처럼 Image만 선택하고 나머지(Spec, KeyPair 등)는 선택 가능한가? => 선택 가능합니다. (2) data-disk가 포함된 VMIamage로 VM 생성시 마다 snapshot 데이터를 포함한 새로운 data-disk로 attach 되는가? => 새로운 data-disk가 생성되어 attach 됩니다.

MZC-CSC commented 2 years ago

@powerkimhub 조사 결과 공유드립니다.

[Tencent]

  1. VM Snapshot 복제 대상은 무엇인가? [Tencent: Create Image 기능 사용] nginx: O R-Disk file: O D-Disk file: O Command History: O

  2. Snapshot 원본 VM이 Snapshot 후에도 사용 가능한가? -> 사용 가능 (Running 상태 유지)

  3. MyImage로 새로운 VM을 반복 생성 가능한가?

(1) VM 생성 시 Public Image처럼 Image만 선택하고 나머지(Spec, KeyPair 등)는 선택 가능한가? -> 선택 가능

(2) data-disk가 포함된 VMIamage로 VM 생성시 마다 snapshot 데이터를 포함한 새로운 data-disk로 attach 되는가? -> 새로운 data-disk가 생성되어 attch

[Alibaba]

  1. VM Snapshot 복제 대상은 무엇인가? [Alibaba: Create Image 기능 사용] nginx: O R-Disk file: O D-Disk file: O Command History: X

  2. Snapshot 원본 VM이 Snapshot 후에도 사용 가능한가? -> 사용 가능 (Running 상태 유지)

  3. MyImage로 새로운 VM을 반복 생성 가능한가?

(1) VM 생성 시 Public Image처럼 Image만 선택하고 나머지(Spec, KeyPair 등)는 선택 가능한가? -> 선택 가능

(2) data-disk가 포함된 VMIamage로 VM 생성시 마다 snapshot 데이터를 포함한 새로운 data-disk로 attach 되는가? -> 새로운 data-disk가 생성되어 attch

powerkimhub commented 2 years ago

@inno-cloudbarista

[IBM/Cloudit] 관련하여,

powerkimhub commented 2 years ago

@inno-cloudbarista @MZC-CSC @innodreamer

[VM Snapshot/MyImage: CSP별 대응 기능 및 동작 현황 요약]

                                               <------------------- VM Snapshot 대상 ---------------->                                 <---- VM 생성 시 ---->   관련 기능 (1) installed SW(nginx) (2) R-Disk:data (3) D-Disk:data (4) CMD History 원본 VM 상태 (1) Spec, KeyPair 설정 가능 여부 (2) new D-Disk로 attach 여부
AWS Create Image O O O O 사용 가능 (no reboot 선택 가능한데 불안전) O O
Azure Capture O O O O 사용 불가 O O
GCP Create Machine Image O O O X O O O
Alibaba Create Image O O O X 사용 가능 O O
Tencent Create Image O O O O 사용 가능 O O
IBM Snapshot O O X O 사용 가능 O X
OpenStack Snapshot O O O X 사용 가능(무변) O O
Cloudit Snapshot O O X X 사용 가능 O X
powerkimhub commented 2 years ago

@inno-cloudbarista @MZC-CSC @innodreamer


[이슈]


[방안]


inno-cloudbarista commented 2 years ago

@powerkimhub

[IBM-VPC] 3.-(2) data-disk가 포함된 VMImage로 VM 생성시 마다 snapshot 데이터를 포함한 새로운 data-disk로 attach 되는가? => Driver 동작 상황을 잘못 전달드렸습니다. => CSP 동작 현황은 D-Disk가 복제되지 않으므로 새로운 data-disk로 attach 되지 않습니다.

[Cloudit] 3.-(2) data-disk가 포함된 VMImage로 VM 생성시 마다 snapshot 데이터를 포함한 새로운 data-disk로 attach 되는가? => IBM-VPC와 동일하게 새로운 data-disk로 attach 되지 않습니다.

powerkimhub commented 2 years ago

@MZC-CSC

MZC-CSC commented 2 years ago

@powerkimhub 조사 결과 공유드립니다.

[GCP]

VM Snapshot 복제 대상은 무엇인가? [GCP: Create Machine Image 기능 사용] nginx: O R-Disk file: O D-Disk file: O Command History: X

Snapshot 원본 VM이 Snapshot 후에도 사용 가능한가? -> 사용 가능 (Running 상태 유지)

MyImage로 새로운 VM을 반복 생성 가능한가?

(1) VM 생성 시 Public Image처럼 Image만 선택하고 나머지(Spec, KeyPair 등)는 선택 가능한가? -> 선택 가능

(2) data-disk가 포함된 VMIamage로 VM 생성시 마다 snapshot 데이터를 포함한 새로운 data-disk로 attach 되는가? -> 새로운 data-disk가 생성되어 attch

powerkimhub commented 2 years ago

@powerkimhub 조사 결과 공유드립니다.

[GCP]

VM Snapshot 복제 대상은 무엇인가? [GCP: Create Machine Image 기능 사용] nginx: O R-Disk file: O D-Disk file: O Command History: X

Snapshot 원본 VM이 Snapshot 후에도 사용 가능한가? -> 사용 가능 (Running 상태 유지)

MyImage로 새로운 VM을 반복 생성 가능한가?

(1) VM 생성 시 Public Image처럼 Image만 선택하고 나머지(Spec, KeyPair 등)는 선택 가능한가? -> 선택 가능

(2) data-disk가 포함된 VMIamage로 VM 생성시 마다 snapshot 데이터를 포함한 새로운 data-disk로 attach 되는가? -> 새로운 data-disk가 생성되어 attch


powerkimhub commented 2 years ago

[Driver 개발 현황]

MZC-CSC commented 2 years ago

@powerkimhub [GCP] GCP 이슈 사항 공유드립니다.

GCP Machine Image를 사용하여 VM 생성 시, RootDisk의 Type 및 Size를 변경하거나 DataDisk를 추가할 수 없습니다. (Machine Image에 설정된 RootDisk Type, Size로만 생성, Machine Image에 포함된 DataDisk만 추가됨)

만약 VM 생성 단계에서 Machine Image에 포함된 DataDisk 이외에 DataDisk를 추가하고자 한다면 VM 생성 후 Attach하는 방식으로 가야할 것 같습니다.

powerkimhub commented 2 years ago

@MZC-CSC @inno-cloudbarista @innodreamer


powerkimhub commented 2 years ago

[Create] - SnapshotVM

curl -sX POST http://localhost:1024/spider/myimage -H 'Content-Type: application/json' -d \
        '{
                "ConnectionName": "aws-ohio-config",
                "ReqInfo": {
                        "Name": "spider-myimage-01",
                        "SourceVM": "vm-01"
                }
        }' | json_pp
{
   "CreatedTime" : "2022-09-27T08:18:22Z",
   "IId" : {
      "NameId" : "spider-myimage-01",
      "SystemId" : "ami-0f691cd23bfe31031"
   },
   "KeyValueList" : null,
   "SourceVM" : {
      "NameId" : "vm-01",
      "SystemId" : "i-0039fb7c28e4622af"
   },
   "Status" : "Unavailable"
}

[List]

curl -sX GET http://localhost:1024/spider/myimage -H 'Content-Type: application/json' -d \
        '{ 
                "ConnectionName": "aws-ohio-config"
        }' |json_pp
{
   "myImage" : [
      {
         "CreatedTime" : "2022-09-27T08:18:22Z",
         "IId" : {
            "NameId" : "spider-myimage-01",
            "SystemId" : "ami-0f691cd23bfe31031"
         },
         "KeyValueList" : null,
         "SourceVM" : {
            "NameId" : "vm-01",
            "SystemId" : "i-0039fb7c28e4622af"
         },
         "Status" : "Available"
      }
   ]
}

[Get]

curl -sX GET http://localhost:1024/spider/myimage/spider-myimage-01 -H 'Content-Type: application/json' -d \
        '{ 
                "ConnectionName": "aws-ohio-config"
        }' |json_pp
{
   "CreatedTime" : "2022-09-27T08:18:22Z",
   "IId" : {
      "NameId" : "spider-myimage-01",
      "SystemId" : "ami-0f691cd23bfe31031"
   },
   "KeyValueList" : null,
   "SourceVM" : {
      "NameId" : "vm-01",
      "SystemId" : "i-0039fb7c28e4622af"
   },
   "Status" : "Available"
}

[Delete]

curl -sX DELETE http://localhost:1024/spider/myimage/spider-myimage-01 -H 'Content-Type: application/json' -d \
        '{ 
                "ConnectionName": "aws-ohio-config"
        }' |json_pp
{
   "Result" : "true"
}
powerkimhub commented 2 years ago

@MZC-CSC @inno-cloudbarista @innodreamer

[ImageType과 StartVM Examples]


[Data-Disk 포함한 MyImage Test] AWS 경우

image



powerkimhub commented 2 years ago

@inno-cloudbarista @MZC-CSC @innodreamer

[Driver 통합 시험 가이드]

[시험 결과 공유]

[Sync vs Async Call]

seokho-son commented 2 years ago

[Sync vs Async Call]

Disk, MyImage 관련 Driver API들이 Sync Call과 Async Call이 CSP별 또는 API 종류별로 섞여 있는 부분이 있습니다. 이 부분은 TB 요구사항을 수용하여 필요시 Spider Server 수준에서 일괄 정리 예정이오니, 현재는 현재 상태로 유지해두셔도 될 거 같습니다.

관련해서는, TB도 async call을 가정하고 처리하도록 하겠습니다. TB의 사용자에게도 async call 형태로 나가는 것을 1차 개발 목표로 둘 것이며, 이에 따라 사용자가 직접 Disk, MyImage 가용 여부를 확인하고 사용하는 것을 가정하려 합니다.

powerkimhub commented 2 years ago

@MZC-CSC @inno-cloudbarista @innodreamer ( @seokho-son @jihoon-seo )

powerkimhub commented 2 years ago

@MZC-CSC

- Alibaba의 경우도 MyImage를 삭제하여도 Snapshot이 잔류 되고 있습니다. - 참고하시기 바랍니다.

powerkimhub commented 2 years ago

@MZC-CSC

powerkimhub commented 2 years ago

@MZC-CSC

MZC-CSC commented 1 year ago

vm 생성시 zone 필수가 아니어서 설정을 하지 않고 있었는데 해당현상으로 인해 설정하도록 변경해야 할 것 같습니다.

Disk 가 Zone에 Dependency가 있습니다. 기존 Region만 선택하면 zone은 random으로 선택 되는데 이 때, 해당 zone 에 사용할 수 있는 disk가 아니면 생성할 수 없습니다.

zone 조회시 사용가능한 resource 정보 Zones > Zone > AvailableResources > ResourcesInfo > DataDiskCategories > supportedDataDiskCategory

powerkimhub commented 1 year ago

@MZC-CSC

vm 생성시 zone 필수가 아니어서 설정을 하지 않고 있었는데 해당현상으로 인해 설정하도록 변경해야 할 것 같습니다.

Disk 가 Zone에 Dependency가 있습니다. 기존 Region만 선택하면 zone은 random으로 선택 되는데 이 때, 해당 zone 에 사용할 수 있는 disk가 아니면 생성할 수 없습니다.

...

powerkimhub commented 1 year ago

● Close and open as a new: https://github.com/cloud-barista/cb-spider/issues/849