- CD
- Continuous Delivery : 상용 서비스에 전달까지만 하고, 배포는 담당자가 직접 수동으로 컨펌!
- Continuous Deployment : 상용 서비스에 배포까지 완전 자동화된... ㅎㄷㄷ
- GitOps
- 배포를 위해서 Git Repogitory 만을 단일한 Source으로 사용을 하면~
- 씸플하게 복잡도를 낮추고, 표준화된 자동화와 안정성을 가져 올 수 있다.
- 즉, 하나의 `배포 작업서`만 선언적으로 정의 하자는 컨셉.
- "선언적 시스템" 이란?
- k8s 와 같이, 리소스 관리를 일일이 명령하지 않고~
- manifest file을 정의하면... 시스템은 그 상태를 유지하기 위해 노력을 한다.
- 일반적으로, "개발 & 배포"의 용도가 다르니~ 각각에 저장소를 따로 사용한다.
- app 저장소 : 애플리케이션 소스코드 저장
- 코딩 -> 푸쉬 -> (CI 구현체) -> 컨테이터 빌드 -> 컨테이너 이미지 레파지토리 릴리즈
- config 저장소 : 쿠버네티스 매니페스트 저장
- 해당 매니페스트 수정 -> GitOps 동기화 -> k8s 클러스터 반영
- app 저장소 : 애플리케이션 소스코드 저장
- Argo CD
- 아르고 프로젝트 (https://argoproj.github.io) (https://medium.com/finda-tech/search?q=argo) 구현체.
- GitOps를 따르는 Continuous Delivery 구현한 K8S 배포 툴.
- 당연히 K8S Manifest(deployment.yaml, ingress.yaml, service.yaml, ... ) 를 지원 함.
- 일일이 각 환경 별로 작성을 하지않게... 편리한 템플릿(Kustomize, Helm, Ksonnet 등등) 도 지원 함.
- argocd-cli 설치 및 로그인
- brew tap argoproj/tap
- brew install argoproj/tap/argocd
- argocd login 도메인 --grpc-web --sso
- application 생성 및 설정
- 생성 : argocd app create {이름}
- 설정 :
- --repo {config git repogitory}
- --revision {config git target revision}
- --path {config git path}
- --dest-server {k8s 주소}
- --dest-namespace {k8s 네임스페이스}
- --sync-policy automated --auto-prune
- manifest 구조
- https://github.com/kangwoo/hello-go 및 hello-go-deploy 참고
- 구조 :
- - base
- deployment.yaml
- kustomization.yaml
- -overlays
- - dev
- deployment.yaml
- kustomization.yaml
- - prod
- deployment.yaml
- kustomization.yaml
- - dev
- - base
- // TODO :
- ...
-끝-
'DevOps' 카테고리의 다른 글
puckel Airflow V1 on K8S (0) | 2021.06.26 |
---|---|
git-sync (0) | 2021.06.26 |
CircleCI (0) | 2020.11.23 |
K8S 애플리케이션 (0) | 2020.07.19 |
K8S 리소스 (0) | 2020.07.17 |