features and usages - cloud-barista/cb-spider GitHub Wiki


[CB-Spider 활용 개요]


image


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


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

  • 멀티클라우드 컴퓨팅 VM 인프라 운영을 위해서 필요한 클라우드 자원을 생성 및 제어 한다.
  • 멀티클라우드 자원을 제어하기 위해서는 대상 클라우드의 연결 설정(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. 멀티클라우드 VM 라이프사이클 제어(Multi-Cloud VM Lifecycle Control)

  • 멀티클라우드 컴퓨팅 인프라 운영을 위해서 필요한 VM을 생성 및 라이프사이클을 제어한다.
  • 멀티클라우드 VM을 제어하기 위해서는 대상 클라우드의 연결 설정(Cloud Connection Configuration)의 사전 등록이 필요하다.
  • CB-Spider가 제공하는 VM 관련 기능은 다음과 같다.
    (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 (※ CSP별 ImageName 참고: How to get Image List )

      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 Snapnot/MyImage 제어(Multi-Cloud VM Snapshot/MyImage Control)

7. 멀티클라우드 Kubernetes 제어(Multi-Cloud Kubernetes Control)

8. 멀티클라우드 Region/Zone 정보(Multi-Cloud Region/Zone Info)

※ 참고: 인터페이스 규격 및 예시