[k8s project] CI/CD Pipeline 구현 - ArgoCD를 사용한 CD 구축
Contents
CD
- Continuous Deployment
- 변경 사항을 자동으로 배포/릴리스 참고자료
ArgoCD를 사용하여 k8s cluster 배포 자동화
- kustomization 파일을 통해 쿠버네티스 오브젝트를 사용자가 원하는 대로 변경하는(customize) 독립형 도구
설치
|
|
사용법
파일 구성
/base
/base/back-test-deployment.yaml
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
apiVersion: apps/v1 kind: Deployment metadata: name: api-server spec: replicas: 3 selector: matchLabels: app: api-server template: metadata: name: api-server-pod labels: app: api-server spec: containers: - name: api-server image: api-server-image ports: - containerPort: 8080
/base/kustomization.yaml
1 2 3 4
apiVersion: kustomize.config.k8s.io/v1beta1 kind: Kustomization resources: - deployment.yaml
/overlay
/overlay/kustomization.yaml
1 2 3 4 5 6 7
apiVersion: apps/v1 kind: Deployment metadata: name: api-server spec: containers: - name: api-server-image
/overlay/back-test-deployment-patch.yaml
1 2 3 4 5 6 7 8 9 10
apiVersion: kustomize.config.k8s.io/v1beta1 kind: Kustomization patchesStrategicMerge: - back-test-deployment-patch.yaml resources: - ../../base images: - name: api-server-image newName: plox/modoosugang_server newTag: "7"
kustomize시 base와 overlay/dev 내용이 merge되면서 manifest파일이 생성됨
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
$ kustomize build overlay/dev apiVersion: apps/v1 kind: Deployment metadata: name: api-server spec: containers: - name: api-server-image minReadySeconds: 5 replicas: 2 selector: matchLabels: app: api-server template: metadata: labels: app: api-server name: api-server-pod spec: containers: image: **plox/modoosugang_server:7 # < - ./overlay/dev/kustomization.yaml 파일 내용 merge** name: api-server ports: - containerPort: 8080 ``` Kustomize에 대한 자세한 설명은 [이곳](https://velog.io/@pullee/Kustomize%EB%A1%9C-K8S-%EB%A6%AC%EC%86%8C%EC%8A%A4-%EA%B4%80%EB%A6%AC%ED%95%98%EA%B8%B0)에 자세히 설명한 글이 있어 참고하였음.
ARGO CD
- Github repo에 Kustomize위한 계층 구조 생성
- manifest 파일 자동 업데이트 설정
- Jenkinsfile을 통해 구현되었음(링크)
- Argo CD에서 Create App
배포 결과