Skip to content

features and usages

ByoungSeob Kim edited this page Sep 7, 2022 · 46 revisions

[CB-Spider 활용 개요]


image


그림에서 보는 바와 같이, 
CB-Spider를 이용하여 멀티클라우드를 제어하는 주요 순서는 다음과 같다.
    1. 연동 대상 클라우드 연결 설정 등록
    2. VM 생성에 필요한 자원 생성
    3. 생성 자원을 활용한 VM 생성
    4. VM 라이프사이클 제어


CB-Spider가 제공하는 주요 기능은 다음과 같고, 세부 내용은 아래와 같다. 
    1. 멀티클라우드 연결 설정 관리(Multi-Cloud Connection Configuration Management)
    2. 멀티클라우드 인프라 자원 제어(Multi-Cloud Infra Resource Control)
    3. 멀티클라우드 가상머신 라이프사이클 제어(Multi-Cloud VM Lifecycle Control)
    4. 멀티클라우드 디스크 제어(Multi-Cloud Disk Control)
    5. 멀티클라우드 네트워크 로드벨런서 제어(Multi-Cloud NLB; Network LoadBalancer Control)
    6. 멀티클라우드 VM 스넵샷/마이 이미지 제어(Multi-Cloud VM Snapshot/MyImage Control)


1. 멀티클라우드 연결 설정 관리(Multi-Cloud Connection Configuration Management)

  • 대상 클라우드에 연동을 위해 필요한 클라우드 정보 및 접속 정보 등을 등록하여 반복 활용한다.
  • 이 등록 정보를 클라우드 연결 설정(Cloud Connection Configuration) 정보라 한다.
  • 클라우드 연결 설정 정보는 CB-Spider 인터페이스를 활용하여 등록/조회/삭제가 가능하다.
  • 등록된 이름을 이용한 등록은 등록된 기존 정보를 업데이트 한다.
  • 연결 설정 정보의 등록은 다음 순서로 진행할 수 있다.
    (1) Cloud Driver 정보 등록 및 관리
    (2) Cloud Credential 정보 등록 및 관리
    (3) Cloud Region/Zone 정보 등록 및 관리
    (4) Cloud Connection Configuration 정보 등록 및 관리
    
    • Cloud Driver, Credential, Region/Zone 정보의 등록은 순서에 무관하며,
    • Cloud Connection Configuration 정보 등록은 앞의 3가지 정보를 등록한 후에 등록이 가능하다.

(1) Cloud Driver 정보 등록 및 관리

  • CB-Spider는 동적 Plug-in이 가능한 Cloud Driver 기반으로 CSP 연동 대상을 확장 가능한 구조이다.
  • 연동하고자 하는 대상 Cloud를 위해서 개발된 Cloud Driver 정보를 등록한다.
  • Cloud Driver 정보는 CB-Spider 인터페이스를 활용하여 등록/조회/삭제가 가능하다.
  • 등록된 이름을 이용한 등록은 기존 정보를 업데이트 한다.
  • 주요 등록 정보는 다음과 같다.
  • API 활용 예시
    • REST API: Register Cloud Driver Info
      curl -sX POST http://localhost:1024/spider/driver \
      -H 'Content-Type: application/json' \
      -d '{
          "DriverName": "aws-driver01",
          "ProviderName": "AWS",
          "DriverLibFileName": "aws-driver-v1.0.so"
      }'
      
  • 인터페이스 규격 및 예시

(2) Cloud Credential 정보 등록 및 관리

  • 연동하고자 하는 대상 Cloud(CSP)의 Cloud Credential 정보를 등록한다.
  • Cloud Credential 정보는 CB-Spider 인터페이스를 활용하여 등록/조회/삭제가 가능하다.
  • Cloud Credential 정보 조회시 credential 정보 자체는 암호화되어 관리 및 제공된다.
  • 등록된 이름을 이용한 등록은 기존 정보를 업데이트 한다.
  • 주요 등록 정보는 다음과 같다.
    • 클라우드 크리덴셜 이름: 예시) "aws-credential01"
    • 대상 클라우드 종류: 예시) "AWS" (제공 CSP 참고)
    • 대상 클라우드 크리덴셜 정보(Key-Value 형식, CSP별로 다름): 예시) [{"Key":"ClientId", "Value":"AKIAR4XXXXX"}, {"Key":"ClientSecret", "Value":"QOumDIA4XXXXXXXX"}]
  • API 활용 예시
    • REST API: Register Cloud Credential Info
      curl -sX POST http://localhost:1024/spider/credential \
      -H 'Content-Type: application/json' \
      -d '{        
          "CredentialName": "aws-credential01",
          "ProviderName": "AWS",
          "KeyValueInfoList": [
              {
                  "Key": "ClientId",
                  "Value": "AKIAR4XXXXX"
              },
              {
                  "Key": "ClientSecret",
                  "Value": "QOumDIA4XXXXXXXX"
              }
          ]
      }'
      
  • 인터페이스 규격 및 예시

