Customizing configurations
Decapod-site를 배포할 환경에 맞게 수정하여 Argo CD app들에서 참조할 decapod-manifests를 생성한다.
사전 준비
- decapod-site를 자신의 repo로 fork한다.
- 렌더링된 decapod-manifests를 저장할 repository를 생성한다.
- 예: github.com/{YOUR_REPO_NAME}/decapod-manifest.git
신규 사이트 생성
$ git clone https://github.com/{YOUR_REPO_NAME}/decapod-site.git
$ cd decapod-site
$ ./create_site.sh <SITE_NAME>
Cloning into '.base-yaml'...
remote: Enumerating objects: 146, done.
remote: Counting objects: 100% (146/146), done.
remote: Compressing objects: 100% (106/106), done.
remote: Total 533 (delta 54), reused 101 (delta 29), pack-reused 387
Receiving objects: 100% (533/533), 187.43 KiB | 2.53 MiB/s, done.
Resolving deltas: 100% (186/186), done.
$ ls <SITE_NAME>
admin-tools cloud-console lma openstack service-mesh
Configuration 수정
Note
이 문서는 LMA 관련 설정을 커스터마이즈하는 예시이다. service-mesh, openstack 등은 site-values.yaml 내용이 다르므로 각 site-values.yaml 파일 내용을 보고 수정해야한다.
decapod-site/<SITE_NAME>/lma/site-values.yaml:
-
글로벌 변수
글로벌 변수는 site-values.yaml 파일 내에서 재사용 가능한 변수이다. 여러 차트에서 동일하게 사용되야하는 변수의 경우 global에 정의하여$(GLOBAL_VAR_NAME)
형식으로 사용할 수 있다.6 7 8 9 10 11 12 13 14 15 16
global: nodeSelector: taco-lma: enabled clusterName: cluster.local storageClassName: taco-storage repository: https://openinfradev.github.io/hanu-helm-repo/ serviceScrapeInterval: 30s defaultPassword: password defaultUser: taco thanosObjstoreSecret: taco-objstore-secret thanosPrimaryCluster: false
-
차트별 변수
IP와 Storage Size와 같은 설정을 환경에 맞게 바꿔준다. 아래는 prometheus의 값을 override하는 예시이다.25 26 27 28 29 30 31 32 33
- name: prometheus override: kubeEtcd.endpoints: - 172.27.1.222 prometheus.prometheusSpec.storageSpec.volumeClaimTemplate.spec.storageClassName: $(storageClassName) prometheus.prometheusSpec.storageSpec.volumeClaimTemplate.spec.resources.requests.storage: 10Gi prometheus.prometheusSpec.retention: 2d prometheus.prometheusSpec.externalLabels.taco_cluster: dev prometheus.prometheusSpec.nodeSelector: $(nodeSelector)
Local Build(rendering)
Note
로컬 환경에서 빌드하기 위해서는 docker
가 설치되어 있어야한다.
로컬 빌드는 단순히 documentation 검증을 위한 절차이며,
로컬에서 빌드된 결과물이 decapod-manifests와 같은 github repository에 push되어야 실제 배포가 가능하다.
decapod-site/.github/workflows/render-cd.sh
파일을 사용하여 빌드한다.
$ cd decapod-site
$ .github/workflows/render-cd.sh --base-url <DECAPOD-BASE-URL>
# 특정 site에 대해서만 rendering할 경우
$ .github/workflows/render-cd.sh --base-url <DECAPOD-BASE-URL> --site <YOUR-SITE-NAME>
실제 배포를 위해서는 빌드된 최종 결과물을 미리 생성해놓은 'decapod-manifest' repository로 push해준다
$ cd <YOUR-DECAPOD-SITE-DIRECTORY>
$ cd output # 'output' is directory for output manifests
$ mv ./* <YOUR-DECAPOD-MANIFEST_DIRECTORY>/
$ cd <YOUR-DECAPOD-MANIFEST_DIRECTORY>
$ git commit
$ git push
자동 Build
Decapod-site는 Github Action을 통해 빌드를 자동화하였다. Repository에 pull request가 생성되어 main branch에 merge되면, 렌더링된 결과물이 decapod-manifest repo로 자동으로 push 되며, 자세한 내용은 여기를 참고할 수 있다.