일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 29 | 30 |
- slack app
- cloud monitor
- alibaba cloud
- terraform
- recreate
- Deployment
- 쿠버네티스
- argocd
- Naver Cloud
- 시험
- 테라폼
- NCP
- Cluster
- cicd
- hashicorp
- slack
- alibabacloud
- 네이버클라우드
- IAC
- k8s
- CKAD
- 알리바바클라우드
- alibaba
- Kubernetes
- RollingUpdate
- helm
- cloudmonitor
- kubeadm
- GIT
- 자동화
- Today
- Total
Room9
Argo CD (2) - Configuration 본문
Overview
이전에 설치했던 ArgoCD를 이용하여 실제 배포를 진행해보도록 하겠습니다.
Details
- ArgoCD Application 생성 - guestbook
- ArgoCD - Github 연동
- Kubernetes에 Application 자동 배포 - nginx
ArgoCD Application 생성 - guestbook
로그인 이후 Application 탭에서 +NEW APP 클릭하여 Application 추가합니다.
GENERAL
해당 항목에서는 자신의 환경에 맞는 내용으로 작성하여 주시면 됩니다.
SOURCE
Repository URL을 ArgoCD에서 테스트를 제공하는 Github 저장소로 설정합니다.
https://github.com/argoproj/argocd-example-apps.git 본인이 사용하고자 하는 Git Repo의 주소가 될 겁니다.
Revision은 HEAD를 두거나 branch 명이 들어갑니다.
Path에는 manifest 파일들의 경로를 적어줍시다.
DESTINATION
Cluster URL에는 클러스터의 주소를 선택해 줍시다.
Namespace에는 해당 애플리케이션이 배포될 위치를 지정해줍니다.
이후 위의 Create로 guestbook Application을 생성합니다. 아래의 그림과 같이 guestbook application이 생성되어진 것을 확인할 수 있습니다. 하지만 Status의 상태가 Missing OutOfSync 상태로 표기가 됩니다. 해당 클러스터에는 guestbook이라는 Application이 배포가 된 적이 없기 때문에 싱크가 맞지 않는 게 정상입니다. SYNCHRONIZE를 클릭하게 되면 저장소에 있는 manifest를 가지고 DESTINATION에 설정한 클러스터로 배포가 진행됩니다.
설정한 값에 따라 배포가 되었는지 확인해봅시다.
kubectl get deployment
NAME READY UP-TO-DATE AVAILABLE AGE
guestbook-ui 1/1 1 1 7m22s
kubectl get pod
NAME READY STATUS RESTARTS AGE
guestbook-ui-85985d774c-n99lg 1/1 Running 0 7m27s
kubectl get svc
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
guestbook-ui ClusterIP 10.105.36.196 <none> 80/TCP 7m31s
kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 56d
ArgoCD - Github 연동
위에서 ArgoCD에서 제공하는 guestbook 테스트를 진행하였습니다. 이제 본인의 깃헙과 연동을 한번 해보도록 하겠습니다.
Repository에서 HTTPS로 연결, 따로 넣어줘야 하는 값으로는 자신의 github repo URL 정도밖에 없이 바로 Connect 해보겠습니다.
그럼 위의 연동한 Repo에 저장된 manifest를 이용하여 Application을 생성하여 클러스터에 해당 application을 배포해보도록 하겠습니다. 제가 연동한 git repo의 URL이 드롭다운 형식으로 보이게 됩니다.
guestbook과 마찬가지로 초기에 배포가 되어 있지 않아 싱크가 맞지 않다고 표시되어 있습니다. Sync를 이용하여 배포를 진행해보도록 하겠습니다.
명령어를 통해 잘 배포되었는지 확인해 봅니다.
k get deployment
NAME READY UP-TO-DATE AVAILABLE AGE
guestbook-ui 1/1 1 1 3h26m
nginx 1/1 1 1 3m5s
nginx deployemnt가 잘 배포되었습니다. 이제 github에 있는 yaml 파일에서 replicas를 3으로 변경해 보겠습니다.
배포 시에 SYNC POLICY를 AUTO로 설정하지 않았기 때문에 깃헙의 코드 수정이 일어나면서 manifest와 실제 클러스터에 배포되어 있는 싱크가 어긋나게 됩니다. 그럼 해당 application의 SYNC POLICY를 변경하여 자동으로 sync를 맞추게 설정해 보겠습니다.
Auto Sync로 변경하자마자 manifest에서 수정한 replicas에 맞게 싱크를 바로 잡아주는 모습을 볼 수 있습니다.
kubectl get deployment
NAME READY UP-TO-DATE AVAILABLE AGE
guestbook-ui 1/1 1 1 3h34m
mysql 1/1 1 1 25d
nginx 3/3 3 3 11m
마치며
간략하게 ArgoCD를 설치하고 배포하는 작업까지 실행해 보았습니다. Git과 연동하면서 간단하게 깃에 있는 코드 변경만으로 손쉽게 클러스터에 배포를 하게 되는 모습을 보며, 더 빠르게 새로운 버전을 운영에 반영할 수 있게 되는 것 같습니다. 해당 주제는 Kubernetes 스터디에서 나온 주제로 다른 조원께서 직접 스터디하였던 주제로 다시 한번 리마인드 차원에서 구축해보았습니다. 스터디 당시에는 구경만 하고 실제 구축을 해보진 않았습니다. 이번 기회에 직접 구축과 설정들을 하면서 배포 자동화에 조금 가까워지지 않았나 생각이 듭니다. 읽어주셔서 감사합니다.