(3) Cloud Region/Zone 정보 등록 및 관리

  • 연동하고자 하는 대상 Cloud(CSP)가 제공하는 Region 및 Zone 정보를 등록한다.
  • Cloud Region 및 Zone 정보는 CB-Spider 인터페이스를 활용하여 등록/조회/삭제가 가능하다.
  • 등록된 이름을 이용한 등록은 기존 정보를 업데이트 한다.
  • 주요 등록 정보는 다음과 같다.
    • 클라우드 리전 이름: 예시) "aws-ohio"
    • 대상 클라우드 종류: 예시) "AWS" (제공 CSP 참고)
    • 대상 클라우드 Region/Zone 정보: 예시)
      [{"Key":"Region", "Value":"us-east-2"}, {"Key":"Zone", "Value":"us-east-2a"}]
      
  • API 활용 예시
    • REST API: Register Cloud Region/Zone Info
      curl -sX POST http://localhost:1024/spider/region \
      -H 'Content-Type: application/json' \
      -d '{        
          "RegionName": "aws-ohio",
          "ProviderName": "AWS",
          "KeyValueInfoList": [
              {
                  "Key": "Region",
                  "Value": "us-east-2"
              },
              {
                  "Key": "Zone",
                  "Value": "us-east-2a"
              }
          ]
      }'
      
  • 인터페이스 규격 및 예시

(4) Cloud Connection Configuration 정보 등록 및 관리

  • 연동하고자 하는 대상 Cloud(CSP)의 연결 설정 정보를 등록한다.
  • Cloud Connection Configuration 정보는 CB-Spider 인터페이스를 활용하여 등록/조회/삭제가 가능하다.
  • 등록된 이름을 이용한 등록은 기존 정보를 업데이트 한다.
  • 주요 등록 정보는 다음과 같다.
    • 클라우드 연결 설정 이름: 예시) "aws-ohio-config"
    • 대상 클라우드 종류: 예시) "AWS" (제공 CSP 참고)
    • 대상 클라우드를 위해 등록한 드라이버 이름: 예시) aws-driver01
    • 대상 클라우드를 위해 등록한 크리덴셜 이름: 예시) aws-credential01
    • 대상 클라우드를 위해 등록한 리전 이름: 예시) aws-ohio
  • API 활용 예시
    • REST API: Register Cloud Connection Configuration Info
      curl -sX POST http://localhost:1024/spider/connectionconfig \
      -H 'Content-Type: application/json' \
      -d '{    
          "ConfigName": "aws-ohio-config",
          "ProviderName": "AWS",
          "DriverName": "aws-driver01",
          "CredentialName": "aws-credential01",
          "RegionName": "aws-ohio"
      }'
      
  • 인터페이스 규격 및 예시

2. 멀티클라우드 인프라 자원 제어(Multi-Cloud Infra Resource Control)

  • 멀티클라우드 컴퓨팅 인프라(VM:Virtual Machine) 운영을 위해서 필요한 클라우드 자원을 생성 및 제어 한다.
  • 멀티클라우드 자원을 제어하기 위해서는 대상 클라우드의 연결 설정(Cloud Connection Configuration)의 사전 등록이 필요하다.
  • CB-Spider가 제공하는 멀티클라우드 자원은 다음과 같다. 제공 자원 참고
    (1) VM Image 정보 제공
    (2) VM Spec 정보 제공
    (3) VPC/Subnet 생성 및 제어
    (4) SecurityGroup 생성 및 제어
    (5) VM KeyPair 생성 및 제어
    

