-
Notifications
You must be signed in to change notification settings - Fork 11
Features and usages
Sooyoung Kim edited this page Dec 19, 2022
·
12 revisions
그림에서 보는 바와 같이, 사용자는 필요에 따라 CB-Ladybug를 이용하여 멀티클라우드 상에 애플리케이션 실행환경인 쿠버네티스 클러스터를 여러 개 생성할 수 있으며, 사용자는 해당 쿠버네티스 클러스터에 접근하여 기존과 동일한 방식으로 쿠버네티스 클러스터를 활용할 수 있다.
그림: CB-Ladybug MCKS(Multi-Cloud Kubernetes Service) 개요도
CB-Ladybug의 구동을 위해서는 먼저 CB-Spider와 CB-Tumblebug의 설치가 필요하고, 멀티클라우드 연결을 위한 연결 설정 정보 등록이나 네임스페이스 생성 등 몇 가지 사전 작업이 필요하다. CB-Spider와 CB-Tumblebug에서 생성해야 할 항목들에 관한 상세한 내용은 아래 링크를 통해 확인할 수 있다.
상기 사전 작업은 아래의 자료를 참고하여 수행해 볼 수 있으며, 다음 절에 설명된 CB-Ladybug의 REST API를 손쉽게 호출할 수 있는 스크립트도 확인할 수 있다.
- 사용자는 쿠버네티스 클러스터를 구성할 노드들의 실제 영역 설정 정보(클라우드 연결 정보)와 각 노드들의 사양(Spec), 수량, 그리고 쿠버네티스 CNI 정보 등을 제공하여 멀티클라우드 쿠버네티스 클러스터를 생성할 수 있다.
- 클러스터 생성시 주요 입력 정보는 다음과 같다.
- name: 생성할 클러스터 이름. 예시) cluster-01
- kubernetes: 쿠버네티스 생성시 적용될 부가 설정 정보
- version: 설치할 쿠버네티스 버전으로, 1.23.x 또는 1.18.y 중 선택. 예시) 1.23.14
- etcd: ETCD 토폴로지로, local 또는 external 중 선택. 예시) local
- loadbalancer: 컨트롤 플레인의 HA 제공 방식으로, haproxy 또는 nlb 중 선택. 예시) haproxy
- networkCni: kilo 또는 canal 중 선택 (멀티클라우드 타입), flannel 또는 calico 중 선택 (싱글클라우드 타입). 예시) kilo
- podCidr: 쿠버네티스 내 파드 객체에서 사용할 CIDR. 예시) 10.244.0.0/16
- serviceCidr: 쿠버네티스 내 서비스 객체에서 사용할 CIDR. 예시) 10.96.0.0/12
- serviceDnsDomain: 쿠버네티스 내 서비스 DNS Domain. 예시) cluster.local
- controlPlane: 쿠버네티스의 컨트롤 플레인 노드 구성 정보로, 서로 다른 클라우드 상에 컨트롤 플레인 노드들로도 구성이 가능함. 여러 개의 컨트롤 플레인 노드가 설정되면 HAProxy가 설치되어 가용성을 제공함
- connection: 컨트롤 플레인 노드가 생성될 클라우드 접속 정보. 예시) 예시) config-aws-ap-northeast-2
- count: 컨트롤 플레인 노드의 수. 예시) 1
- rootDisk: 컨트롤 플레인 노드의 루트 디스크 크기와 타입. 예시) default
- spec: 컨트롤 플레인 노드들의 사양이며, 해당 클라우드에서 제공되는 사양 정보가 기재되어야 함. 예시) t2.medium
- worker: 쿠버네티스의 워커 노드 구성 정보로, 서로 다른 클라우드 상에 워커 노드들로도 구성이 가능함
- connection: 워커 노드가 생성될 클라우드 접속 정보. 예시) config-aws-ap-northeast-1
- count: 워커 노드의 수. 예시) 1
- rootDisk: 워커 노드의 루트 디스크 크기와 타입. 예시) default
- spec: 워커 노드들의 사양이며, 해당 클라우드에서 제공되는 사양 정보가 기재되어야 함. 예시) t2.small
- 각 노드의 이름은 클러스터 이름을 기반으로 자동 생성된다.
- API 활용 예시 (참고: cluster-create.sh)
- REST API: Create a Cluster
# 연결 정보(config-aws-ap-northeast-1, config-aws-ap-northeast-2) 및 네임스페이스(cb-ladybug-ns) 사전 등록 완료 # 아마존 AWS의 ap-northeast-2에 쿠버네티스 클러스터의 컨트롤 플레인 노드 1개와 워커 노드 1개, 그리고 ap-northeast-1에 워커 노드 1개로 구성된 쿠버네티스 클러스터 생성 요청 $ curl -sX POST http://localhost:1470/ladybug/ns/cb-ladybug-ns/clusters \ -H 'Content-Type: application/json' \ -d '{ "name": "cluster-01", "config": { "kubernetes": { "version": "1.23.14" "etcd": "local", "loadbalancer": "haproxy", "networkCni": "kilo", "podCidr": "10.244.0.0/16", "serviceCidr": "10.96.0.0/12", "serviceDnsDomain": "cluster.local" } }, "controlPlane": [ { "connection": "config-aws-ap-northeast-2", "count": 1, "rootDisk": { "size": "default", "type": "default" }, "spec": "t2.medium" } ], "worker": [ { "connection": "config-aws-ap-northeast-1", "count": 1, "rootDisk": { "size": "default", "type": "default" }, "spec": "t2.small" }, { "connection": "config-aws-ap-northeast-2", "count": 1, "rootDisk": { "size": "default", "type": "default" }, "spec": "t2.small" } ] }
- REST API: Create a Cluster
- 사용자는 생성한 멀티클라우드 쿠버네티스 클러스터들의 목록을 확인할 수 있다.
- API 활용 예시 (참고: cluster-list.sh)
- REST API: List Clusters
$ curl -sX GET http://localhost:1470/ladybug/ns/cb-ladybug-ns/clusters \ -H 'Content-Type: application/json'
- REST API: List Clusters
- 사용자는 생성한 멀티클라우드 쿠버네티스 클러스터의 정보를 확인할 수 있다.
- 결과로 수신한 자료에 쿠버네티스 접속 정보(.clusterConfig 필드)가 포함되어 있으며, 이를 통해 해당 쿠버네티스에 접속할 수 있다.
- API 활용 예시 (참고: cluster-get.sh)
- REST API: Get a Cluster
$ curl -sX GET http://localhost:1470/ladybug/ns/cb-ladybug-ns/clusters/cluster-01 \ -H 'Content-Type: application/json'
- 쿠버네티스 접속 정보를 kubeconfig.yaml 파일로 저장 예시
$ curl -sX GET http://localhost:1470/ladybug/ns/cb-ladybug-ns/clusters/cluster-01 \ -H 'Content-Type: application/json' | jq -r ".clusterConfig" > kubeconfig.yaml
- REST API: Get a Cluster
- 사용자는 생성한 멀티클라우드 쿠버네티스 클러스터를 삭제할 수 있다.
- API 활용 예시 (참고: cluster-delete.sh)
- REST API: Delete a Cluster
$ curl -sX DELETE http://localhost:1470/ladybug/ns/cb-ladybug-ns/clusters/cluster-01 \ -H 'Content-Type: application/json'
- REST API: Delete a Cluster
- 사용자는 기존 멀티클라우드 쿠버네티스 클러스터에 신규 노드를 추가할 수 있다.
- 노드 추가시 주요 입력 정보는 다음과 같다.
- worker: 쿠버네티스의 워커 노드 구성 정보로, 서로 다른 클라우드 상에 워커 노드들로도 구성이 가능함
- connection: 워커 노드가 생성될 클라우드 접속 정보. 예시) config-aws-ap-northeast-1
- count: 워커 노드의 수. 예시) 1
- spec: 워커 노드들의 사양이며, 해당 클라우드에서 제공되는 사양 정보가 기재되어야 함. 예시) t2.small
- worker: 쿠버네티스의 워커 노드 구성 정보로, 서로 다른 클라우드 상에 워커 노드들로도 구성이 가능함
- API 활용 예시 (참고: node-add.sh)
- REST API: Add Nodes
$ curl -sX POST http://localhost:1470/ladybug/ns/cb-ladybug-ns/clusters/cluster-01/nodes \ -H 'Content-Type: application/json' \ -d '{ "worker": [ { "connection": "config-aws-ap-northeast-1", "count": 1, "spec": "t2.small" }, { "connection": "config-aws-ap-northeast-2", "count": 1, "spec": "t2.small" } ] }
- REST API: Add Nodes
- 사용자는 멀티클라우드 쿠버네티스 클러스터에 포함된 노드 목록을 확인할 수 있다.
- API 활용 예시 (참고: node-list.sh)
- REST API: List Nodes
$ curl -sX GET http://localhost:1470/ladybug/ns/cb-ladybug-ns/clusters/cluster-01/nodes \ -H 'Content-Type: application/json'
- REST API: List Nodes
- 사용자는 멀티클라우드 쿠버네티스 클러스터에 포함된 노드의 정보를 확인할 수 있다.
- API 활용 예시 (참고: node-get.sh)
- REST API: Get a Node
$ curl -sX GET http://localhost:1470/ladybug/ns/cb-ladybug-ns/clusters/cluster-01/nodes/cluster-01-cluster-01-w-1-rw7mc \ -H 'Content-Type: application/json'
- REST API: Get a Node
- 사용자는 멀티클라우드 쿠버네티스 클러스터에 포함된 노드의 정보를 확인할 수 있다.
- API 활용 예시 (참고: node-remove.sh)
- REST API: Remove a Node
$ curl -sX DELETE http://localhost:1470/ladybug/ns/cb-ladybug-ns/clusters/cluster-01/nodes/cluster-01-cluster-01-w-1-rw7mc \ -H 'Content-Type: application/json'
- REST API: Remove a Node
-
Design
-
User Guide
-
Developer Guide
-
Test Reports