k8s - gitops
- k8s app 배포시 모든 소스를 git에 올려놓고 git을 중심으로 변경관리를 진행한다.
application 변경
- git 의 소스를 checkout 받는다.
- application 을 변경 > 로컬테스트를 수행한다.
- 이상이 없으면 git에 커밋한다.
- jenkins에서 빌드를 수행 후 *.jar파일을 도커 image로 만들어 Harbor같은 image registry에 push 해 놓는다.
k8s - deployment 작성
- helm chart 등 deployment/service/configmap 등 작성한다.
- 변수는 values.yaml에 저장한다.
- deployment의 image는 Harbor같은 registry 의 image를 참조하도록 한다.
k8s 배포
- argocd 를 설치한다.
- k8s 환경이 개발 / 이관 / 운영으로 landscape가 나눠져 있을 경우, 각 landscape에 argocd를 설치한다.
- 각 landscape의 argocd의 repository는 같은 git을 바라본다.
- 여기서, values.yaml 이 개발/이관/운영마다 환경이 다를 수 있다.
- landscape 환경에 영향을 받는 변수는 config-map을 사용해서 변수화 할 수 있고,
- values.yaml 을 통해서만 변수화를 해야하는 경우는, values-dev.yaml, values-test.yaml, values-prod.yaml 등으로 landscape별로 각각 만든다.
- 예) ingress hostname의 경우, 개발-dwww.test.com, 운영-www.test.com 처럼
- argocd 에서 application을 create할때, values 파일을 landscape에 맞게 지정하여 생성해 준다.
k8s 기본 명령어
$> k get pod -n test
$> k get configmap -n test
$> k apply -f configmap.yaml -n test
$> k apply -f deployment.yaml -n test