-
Notifications
You must be signed in to change notification settings - Fork 48
features and usages
ByoungSeob Kim edited this page Sep 9, 2024
·
44 revisions
그림에서 보는 바와 같이,
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)
8. 멀티클라우드 Region/Zone 정보(Multi-Cloud Region/Zone Info)
9. 멀티클라우드 Price 정보(Multi-Cloud Price Info)
- 대상 클라우드에 연동을 위해 필요한 클라우드 정보 및 접속 정보 등을 등록하여 반복 활용한다.
- 이 등록 정보를 클라우드 연결 설정(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 형식, 클라우드 별로 다름):
- 클라우드 별로 2가지 타입 제공
- (1) Type-1: Spider 타입
- (2) Type-2: CSP 타입
- AWS Type-1 예시:
[{"Key":"ClientId", "Value":"AKIAR4XXXXX"}, {"Key":"ClientSecret", "Value":"QOumDIA4XXXXXXXX"}]
- AWS Type-2 예시:
[{"Key":"aws_access_key_id", "Value":"AKIAR4XXXXX"}, {"Key":"aws_secret_access_key", "Value":"QOumDIA4XXXXXXXX"}]
- AWS Type-1 예시:
- 대상 클라우드 별 크리덴셜 정보 Key Name 확인 방법(예시:
AWS
경우)curl -sX GET http://localhost:1024/spider/cloudos/metainfo/AWS -H 'Content-Type: application/json' |json_pp |more { "Credential" : [ <========== Type-1 "ClientId", "ClientSecret" ], "CredentialCSP" : [ <========== Type-2 "aws_access_key_id", "aws_secret_access_key" ], ... 중략 ...
- 클라우드 별로 2가지 타입 제공
- API 활용 예시(Type-2)
- 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": "aws_access_key_id", "Value": "AKIAR4XXXXX" }, { "Key": "aws_secret_access_key", "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 인프라 운영을 위해서 필요한 클라우드 자원을 생성 및 제어 한다.
- 멀티클라우드 자원을 제어하기 위해서는 대상 클라우드의 연결 설정(Cloud Connection Configuration)의 사전 등록이 필요하다.
- CB-Spider가 제공하는 멀티클라우드 자원은 다음과 같다. 제공 자원 참고
(1) VM Image 정보 제공 (2) VM Spec 정보 제공 (3) VPC/Subnet 생성 및 제어 (4) SecurityGroup 생성 및 제어 (5) VM KeyPair 생성 및 제어
- VM Image는 연동 대상 클라우드(CSP Regin/Zone)에서 제공하는 이미지 목록 및 정보를 제공한다.
- ※ MyImage 활용은 VM Snapshot/MyImage 제어 및 API 참고
- 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?ConnectionName=aws-ohio-config | json_pp
{ "GuestOS" : "Linux/UNIX", "IId" : { "NameId" : "ami-0bbe28eb2173f6167", "SystemId" : "ami-0bbe28eb2173f6167" }, "KeyValueList" : [ { "Key" : "CreationDate", "Value" : "2020-08-10T20:29:49.000Z" }, { "Key" : "Architecture", "Value" : "x86_64" }, { "Key" : "OwnerId", "Value" : "099720109477" }, ... 중략 ...
- 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?ConnectionName=aws-ohio-config | json_pp
{ "Gpu" : [ { "Count" : "1", "Mem" : "16384", "Mfr" : "NVIDIA", "Model" : "V100" } ], "KeyValueList" : [ { "Key" : "EbsInfo", "Value" : "map[EbsOptimizedInfo:map[BaselineBandwidthInMbps:1750 BaselineIops:10000 BaselineThroughputInMBps:218.75 MaximumBandwidthInMbps:1750 MaximumIops:10000 MaximumThroughputInMBps:218.75] EbsOptimizedSupport:default EncryptionSupport:supported NvmeSupport:unsupported]" }, ... 중략 ...
- 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 Name":"subnet-01", "Subnet CIDR":"192.168.1.0/24"}, {"Subnet Name":"subnet-02", "Subnet CIDR":"192.168.2.0/24"}]
- 특이 사항
- 제공 자원 VPC 특이사항 참고
- 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를 대상으로 생성이 가능하다.
- 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 설정과 동일
- 특이 사항
- 제공 자원 Security Group 특이사항 참고
- 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을 생성 및 라이프사이클을 제어한다.
- 멀티클라우드 VM을 제어하기 위해서는 대상 클라우드의 연결 설정(Cloud Connection Configuration)의 사전 등록이 필요하다.
- CB-Spider가 제공하는 VM 관련 기능은 다음과 같다.
(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"
- ※ CSP별 ImageName 참고: How to get Image List
- 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" } }'
-
-
Install & Start Guide
-
Features & Usage
-
- AdminWeb Tool Guide
- CLI Tool Guide
- REST API 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
- Price 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 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]