Cloud Driver Developer Guide - cloud-barista/cb-spider GitHub Wiki
WIP
Cloud Driver Developer Guide
Overview
- Cloud Driver common interface 기반의 Cloud Driver plugin 구조
- 신규 클라우드 드라이버 연동 방법
- Cloud common interface를 준수하는 Cloud Driver 개발
- CSP 전용 API를 사용한 개발
- Cloud Driver 등록 및 활용
- Cloud common interface를 준수하는 Cloud Driver 개발
-
Cloud Driver Type
- Static Driver
- CB-Spider Server build시에 함께 build
- server와 하나의 binary로 실행 및 운영
- Dynamic Plugin Driver
- Driver를 별도의 Shared Library 형태로 build
- CB-Spider API를 이용하여 Server에 등록 및 활용
- Server On-Line 시 신규 Driver 추가 및 업데이트 가능
- Static Driver
-
Cloud Driver 개발 방법
- Go Interface 및 Dynamic Plugin
-
개발 언어 및 CSP API
- Cloud Driver: Go 언어
- CSP API:
- CSP Go SDK 우선 활용
- CSP REST API 등 활용 가능
-
Cloud Driver Interface(Go)
-
Cloud Driver Examples
- Mock Driver: 시험용 드라이버, 메모리 기반 기능 동작 제공, VM 제어 불가
- Static Driver: https://github.com/cloud-barista/cb-spider/tree/master/cloud-control-manager/cloud-driver/drivers/mock
- Dynamic Plugin Driver: https://github.com/cloud-barista/cb-spider/tree/master/cloud-control-manager/cloud-driver/drivers/mock-plugin
Develop Guide
-
CSP별 메타 정보 설정
-
ID Mapping: Spider ID <-> CSP ID
-
VPC 생성 주요 흐름
- VPCHandler.CreateVPC() interface를 구현
- CSP API 이용한 VPC 생성 요청
- 필요시 VPC 내외부 통신이 가능하도록 설정
- CSP별로 추가적인 자원을 생성해야 할수도 있음
- 예시) AWS IGW(Internet Gateway) 생성
- CSP API 이용한 생성된 VPC에 바인딩 된 subnet 생성 요청
- 반환 정보 객체 VPCInfo 생성 및 반환
- 특이사항: VPC를 제공하지 않는 CSP 경우가 존재함
- 기본적으로 VPC 모델을 제공하며,
- 단일 VPC 개념으로 가상으로 내부 처리하여 타 CSP와 동일한 API flow를 제공
-
Security Group 제어 주요 고려 사항
- 설정 규칙 규격 변환: Spider rule spec <-> CSP rule spec
-
KeyPair 제어 주요 고려 사항
- KeyPair를 제공하지 않는 경우: driver 수준에서 관리
- Key 생성 및 VM launch시 VM에 Public Key 삽입 등
- 이를 위한 local public key 관리는 cb-store 활용하는 공통 함수 활용
- 참고
- KeyPair를 제공하지 않는 경우: driver 수준에서 관리
-
VM 제어 주요 고려 사항
- VM 사용자: cb-user
- cloud-init 또는 shell script를 이용한 cb-user 계정 생성 및 설정
- KeyPair 관리에서 생성한 public key 활용
- 참고: https://github.com/cloud-barista/cb-spider/wiki/CB-Spider-VM-User-Guide
- Root Disk Type 및 Size 증가 설정 제공
- VM 사용자: cb-user
-
GetXXX() 호출시 대상 자원이 존재하지 않는 경우 에러 메시지 규칙
-
CallLog for HisCall
- StartVM()
- TerminateVM()