(1) VM Image 정보 제공

  • VM Image는 연동 대상 클라우드(CSP Regin/Zone)에서 제공하는 이미지 목록 및 정보를 제공한다.

  • VM Image 정보는 CB-Spider 인터페이스를 활용하여 목록 및 세부 정보 조회가 가능하다.

  • 주요 제공 정보는 다음과 같다.

    • VM 이미지 이름: 예시) "ami-0bbe28eb2173f6167"
    • VM 이미지 운영체제(Geust OS): 예시) "Linux/UNIX"
    • VM 이미지 상태: "available"
    • VM 이미지 부가 정보(CSP 제공 정보): 예시)
      CreationDate:2019-11-07T19:50:06.000Z, Architecture:x86_64, OwnerId:898082745236, ImageType:machine, ImageLocation:amazon/Deep Learning AMI (Ubuntu 18.04) Version 25.3, VirtualizationType:hvm, Public:true, PlatformDetails:Linux/UNIX, Name:Deep Learning AMI (Ubuntu 18.04) Version 25.3, Description:MXNet-1.5.0, TensorFlow-1.14, PyTorch-1.2, Keras-2.2, Chainer-6.1, configured with NVIDIA CUDA, cuDNN, NCCL, Intel MKL-DNN, Docker & NVIDIA-Docker. For a fully managed experience, check: https://aws.amazon.com/sagemaker, ImageOwnerAlias:amazon, RootDeviceName:/dev/sda1, RootDeviceType:ebs, EnaSupport:true
  • API 활용 예시

    • REST API: Get VM Image
      curl -sX GET http://localhost:1024/spider/vmimage/ami-0bbe28eb2173f6167 \
      -H 'Content-Type: application/json' \
      -d '{
          "ConnectionName": "aws-ohio-config"
      }'
      
    • ※ HTTP GET 호출시 Get-Body 형식과 RFC7231 준수하는 도구 호환성을 위해서 Get QueryParam 형식도 제공
  • 인터페이스 규격 및 예시

(2) VM Spec 정보 제공

  • VM Spec은 연동 대상 클라우드(CSP Regin/Zone)에서 제공하는 VM 사양 목록 및 정보를 제공한다.

  • VM Spec 정보는 CB-Spider 인터페이스를 활용하여 목록 및 세부 정보 조회가 가능하다.

  • 주요 제공 정보는 다음과 같다.

    • VM 사양 이름: 예시) "p3.2xlarge"
    • VM CPU 사양: 예시) "Count: 8, Clock: 2.7GHz"
    • VM 메모리 사양: "62464 MB"
    • VM GPU 사양: 예시) "Mfr: NVIDIA, Model: V100, Memory: 16384 MB, Count: 1"
    • VM 사양 부가 정보(CSP 제공 정보): 예시)
      AutoRecoverySupported:true, MemoryInfo:map[SizeInMiB:62464], SupportedVirtualizationTypes:[hvm], InstanceStorageSupported:false, BareMetal:false, CurrentGeneration:true, DedicatedHostsSupported:true, GpuInfo:map[Gpus:[map[Count:1 Manufacturer:NVIDIA MemoryInfo:map[SizeInMiB:16384] Name:V100]] TotalGpuMemoryInMiB:16384], HibernationSupported:false, Hypervisor:xen, ProcessorInfo:map[SupportedArchitectures:[x86_64] SustainedClockSpeedInGhz:2.7], SupportedUsageClasses:[on-demand spot], VCpuInfo:map[DefaultCores:4 DefaultThreadsPerCore:2 DefaultVCpus:8 ValidCores:[1 2 3 4] ValidThreadsPerCore:[1 2]], BurstablePerformanceSupported:false, EbsInfo:map[EbsOptimizedInfo:map[BaselineBandwidthInMbps:1750 BaselineIops:10000 BaselineThroughputInMBps:218.75 MaximumBandwidthInMbps:1750 MaximumIops:10000 MaximumThroughputInMBps:218.75] EbsOptimizedSupport:default EncryptionSupport:supported NvmeSupport:unsupported], FreeTierEligible:false, NetworkInfo:map[DefaultNetworkCardIndex:0 EfaSupported:false EnaSupport:supported Ipv4AddressesPerInterface:15 Ipv6AddressesPerInterface:15 Ipv6Supported:true MaximumNetworkCards:1 MaximumNetworkInterfaces:4 NetworkCards:[map[MaximumNetworkInterfaces:4 NetworkCardIndex:0 NetworkPerformance:Up to 10 Gigabit]] NetworkPerformance:Up to 10 Gigabit], SupportedRootDeviceTypes:[ebs], InstanceType:p3.2xlarge, PlacementGroupInfo:map[SupportedStrategies:[cluster partition spread]]
  • API 활용 예시

    • REST API: Get VM Spec
      curl -sX GET http://localhost:1024/spider/vmspec/p3.2xlarge \
      -H 'Content-Type: application/json' \
      -d '{
          "ConnectionName": "aws-ohio-config"
      }'
      
    • ※ HTTP GET 호출시 Get-Body 형식과 RFC7231 준수하는 도구 호환성을 위해서 Get QueryParam 형식도 제공
  • 인터페이스 규격 및 예시

