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 ์ฆ๊ฐ ์ค์ ์ ๊ณต
- CSP๋ณ ์ ๊ณต ํํฉ ๋ฐ ๊ฐ์ ์ฐธ๊ณ : https://github.com/cloud-barista/cb-spider/wiki/API-and-features-of-VM-rootfs-volume-configuration
- ์ค๊ณ ์ฐธ๊ณ : https://github.com/cloud-barista/cb-spider/files/7509505/CB-Spider.VM.Root.Disk.-2021.11.04.pptx
- ๊ฐ๋ฐ ๊ฐ์ด๋ ์ฐธ๊ณ
- ๊ฐ๋ฐ ํํฉ ์ฐธ๊ณ : #348, #536
- Test Case ๋ฐ ์ํ ๊ฒฐ๊ณผ
- VM ์ฌ์ฉ์: cb-user
-
GetXXX() ํธ์ถ์ ๋์ ์์์ด ์กด์ฌํ์ง ์๋ ๊ฒฝ์ฐ ์๋ฌ ๋ฉ์์ง ๊ท์น
- ์๋ฌ ๋ฉ์์ง ํฌํจ ๋ฌธ์ฅ ์ฐธ๊ณ : https://github.com/cloud-barista/cb-spider/blob/69206bb4ff2b830bb2944d344a6526f119d839b5/api-runtime/common-runtime/CCMCommon.go#L1243
- ์ฌ์ : https://github.com/cloud-barista/cb-spider/issues/658
-
CallLog for HisCall
- StartVM()
- CallLog time ์ธก์ ์์น ์ฐธ์กฐ: https://github.com/cloud-barista/cb-spider/wiki/StartVM-and-TerminateVM-Main-Flow-of-Cloud-Drivers
- TerminateVM()
- StartVM()