Skip to main content

Configuration

Kupboard의 설정파일은 yaml 포맷으로 작성되며 확장자는 .yaml이 되어야 한다. 설정파일에는 버전, 메타정보, 글로벌 변수들 그리고 전체 클러스터 구성까지 다양한 정보가 정의된다.

note

설정파일의 기본 이름은 kupboard.yaml이며, 프로젝트 또는 서비스 별로 설정파일을 구성하여 사용할 수 있다. 만약 kupboard.yaml이 아닌 다른 이름을 사용할 경우에는 kupboard 명령어를 사용할 때 --config <config-name>과 같이 설정파일의 이름(확장자가 생략된)을 지정해야 한다.

Basic Structure#

설정파일은 version, metadata, vars 그리고 cluster로 구성된다.

version: v0.1
metadata:
name: myproject
company: mycompany
vars:
## Project Information
...
## Secrets
...
## User-defined Vars
...
cluster:
admin:
...
gateway:
...
service:
...
storage:
...
elastic:
...

Version#

version은 설정파일의 버전을 명시한다.

version: v0.1

Metadata#

metadata에는 namecompany가 반드시 정의되어야 하며, 이외에 사용자가 원하는 meta정보를 추가할 수 있다.

metadata:
name: hello kupboard
company: mycompany
name1: value1
name2: value2
  • name 프로젝트명 또는 서비스명
  • company 회사명

Global Variables#

vars 블럭은 다양한 변수가 정의될 수 있으며, 이렇게 정의된 변수들은 kupboard 내부와 디폴트 Kollection, 그리고 사용자가 생성하거나 다운로드 받은 Kollection에서 참조되어 사용될 수 있다.

필수로 정의되어야 하는 글로벌변수에는 Project InformationSecrets 항목이 있다.

## Global Variables
##
vars:
name1: value1
name2: value2

Project Information#

Project Information은 글로벌변수의 일부로 정의되며 Kupboard가 전체 서비스를 운영하기 위해서 필요한 정보이다.

레지스트리 패키지에 대한 자세한 내용은 Harbor Package를 참고한다.

## Project Information
##
kbd_service_domain: mycompany.com
kube_enable_rook: true
kube_namespace: myproject
kube_registry_username: kupboard
kube_registry_password: Kupboard1234
kube_registry_email: username@email.com
kube_registry_domain: harbor.mycompany.com
kube_registry_url: harbor.mycompany.com/myproject
note

kube_registry_password should be 8-20 characters long with at least 1 uppercase, 1 lowercase and 1 number.

Secrets#

Secrets은 글로벌변수의 일부로 정의되며 디폴트 Kollection Package로 설치되는 오픈소스솔루션에 접근하기 위해 사용된다.

## Secrets
##
grafana_admin_password: kupboard
harbor_admin_password: kupboard
argocd_admin_password: kupboard
mysql_root_password: kupboardroot
mysql_user_password: kupboard1234
mongodb_root_password: kupboardroot
redis_root_password: kupboardroot
influxdb_root_password: kupboardroot
minio_access_key: kupboard
minio_secret_key: kupboard1234
keycloak_admin_password: kupboard

Cluster#

cluster 블럭은 kupboard 플랫폼의 전체 클러스터를 구성하는 서버들의 public ip와 private ip정보가 정의된다. 클러스터의 구성은 사용자가 원하는 구성으로 정의가 가능하다. 만약 테스트 또는 데모 용도로 구성하고 싶다면 위와 같이 6개의 서버로 구성이 가능하지만, 관리와 운영을 위한 다양한 솔루션을 설치하고 여러가지 서비스를 제공하기 위해서는 Gateway서버를 3개로 구성하고 Service클러스터도 4개 이상으로 구성할 수 있다. Data Plane을 독립적으로 구축하고 싶다면 Storage 클러스터를 별도로 구성할 수 있고, Elastic클러스터도 추가할 수 있다. 단, admin 클러스터의 서버는 1개이어야 한다.

## Cluster Definition
##
cluster:
admin:
- name: admin-node1
public_ip: x.x.x.x
private_ip: x.x.x.x
gateway:
- name: gateway-node1
public_ip: x.x.x.x
private_ip: x.x.x.x
service:
- name: service-node1
public_ip: x.x.x.x
private_ip: x.x.x.x
- name: service-node2
public_ip: x.x.x.x
private_ip: x.x.x.x
- name: service-node3
public_ip: x.x.x.x
private_ip: x.x.x.x
- name: service-node4
public_ip: x.x.x.x
private_ip: x.x.x.x
elastic:
- name: elastic-node1
public_ip: x.x.x.x
private_ip: x.x.x.x

Example 1#

cluster:
admin:
- name: admin-node1
public_ip: x.x.x.x
private_ip: x.x.x.x
service:
- name: service-node1
public_ip: x.x.x.x
private_ip: x.x.x.x
- name: service-node2
public_ip: x.x.x.x
private_ip: x.x.x.x
- name: service-node3
public_ip: x.x.x.x
private_ip: x.x.x.x

Example 2#

cluster:
admin:
- name: admin-node1
public_ip: x.x.x.x
private_ip: x.x.x.x
gateway:
- name: gateway-node1
public_ip: x.x.x.x
private_ip: x.x.x.x
service:
- name: service-node1
public_ip: x.x.x.x
private_ip: x.x.x.x
- name: service-node2
public_ip: x.x.x.x
private_ip: x.x.x.x
- name: service-node3
public_ip: x.x.x.x
private_ip: x.x.x.x
- name: service-node4
public_ip: x.x.x.x
private_ip: x.x.x.x

Example 3#

cluster:
admin:
- name: admin-node1
public_ip: x.x.x.x
private_ip: x.x.x.x
gateway:
- name: gateway-node1
public_ip: x.x.x.x
private_ip: x.x.x.x
service:
- name: service-node1
public_ip: x.x.x.x
private_ip: x.x.x.x
- name: service-node2
public_ip: x.x.x.x
private_ip: x.x.x.x
- name: service-node3
public_ip: x.x.x.x
private_ip: x.x.x.x
- name: service-node4
public_ip: x.x.x.x
private_ip: x.x.x.x
- name: service-node5
public_ip: x.x.x.x
private_ip: x.x.x.x

Custom Cluster#

You can also add clusters with names you want as shown in the following example.

## Cluster Definition
##
cluster:
admin:
- name: admin-node1
public_ip: x.x.x.x
private_ip: x.x.x.x
finance:
- name: finance-node1
public_ip: x.x.x.x
private_ip: x.x.x.x
- name: finance-node2
public_ip: x.x.x.x
private_ip: x.x.x.x
blockchain:
- name: blockchain-node1
public_ip: x.x.x.x
private_ip: x.x.x.x

Hostname#

kupboard는 cluster 블럭에 정의된 서버들은 <cluster-name>-node#과 같은 naming rule에 의해서 구분되어 사용된다. 예를 들어 admin 클러스터의 첫번재 서버는 admin-node1로 구분된다. 그리고 service 클러스터의 서버들은 service-node1, service-node2, service-node3, service-node4가 된다.