(3) VPC/Subnet 생성 및 제어

  • VPC/Subnet 자원은 연동 대상 클라우드(CSP Regin/Zone)에 사용자의 가상 네트워크 환경을 제공하기 위한 자원이다.
    ※ VPC: Virtual Private Cloud (https://en.wikipedia.org/wiki/Virtual_private_cloud)
  • VPC/Subnet 자원은 CB-Spider 인터페이스를 활용하여 생성/조회/삭제가 가능하다.
    • Subnet 자원은 VPC 생성시에 함께 생성 할 수 있으며, VPC 생성 이후에도 추가/삭제가 가능하다.
  • 존재하는 이름을 이용한 생성 요청은 오류를 반환한다.
  • 생성시 주요 입력 정보는 다음과 같다.
    • 등록한 클라우드 연결 설정 이름: 예시) "aws-ohio-config"
    • VPC 이름: 예시) "vpc-01"
    • VPC CIDR 정보: 예시) "192.168.0.0/16"
    • Subnet 정보(1개 이상): 예시) [{"Subnet Name":"subnet-01", "Subnet CIDR":"192.168.1.0/24"}, {"Subnet Name":"subnet-02", "Subnet CIDR":"192.168.2.0/24"}]
  • API 활용 예시
    • REST API: Create VPC/Subnet
      curl -sX POST http://localhost:1024/spider/vpc \
      -H 'Content-Type: application/json' \
      -d '{
          "ConnectionName": "aws-ohio-config",
          "ReqInfo": {
              "Name": "vpc-01",
              "IPv4_CIDR": "192.168.0.0/16",
              "SubnetInfoList": [
                  {
                      "Name": "subnet-01",
                      "IPv4_CIDR": "192.168.1.0/24"
                  }
              ]
          }
      }'
      
  • 인터페이스 규격 및 예시

(4) SecurityGroup 생성 및 제어

  • SecurityGroup 자원은 연동 대상 클라우드(CSP Regin/Zone)에 VM 보안그룹(방화벽)을 제공하기 위한 자원이다.
  • SecurityGroup 자원은 CB-Spider 인터페이스를 활용하여 생성/조회/삭제가 가능하다.
    • SecurityGroup은 VPC 생성 후 생성한 VPC를 대상으로 생성이 가능하다.
    • Security Rule(보안그룹 규칙, 방화벽 접근 규칙)은 SecurityGroup 생성시에 함께 설정 할 수 있으며,
      • SecurityGroup 생성 이후에도 추가/삭제가 가능하다.
      • Security Rule은 별도의 개별 ID가 존재하지 않으며, 규칙의 설정 값으로 구분 및 관리할 수 있다.
      • Security Rule 규격 및 세부 내용은 CB-Spider Security Group and Rules을 참고한다.
  • 존재하는 이름을 이용한 생성 요청은 오류를 반환한다.
  • 생성시 주요 입력 정보는 다음과 같다.
    • 등록한 클라우드 연결 설정 이름: 예시) "aws-ohio-config"
    • 보안그룹 이름: 예시) "sg-01"
    • 대상 VPC 이름: 예시) "vpc-01"
    • 보안규칙 정보(1개 이상): 예시) [{"From Port 번호":"1", "To Port 번호":"65535", "IPProtocol":"tcp", "Direction":"inbound", "CIDR":"1.2.3.4/32"}]
      ※ CIDR: VM 접근 허용 대상 IP 주소 범위 설정
      ※ CIDR 설정의 생략은 default 값인 0.0.0.0/0 설정과 동일
  • API 활용 예시
    • REST API: Create SecurityGroup
      curl -sX POST http://localhost:1024/spider/securitygroup \
      -H 'Content-Type: application/json' \
      -d '{
          "ConnectionName": "aws-ohio-config",
          "ReqInfo": {
              "Name": "sg-01",
              "VPCName": "vpc-01",
              "SecurityRules": [
                  {
                      "FromPort": "1",
                      "ToPort": "65535",
                      "IPProtocol": "tcp",
                      "Direction": "inbound",
                      "CIDR": "1.2.3.4/32"    # 0.0.0./0 설정의 경우 생략 가능
                  }
              ]
          }        
      }'
      
  • 인터페이스 규격 및 예시

