Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Config: YAML vs. env var #14

Open
jihoon-seo opened this issue Mar 19, 2020 · 2 comments
Open

Config: YAML vs. env var #14

jihoon-seo opened this issue Mar 19, 2020 · 2 comments

Comments

@jihoon-seo
Copy link
Member

jihoon-seo commented Mar 19, 2020

현재:

[CB-Spider]

[setup.env]

export CBSPIDER_ROOT=$GOPATH/src/github.com/cloud-barista/cb-spider
export CBSTORE_ROOT=$GOPATH/src/github.com/cloud-barista/cb-spider
export CBLOG_ROOT=$GOPATH/src/github.com/cloud-barista/cb-spider

[store_conf.yaml]

storetype: NUTSDB
#storetype: ETCD

nutsdb:
  dbpath: "$CBSTORE_ROOT/meta_db/dat"
  segmentsize: 1048576  # 1048576 1024*1024 (1MB)

etcd:
  etcdserverport: "129.254.175.43:2379"

[log_conf.yaml]

cblog:
  ## true | false
  loopcheck: false # This temp method for development is busy wait. cf) cblogger.go:levelSetupLoop().

  ## debug | info | warn | error
  loglevel: info # If loopcheck is true, You can set this online.

  ## true | false
  logfile: true

## Config for File Output ##
logfileinfo:
  filename: ./log/cblogs.log
  maxsize: 10 # megabytes
  maxbackups: 50
  maxage: 31 # days

[CB-Tumblebug]

[setup.env]

export CBSTORE_ROOT=$GOPATH/src/github.com/cloud-barista/cb-tumblebug
export CBLOG_ROOT=$GOPATH/src/github.com/cloud-barista/cb-tumblebug
export SPIDER_URL=http://localhost:1024

[store_conf.yaml]

상동

[log_conf.yaml]

상동

env var 로 되어 있는 것은
docker run 이나 docker-compose up 으로 Spider, TB 실행할 때
손쉽게 변경할 수 있는데,

yaml 안에 있는 것은

  1. yaml 파일을 수정하고 컨테이너 이미지를 다시 만들어서 실행 (매우 안 좋은 방법)
  2. Dockerfilesed 명령을 넣어서 변경 (사실 1번과 동일함)
  3. 호스트 머신에 있는 yaml 파일을 수정하고, Docker 의 volume mount 기능을 이용하여, 컨테이너 실행

등의 방법으로 수정하여 실행할 수 있겠습니다.


그런데 장기적으로 생각해 보면
CB 시스템을 Helm chart 로 작성하여 K8s 클러스터에 배포할 것이기 때문에
이를 고려해야 합니다.

Helm 에는 values.yaml 파일이 있고,
https://helm.sh/docs/chart_template_guide/values_files/
여기를 보면

values.yaml

favoriteDrink: coffee

이렇게 적고

K8s ConfigMap template 에

apiVersion: v1
kind: ConfigMap
metadata:
  name: {{ .Release.Name }}-configmap
data:
  myvalue: "Hello World"
  drink: {{ .Values.favoriteDrink }}

이렇게 적으면

apiVersion: v1
kind: ConfigMap
metadata:
  name: good-puppy-configmap
data:
  myvalue: "Hello World"
  drink: coffee

이렇게 K8s ConfigMap yaml 로 render 된다고 합니다.


[K8s ConfigMap]
https://arisu1000.tistory.com/27843

ConfigMap 에 써 있는 값들은
K8s 컨테이너에

  1. 환경 변수로 적용되거나 (예: DEBUG_LEVEL=debug)
  2. 컨테이너 안의 임의의 경로(예: /etc/config)에 파일 형태로 (예: DB_URL 이라는 파일, 내용은 http://...

둘 중 하나의 형태로 적용됩니다.

2번 보다는 1번이 더 좋을 것 같구요

요약하면, Helm chart 의 values.yaml 에 적혀 있는 값은
결국 K8s 컨테이너에는 env var 로 적용된다는 것입니다.


위의 사유로,
store_conf.yaml 을 통해 설정하도록 되어 있는 설정값들을
env var 를 통해 설정하도록 변경하는 것이 어떨까 하여 이슈를 작성합니다.

(Spider, TB 등을 컨테이너로 띄울 때
nutsdb 대신 etcd를 사용하려고 하니
해당 설정값이 yaml 파일 안에 있어서.. 발생한 사안입니다.)

Ref: @powerkimhub @seokho-son

@powerkimhub
Copy link
Member

@jihoon-seo 현재에도 유효한 이슈인가요?

@jihoon-seo
Copy link
Member Author

아콘에서 Helm chart 초안을 만드셨는데요,
아콘과도 논의를 해 봐야 할 것 같습니다.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants