Skip to content

Features and usages

Sooyoung Kim edited this page Dec 19, 2022 · 12 revisions

Introduction

그림에서 보는 바와 같이, 사용자는 필요에 따라 CB-Ladybug를 이용하여 멀티클라우드 상에 애플리케이션 실행환경인 쿠버네티스 클러스터를 여러 개 생성할 수 있으며, 사용자는 해당 쿠버네티스 클러스터에 접근하여 기존과 동일한 방식으로 쿠버네티스 클러스터를 활용할 수 있다.


그림: CB-Ladybug MCKS(Multi-Cloud Kubernetes Service) 개요도

Dependencies

CB-Ladybug의 구동을 위해서는 먼저 CB-Spider와 CB-Tumblebug의 설치가 필요하고, 멀티클라우드 연결을 위한 연결 설정 정보 등록이나 네임스페이스 생성 등 몇 가지 사전 작업이 필요하다. CB-Spider와 CB-Tumblebug에서 생성해야 할 항목들에 관한 상세한 내용은 아래 링크를 통해 확인할 수 있다.

상기 사전 작업은 아래의 자료를 참고하여 수행해 볼 수 있으며, 다음 절에 설명된 CB-Ladybug의 REST API를 손쉽게 호출할 수 있는 스크립트도 확인할 수 있다.

Features

멀티클라우드 쿠버네티스 클러스터 생성

  • 사용자는 쿠버네티스 클러스터를 구성할 노드들의 실제 영역 설정 정보(클라우드 연결 정보)와 각 노드들의 사양(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" 
                } 
            ]
        }
      

멀티클라우드 쿠버네티스 클러스터 목록 확인

  • 사용자는 생성한 멀티클라우드 쿠버네티스 클러스터들의 목록을 확인할 수 있다.
  • 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'
      

멀티클라우드 쿠버네티스 클러스터 정보 및 쿠버네티스 접속 정보 확인

  • 사용자는 생성한 멀티클라우드 쿠버네티스 클러스터의 정보를 확인할 수 있다.
  • 결과로 수신한 자료에 쿠버네티스 접속 정보(.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
      

멀티클라우드 쿠버네티스 클러스터 삭제

  • 사용자는 생성한 멀티클라우드 쿠버네티스 클러스터를 삭제할 수 있다.
  • 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'
      

멀티클라우드 쿠버네티스 클러스터에 노드 추가

  • 사용자는 기존 멀티클라우드 쿠버네티스 클러스터에 신규 노드를 추가할 수 있다.
  • 노드 추가시 주요 입력 정보는 다음과 같다.
    • worker: 쿠버네티스의 워커 노드 구성 정보로, 서로 다른 클라우드 상에 워커 노드들로도 구성이 가능함
      • connection: 워커 노드가 생성될 클라우드 접속 정보. 예시) config-aws-ap-northeast-1
      • count: 워커 노드의 수. 예시) 1
      • spec: 워커 노드들의 사양이며, 해당 클라우드에서 제공되는 사양 정보가 기재되어야 함. 예시) t2.small
  • 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" 
                } 
            ]
        }
      

멀티클라우드 쿠버네티스 클러스터에서 노드 목록 확인

  • 사용자는 멀티클라우드 쿠버네티스 클러스터에 포함된 노드 목록을 확인할 수 있다.
  • 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'
      

멀티클라우드 쿠버네티스 클러스터에서 노드 정보 확인

  • 사용자는 멀티클라우드 쿠버네티스 클러스터에 포함된 노드의 정보를 확인할 수 있다.
  • 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'
      

멀티클라우드 쿠버네티스 클러스터에서 노드 삭제

  • 사용자는 멀티클라우드 쿠버네티스 클러스터에 포함된 노드의 정보를 확인할 수 있다.
  • 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'
      
Clone this wiki locally