(5) VM KeyPair 생성 및 제어

  • KeyPair 자원은 연동 대상 클라우드(CSP Regin/Zone)에 VM 접속(SSH)을 제공하기 위한 자원이다.
  • KeyPair 자원은 CB-Spider 인터페이스를 활용하여 생성/조회/삭제가 가능하다.
  • 존재하는 이름을 이용한 생성 요청은 오류를 반환한다.
  • 생성시 주요 입력 정보는 다음과 같다.
    • 등록한 클라우드 연결 설정 이름: 예시) "aws-ohio-config"
    • 키페어 이름: 예시) "keypair-01"
  • API 활용 예시
    • REST API: Create KeyPair
      curl -sX POST http://localhost:1024/spider/keypair \
      -H 'Content-Type: application/json' \
      -d '{
          "ConnectionName": "aws-ohio-config",
          "ReqInfo": {
              "Name": "keypair-01"
          }
      }'
      
  • 인터페이스 규격 및 예시

3. 멀티클라우드 가상머신 라이프사이클 제어(Multi-Cloud VM Lifecycle Control)

  • 멀티클라우드 컴퓨팅 인프라 운영을 위해서 필요한 가상머신을 생성 및 라이프사이클을 제어한다.
  • 멀티클라우드 VM을 제어하기 위해서는 대상 클라우드의 연결 설정(Cloud Connection Configuration)의 사전 등록이 필요하다.
  • CB-Spider가 제공하는 가상머신 관련 기능은 다음과 같다.
    (1) VM 생성 및 라이프사이클 제어 
    (2) VM 상태 목록 및 정보 조회
    (3) VM 목록 및 정보 조회 
    

(1) VM 생성 및 라이프사이클 제어

  • VM은 연동 대상 클라우드(CSP Regin/Zone)에서 생성 및 운영 된다.
  • VM은 CB-Spider 인터페이스를 활용하여 생성/조회/삭제 및 라이프사이클 제어가 가능하다.
  • VM 생성을 위해서는 VM Image, VM Spec, VPC/Subnet, SecurityGroup 및 VM KeyPair 자원의 사전 준비가 필요하다.
  • CB-Spider는 다음과 같은 VM lifecycle을 제공한다.
    • VM 가동 및 종료
    • VM 중지 및 재개
    • VM 재가동
  • CB-Spider는 다음과 같은 VM 상태를 제공한다.
    • Creating 상태: VM이 생성되고 있는 상태
    • Running 상태: VM이 정상 동작 중인 상태
    • Suspending 상태: VM이 running 상태에서 Suspended 상태로 상태 전이 중인 상태
    • Suspended 상태: VM이 일시 중지된 상태(재시작 가능)
    • Resuming 상태: VM이 Suspended 상태에서 Running 상태로 상태 전이 중인 상태
    • Rebooting 상태: VM이 재가동 중인 상태
    • Terminating 상태: VM이 종료 중인 상태
    • Terminated 상태: VM이 종료된 상태(재시작 불가)
    • NotExist 상태: VM이 존재 하지 않는 상태
    • Failed 상태: VM 생성시 오류가 오류가 발생한 상태
  • 존재하는 이름을 이용한 생성 요청은 오류를 반환한다.
  • VM 생성이 완료 되어도 SSH를 통한 VM 접속은 일정 시간 후에 가능할 수 있다.
  • 생성시 주요 입력 정보는 다음과 같다.
    • 등록한 클라우드 연결 설정 이름: 예시) "aws-ohio-config"
    • VM 이름: 예시) "vm-01"
    • VM 이미지 이름: 예시) "ami-0bbe28eb2173f6167"
    • VM 사양 이름: 예시) "p3.2xlarge"
    • VPC 이름: 예시) "vpc-01"
    • Subnet 이름: 예시) "subnet-01"
    • SecurityGroup 이름(1개 이상): 예시) "sg-01"
    • VM KeyPair 이름: 예시) "keypair-01"
    • RootDiskType 이름(optional): 설정 가이드 참고
    • RootDiskSize 크기(optional): 설정 가이드 참고
  • API 활용 예시
    • REST API: Create VM
      curl -sX POST http://localhost:1024/spider/vm \
      -H 'Content-Type: application/json' \
      -d '{
          "ConnectionName": "aws-ohio-config",
          "ReqInfo": {
              "Name": "vm-01",
              "ImageName": "ami-0bbe28eb2173f6167",
              "VMSpecName": "p3.2xlarge",            
              "VPCName": "vpc-01",
              "SubnetName": "subnet-01",
              "SecurityGroupNames": [
                  "sg-01"
              ],
              "KeyPairName": "keypair-01"
          }
      }'
      

4. 멀티클라우드 디스크 제어(Multi-Cloud Disk Control)

5. 멀티클라우드 네트워크 로드벨런서 제어(Multi-Cloud NLB; Network LoadBalancer Control)

6. 멀티클라우드 VM 스냅샷/마이 이미지 제어(Multi-Cloud VM Snapshot/MyImage Control)



Table of contents



Clone this wiki locally