일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- kubeadm
- Cluster
- cicd
- cloudmonitor
- 테라폼
- Deployment
- slack app
- 쿠버네티스
- Naver Cloud
- cloud monitor
- CKAD
- RollingUpdate
- slack
- 시험
- NCP
- Kubernetes
- helm
- k8s
- terraform
- 알리바바클라우드
- argocd
- alibabacloud
- GIT
- 네이버클라우드
- 자동화
- IAC
- hashicorp
- recreate
- alibaba cloud
- alibaba
- Today
- Total
Room9
Argo CD (1) - Installation 본문

Overview
What is Argo CD?
Argo CD는 Kubernetes를 위한 선언적 GitOps 지속적 전달 도구 입니다.
Argo CD is a declarative, GitOps continuous delivery tool for Kubernetes.
GitOps를 구현하고 Kubernetes CI/CD에서 CD를 운영할 수 있는 툴입니다.
대시보드를 제공하여 GUI 환경에서 배포 현황을 편하게 확인할 수도 있습니다.
아래의 그림은 배포의 단계에서 ArgoCD가 담당하는 부분을 확인할 수 있습니다.

Details
- ArgoCD Install
- ArgoCD CLI
- ArgoCD API
- Login Using The CLI
ArgoCD Installation
kubectl create namespace argocd
kubectl apply -n argocd -f https://raw.githubusercontent.com/argoproj/argo-cd/stable/manifests/install.yaml
argocd가 배포될 네임스페이스를 만들어주고 설치를 진행
경고
설치 매니페스트에는 네임스페이스 ClusterRoleBinding를 참조하는 리소스가 포함 됩니다 argocd. Argo CD를 다른 네임스페이스에 설치하는 경우 네임스페이스 참조를 업데이트해야 합니다.
kubectl get all -n argocd
NAME READY STATUS RESTARTS AGE
pod/argocd-application-controller-0 1/1 Running 0 3m
pod/argocd-dex-server-6c55787bc6-dhdcd 1/1 Running 0 3m
pod/argocd-redis-74d8c6db65-jtf2t 1/1 Running 0 3m
pod/argocd-repo-server-6c44847cf9-jz2xk 1/1 Running 0 3m
pod/argocd-server-67b65559fb-gtmd2 1/1 Running 0 3m
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
service/argocd-dex-server ClusterIP 10.102.99.141 <none> 5556/TCP,5557/TCP,5558/TCP 3m1s
service/argocd-metrics ClusterIP 10.106.23.248 <none> 8082/TCP 3m1s
service/argocd-redis ClusterIP 10.96.101.32 <none> 6379/TCP 3m1s
service/argocd-repo-server ClusterIP 10.98.253.172 <none> 8081/TCP,8084/TCP 3m1s
service/argocd-server ClusterIP 10.102.65.68 <none> 80/TCP,443/TCP 3m1s
service/argocd-server-metrics ClusterIP 10.104.154.193 <none> 8083/TCP 3m1s
NAME READY UP-TO-DATE AVAILABLE AGE
deployment.apps/argocd-dex-server 1/1 1 1 3m1s
deployment.apps/argocd-redis 1/1 1 1 3m1s
deployment.apps/argocd-repo-server 1/1 1 1 3m1s
deployment.apps/argocd-server 1/1 1 1 3m1s
NAME DESIRED CURRENT READY AGE
replicaset.apps/argocd-dex-server-6c55787bc6 1 1 1 3m1s
replicaset.apps/argocd-redis-74d8c6db65 1 1 1 3m1s
replicaset.apps/argocd-repo-server-6c44847cf9 1 1 1 3m1s
replicaset.apps/argocd-server-67b65559fb 1 1 1 3m1s
NAME READY AGE
statefulset.apps/argocd-application-controller 1/1 3m1s
해당 네임스페이스에 설치된 오브젝트들을 확인할 수 있습니다.
ArgoCD CLI
curl -sSL -o /usr/local/bin/argocd https://github.com/argoproj/argo-cd/releases/latest/download/argocd-linux-amd64
chmod +x /usr/local/bin/argocd
ArgoCD API
위의 설치 결과에서 Service의 argocd-server의 타입을 확인해보면 Type이 ClusterIP로 지정되어 있는것을 확인할수 있습니다. API 서버에 액세스 하려면 해당 서비스의 타입이 LoadBalancer / NodePort 중 하나 이거나 Ingress를 이용하여 노출하는 방법과 포트 포워딩을 이용하는 방법이 있습니다.
해당 문서에서는 간단하게 NodePort로 서비스 타입을 변경하여 접속해보도록 하겠습니다.
kubectl edit svc argocd-server -n argocd
kubectl get svc -n argocd
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
argocd-dex-server ClusterIP 10.102.99.141 <none> 5556/TCP,5557/TCP,5558/TCP 19m
argocd-metrics ClusterIP 10.106.23.248 <none> 8082/TCP 19m
argocd-redis ClusterIP 10.96.101.32 <none> 6379/TCP 19m
argocd-repo-server ClusterIP 10.98.253.172 <none> 8081/TCP,8084/TCP 19m
argocd-server NodePort 10.102.65.68 <none> 80:30841/TCP,443:30810/TCP 19m
argocd-server-metrics ClusterIP 10.104.154.193 <none> 8083/TCP 19m
kubectl get nodes -o wide
NAME STATUS ROLES AGE VERSION INTERNAL-IP EXTERNAL-IP OS-IMAGE KERNEL-VERSION CONTAINER-RUNTIME
m-k8s Ready control-plane,master 55d v1.20.2 192.168.2.10 <none> CentOS Linux 7 (Core) 3.10.0-1127.19.1.el7.x86_64 docker://19.3.14
w1-k8s Ready <none> 55d v1.20.2 192.168.2.101 <none> CentOS Linux 7 (Core) 3.10.0-1127.19.1.el7.x86_64 docker://19.3.14
w2-k8s Ready <none> 55d v1.20.2 192.168.2.102 <none> CentOS Linux 7 (Core) 3.10.0-1127.19.1.el7.x86_64 docker://19.3.14
w3-k8s Ready <none> 55d v1.20.2 192.168.2.103 <none> CentOS Linux 7 (Core) 3.10.0-1127.19.1.el7.x86_64 docker://19.3.14
서비스 타입이 NodePort로 변경되었고 노드의 IP로 접속하게 되면

Login Using The CLI
설치한 CLI를 이용하여 설치된 ArgoCD에 로그인해 보도록 하겠습니다.(초기 계정명은 admin 입니다.)
kubectl -n argocd get secret argocd-initial-admin-secret -o jsonpath="{.data.password}" | base64 -d
sGirMmmJJlVjmASp
위와 같이 해당 admin 계정의 Password 정보를 얻을 수 있습니다. 해당 계정 정보를 가지고 CLI를 이용하여 로그인 해보도록 하겠습니다.
argocd login 10.102.65.68
WARNING: server certificate had error: x509: cannot validate certificate for 10.102.65.68 because it doesn't contain any IP SANs. Proceed insecurely (y/n)? y
Username: admin
Password:
'admin:login' logged in successfully
Context '10.102.65.68' updated
ArgoCD login 명령어와 서버의 IP 또는 호스트명으로 접속 이후 패스워드를 입력하게 되면 로그인이 됩니다.
다음 글에서는 설치한 ArgoCD 와 Github 연동 이후 실제 클러스터에 배포할 예정입니다.
감사합니다.