argocd는 gitops 방식을 활용한 쿠버네티스 배포 도구입니다.
helm차트 같은 경우 차트 저장소와 value파일 저장소를 각각 지정하여 병합하여 배포할 수 있도록 지원해주고 있지만
만약 배포된 helm차트를 업그레이드 한다고 하면
app을 UI에서 직접 차트 버전을 수정하거나 app도 파일로 관리한다면 그에 맞춰 변경해야 하고
또 변경된 차트 버전에 맞게 values.yaml 파일도 같이 바꿔줘야 해서 번거로워 보인다.
그래서 부모-자식 차트 구조를 만들어 배포하는 걸 추천한다.
적용하기
▪️ step 1) 빈 폴더에 Chart.yaml 파일 하나를 생성한다.
apiVersion: v2
name: < 배포하고자 하는 차트의 이름 >
description: 설명 작성
type: application
version: < 배포하고자 하는 차트의 버전 >
appVersion: < 배포하고자 하는 차트의 버전 >
이름, 버전, 앱버전 모두 실제로 배포하고자 하는 차트 이름으로 동일하게 가져가는 것이 관리하기 편해 보여 그렇게 지정했지만
다르게 설정한다고 해서 문제 되지는 않는다.
▪️ step 2) 배포하고자 하는 차트의 이름을 dependencies에 추가한다.
apiVersion: v2
name: < 배포하고자 하는 차트의 이름 >
description: 설명 작성
type: application
version: < 배포하고자 하는 차트의 버전 >
appVersion: < 배포하고자 하는 차트의 버전 >
dependencies: # <-- 여기 추가
- name: chart-name
version: "chartversion.1.1.1"
repository: "https://example.com/charts"
#repository: "oci://example.com/charts"
dependencies에 실제로 배포하고자 하는 차트의 정보를 적어주면 된다
이때 버전은 앱 버전이 아닌 차트 버전이다
▪️ step 3) 배포하고자 하는 차트의 default values.yaml 파일을 가져온다.
chart-name:
# helm-docs renders these comments into markdown. Use markdown formatting where
# appropiate.
#
# -- The number of Crossplane pod `replicas` to deploy.
replicas: 1
# -- The deployment strategy for the Crossplane and RBAC Manager pods.
deploymentStrategy: RollingUpdate
image:
# -- Repository for the Crossplane pod image.
repository: xpkg.upbound.io/crossplane/crossplane
# -- The Crossplane image tag. Defaults to the value of `appVersion` in `Chart.yaml`.
tag: ""
# -- The image pull policy used for Crossplane and RBAC Manager pods.
pullPolicy: IfNotPresent
# -- Add `nodeSelectors` to the Crossplane pod deployment.
nodeSelector: {}
# -- Add `tolerations` to the Crossplane pod deployment.
tolerations: []
# -- Add `affinities` to the Crossplane pod deployment.
affinity: {}
values 값들을 한 칸 들여 쓰기 한 뒤 맨 상위에 dependencies에 적어준 이름을 맞춰서 적어주면 된다.
values 값은 아래처럼 차트 저장소에서 복사해 올 수 있다.
이대로 만들어서 소스 저장소에 push 한 뒤 해당 경로를 바라보도록
app을 생성하면 helm차트도 gitops 방식으로 배포가 가능하다.
사실 이렇게 하지 않아도 gitops 방식으로 배포는 가능하지만
이렇게 구성하게 된건이유가 있는데
만약 다음 버전으로 업그레이드를 한다고 하면 어디서부터 어디까지 바뀐건지 보기어렵고
나는 검증하면서 봤다고 하더라 해도 실제로 라이브 환경에 변경을 가하기 전에 검토를 받으면서 다른 사람들도 리뷰를 편하게 하기 위해 helm차트 내부의 기타 다른 template 들은 잘 보지 않게 되니
그런 파일들 없이 리뷰할 수 있도록 구조를 가져가다보니 나오게 된 방식이다.
'K8S > argocd' 카테고리의 다른 글
argocd의 로컬 계정 비밀번호 고정하기 (admin 비번 고정 방법) (0) | 2024.09.17 |
---|---|
ArgoCD에 EKS 클러스터를 등록하는 3가지 방법 (0) | 2024.09.10 |
argocd 코드 수정을 위해 로컬에서 빌드하기 (feat OSSCA) (0) | 2024.08.17 |
argocd 플러그인(CMP) 추가로 istio 배포하기 (1) | 2024.02.11 |
argocd를 argocd로 배포하기 (gitops로 관리하기) (1) | 2024.02.10 |