-
Notifications
You must be signed in to change notification settings - Fork 50
features and usages
ByoungSeob Kim edited this page May 23, 2022
·
46 revisions

그림에서 보는 바와 같이,
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. CSP API 호출 이력 정보 수집 및 제공(CSP API Call History Support)
※ CSP:Cloud Service Provider
- 대상 클라우드(=CSP)에 연동을 위해 필요한 클라우드 정보 및 접속 정보 등을 등록하여 반복 활용한다.
- 이 등록 정보를 클라우드 연결 설정(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가지 정보를 등록한 후에 등록이 가능하다.
- CB-Spider는 동적 Plug-in이 가능한 Cloud Driver 기반으로 CSP 연동 대상을 확장 가능한 구조이다.
- 연동하고자 하는 대상 Cloud를 위해서 개발된 Cloud Driver 정보를 등록한다.
- Cloud Driver 정보는 CB-Spider 인터페이스를 활용하여 등록/조회/삭제가 가능하다.
- 등록된 이름을 이용한 등록은 기존 정보를 업데이트 한다.
- 주요 등록 정보는 다음과 같다.
- Cloud Driver 이름: 예시) "aws-driver01"
- 대상 클라우드 종류: 예시) "AWS" (제공 CSP 참고)
- Cloud Driver 라이브러리 이름: "aws-driver-v1.0.so" (CSP 라이브러리 이름 참고)
- 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" }'
- REST API: Register Cloud Driver Info
- 인터페이스 규격 및 예시
- 연동하고자 하는 대상 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" } ] }'
- REST API: Register Cloud Credential Info
- 인터페이스 규격 및 예시
- 연동하고자 하는 대상 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" } ] }'
- REST API: Register Cloud Region/Zone Info
- 인터페이스 규격 및 예시
- 연동하고자 하는 대상 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" }'
- REST API: Register Cloud Connection Configuration Info
- 인터페이스 규격 및 예시
- 멀티클라우드 컴퓨팅 인프라(VM:Virtual Machine) 운영을 위해서 필요한 클라우드 자원을 생성 및 제어 한다.
- 멀티클라우드 자원을 제어하기 위해서는 대상 클라우드의 연결 설정(Cloud Connection Configuration)의 사전 등록이 필요하다.
- CB-Spider가 제공하는 멀티클라우드 자원은 다음과 같다. 제공 자원 참고
(1) VM Image 정보 제공 (2) VM Spec 정보 제공 (3) VPC/Subnet 생성 및 제어 (4) SecurityGroup 생성 및 제어 (5) VM KeyPair 생성 및 제어
-
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 형식도 제공
- REST API: Get VM Image
-
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 형식도 제공
- REST API: Get VM Spec
- 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 이름":"subnet-01", "Subnet CIDR":"192.168.1.0/24"}, {"Subnet 이름":"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" } ] } }'
- REST API: Create VPC/Subnet
- 인터페이스 규격 및 예시
- SecurityGroup 자원은 연동 대상 클라우드(CSP Regin/Zone)에 VM 보안그룹(방화벽)을 제공하기 위한 자원이다.
- SecurityGroup 자원은 CB-Spider 인터페이스를 활용하여 생성/조회/삭제가 가능하다.
- SecurityGroup은 VPC 생성 후 생성한 VPC를 대상으로 생성이 가능하다.
- 존재하는 이름을 이용한 생성 요청은 오류를 반환한다.
- 생성시 주요 입력 정보는 다음과 같다.
- 등록한 클라우드 연결 설정 이름: 예시) "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 설정의 경우 생략 가능 } ] } }'
- REST API: Create SecurityGroup
- 인터페이스 규격 및 예시
- 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" } }'
- REST API: Create KeyPair
- 인터페이스 규격 및 예시
- 멀티클라우드 컴퓨팅 인프라 운영을 위해서 필요한 가상머신을 생성 및 라이프사이클을 제어한다.
- 멀티클라우드 VM을 제어하기 위해서는 대상 클라우드의 연결 설정(Cloud Connection Configuration)의 사전 등록이 필요하다.
- CB-Spider가 제공하는 가상머신 관련 기능은 다음과 같다.
(1) VM 생성 및 라이프사이클 제어 (2) VM 상태 목록 및 정보 조회 (3) 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"
- 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" } }'
- REST API: Create VM
- 인터페이스 규격 및 예시
- TBD
-
Install & Start Guide
-
Features & Usage
-
- AdminWeb Tool Guide
- CLI Tool Guide
- REST API Guide
- NLI Guide
-
Design
-
Developer Guide
-
Cloud Driver Developer Guide
- Cloud Driver Developer Guide-WIP
- VM SSH Key Development Guide-WIP
- VM User Development Guide
- What is the CSP SDK API Version of drivers
- Region Zone Info and Driver API
- (StartVM TerminateVM) API Call Counts and Waiting
- StartVM and TerminateVM Main Flow of drivers
- VM Root Disk Configuration Guide
- Security Group Rules and Driver API
- Network Load Balancer and Driver API
- VM Snapshot, MyImage and Disk Overview
- Kubernetes and Driver API(PMKS, K8S)
- Tag and Cloud Driver API
- AnyCall API Extension Guide
-
Test Reports
- v0.2.8-for-espresso-release
- v0.3.0-espresso-release
- Azure:Terminating VM
- cb-user@VM: ssh login, sudo run
- v0.3.14 test for SG Source
- v0.4.0-cafemocha-release
- Test via REST API Gateway
- Test Reports of v0.4.11 (IID2 initial Version)
- Test Reports of v0.4.12 (Register & Unregister existing Resources)
- Test Reports for v0.6.0 Release
- How to ...
- How to Use AWS S3 with Credentials
- How to Use Alibaba ECS i1.* Instance Types
- How to provision GPU VMs
- How to Resolve the 'Failed to Connect to Database' Error
- How to test CB Spider with Mock Driver
- How to install CB Spider on WSL2 under 공유기/사설망
- How to install CB Spider on macOS
- How to run CB Spider Container on macOS
- How to install OpenStack on a VM for CB Spider Testing
- How to get Azure available Regions
- How to profile memory usage in Golang
- Deprecated:How to install protoc and plugins
- [For Cloud-Migrator]