-
Notifications
You must be signed in to change notification settings - Fork 11
Features and usages
Sooyoung Kim edited this page Aug 18, 2021
·
12 revisions
그림: MCKS(Multi-Cloud Kubernetes Service) 개요도
그림에서 보는 바와 같이, CB-Ladybug를 이용하여 멀티클라우드 상에 애플리케이션 실행환경인 쿠버네티스 클러스터를 생성할 수 있으며, 사용자는 해당 쿠버네티스 클러스터에 접근하여 기존과 동일한 방식으로 쿠버네티스 클러스터를 활용할 수 있다.
CB-Ladybug의 구동을 위해서는 먼저 CB-Spider와 CB-Tumblebug의 설치가 필요하고, 멀티클라우드 연결을 위한 연결 설정 정보 등록이나 네임스페이스 생성 등 몇 가지 사전 작업이 필요하다. CB-Spider와 CB-Tumblebug에서 생성해야 할 항목들에 관한 상세한 내용은 아래 링크를 통해 확인할 수 있다.
상기 사전 작업은 아래의 자료를 참고하여 수행해 볼 수 있으며, 다음 절에 설명된 CB-Ladybug의 REST API를 손쉽게 호출할 수 있는 스크립트도 확인할 수 있다.
- 사용자는 쿠버네티스 클러스터를 구성할 노드들의 실제 영역 설정 정보(클라우드 연결 정보)와 각 노드들의 사양(Spec), 수량, 그리고 쿠버네티스 CNI 정보 등을 제공하여 멀티클라우드 쿠버네티스 클러스터를 생성할 수 있다.
- 클러스터 생성시 주요 입력 정보는 다음과 같다.
- name: 생성할 클러스터 이름. 예시) cluster-01
- kubernetes: 쿠버네티스 생성시 적용될 부가 설정 정보
- networkCni: kilo 또는 canal 중 선택. 예시) 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
- spec: 컨트롤 플레인 노드들의 사양이며, 해당 클라우드에서 제공되는 사양 정보가 기재되어야 함. 예시) t2.medium
- worker: 쿠버네티스의 워커 노드 구성 정보로, 서로 다른 클라우드 상에 워커 노드들로도 구성이 가능함
- connection: 워커 노드가 생성될 클라우드 접속 정보. 예시) config-aws-ap-northeast-1
- count: 워커 노드의 수. 예시) 1
- spec: 워커 노드들의 사양이며, 해당 클라우드에서 제공되는 사양 정보가 기재되어야 함. 예시) t2.small
- 각 노드의 이름은 클러스터 이름을 기반으로 자동 생성된다.
- API 활용 예시
- 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:8080/ladybug/ns/cb-ladybug-ns/clusters \ -H 'Content-Type: application/json' \ -d '{ "name": "cluster-01", "config": { "kubernetes": { "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, "spec": "t2.medium" } ], "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: Create a Cluster
- 사용자는 생성한 멀티클라우드 쿠버네티스 클러스터들의 목록을 확인할 수 있다.
- API 활용 예시
- REST API: List Clusters
$ curl -sX GET http://localhost:8080/ladybug/ns/cb-ladybug-ns/clusters \ -H 'Content-Type: application/json'
- REST API: List Clusters
- 사용자는 생성한 멀티클라우드 쿠버네티스 클러스터의 정보를 확인할 수 있다.
- 이때, 함께 전달되는 .clusterConfig 필드를 저장하여 kubectl를 통해 쿠버네티스에 접속할 수 있다.
- API 활용 예시
- REST API: Get a Cluster
$ curl -sX GET http://localhost:8080/ladybug/ns/cb-ladybug-ns/clusters/cluster-01 \ -H 'Content-Type: application/json'
- 쿠버네티스 접속 정보를 kubeconfig.yaml 파일로 저장 예시
$ curl -sX GET http://localhost:8080/ladybug/ns/cb-ladybug-ns/clusters/cluster-01 \ -H 'Content-Type: application/json' | jq -r ".clusterConfig" > kubeconfig.yaml
- REST API: Get a Cluster
- 사용자는 생성한 멀티클라우드 쿠버네티스 클러스터를 삭제할 수 있다.
- API 활용 예시
- REST API: Delete a Cluster
$ curl -sX DELETE http://localhost:8080/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 활용 예시
- REST API: Add Nodes
$ curl -sX POST http://localhost:8080/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 활용 예시
- REST API: List Nodes
$ curl -sX GET http://localhost:8080/ladybug/ns/cb-ladybug-ns/clusters/cluster-01/nodes \ -H 'Content-Type: application/json'
- REST API: List Nodes
- 사용자는 멀티클라우드 쿠버네티스 클러스터에 포함된 노드의 정보를 확인할 수 있다.
- API 활용 예시
- REST API: Get a Node
$ curl -sX GET http://localhost:8080/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 활용 예시
- REST API: Remove a Node
$ curl -sX DELETE http://localhost:8080/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