새소식

기술/Application

Argo CD 설치 (1)

  • -
Argo CD 란 무엇입니까?
Argo CD는 Kubernetes를위한 선언적인 GitOps 연속 전달 도구입니다. (번역)

What is Argo CD?
Argo CD is a declarative, GitOps continuous delivery tool for Kubernetes.

 

Official repostory 발췌 

(출처 : https://github.com/argoproj/argo-cd)

 

argoproj/argo-cd

Declarative continuous deployment for Kubernetes. Contribute to argoproj/argo-cd development by creating an account on GitHub.

github.com

 

GitOps를 구현하고 Kubernetes의 CI/CD를 운영할 수 있는 툴이며, 그 현황까지 한눈에 파악할 수 있는 툴입니다.

 

이 툴을 알기 전까지는 yaml 파일을 작성 후, 필요할 경우마다 yaml들을 수정해왔지만 배포를 실패했을 경우나 수정하면서 문법을 틀렸거나, 배포 이력 관리 등이 쉽지가 않았기 때문에 불편한 점들이 많았습니다.

 

그래서 CI/CD 툴에 대해서 필요성을 느꼈고, Jenkins X나 Spinnaker 등 다른 Kubernetes용 CI/CD 툴들이 있는 것을 알고 있었으나, 우연한 기회를 통해 알게 되어서 사용해 보니 편리한 점들이 있어서 공유해보자 합니다.

 

https://hub.helm.sh/charts/argo/argo-cd 접속하여 Repo를 추가합니다. 

repo 추가 시
$ helm repo add argo https://argoproj.github.io/argo-helm

 

이후 helm install 을 진행합니다.

 

혹시나 config 수정을 원하는 분들은 fetch를 이용하여 source 파일을 다운로드 받은 후 values.yaml을 수정합니다.

source 다운로드 시
$ helm fetch argo/argo-cd

설치 시
$ helm install "argo cd이름 지정" argo/argo-cd


설치 시 수정한 values.yaml을 적용하고 싶을 때
$ helm install "argo cd이름 지정" argo/argo-cd -f ./values.yaml

설치 후 패스워드 설정이 되어 있기 때문에 패스워드를 확인할 수 있는 방법에 대해서 나옵니다.

kubectl get pods -n default -l app.kubernetes.io/name=argocd-server -o name | cut -d'/' -f 2

패스워드는 사실 배포된 Pod의 이름입니다.

 

argo-cd 서버를 접속을 하기 위해 저는 배포되어 있는 server의 service를 수정했습니다.

배포된 service config 수정
kubectl edit svc argo-cd-argocd-server

ClusterIP를 NodePort로 수정
type: ClusterIP -> type: NodePort



#수정 전
root@node1:~/argo-cd# kubectl get svc
NAME                                    TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)             AGE
argo-cd-argocd-application-controller   ClusterIP   10.233.62.82    <none>        8082/TCP            114s
argo-cd-argocd-dex-server               ClusterIP   10.233.10.79    <none>        5556/TCP,5557/TCP   114s
argo-cd-argocd-redis                    ClusterIP   10.233.54.78    <none>        6379/TCP            114s
argo-cd-argocd-repo-server              ClusterIP   10.233.61.188   <none>        8081/TCP            114s
argo-cd-argocd-server                   ClusterIP   10.233.14.15    <none>        80/TCP,443/TCP      114s
kubernetes                              ClusterIP   10.233.0.1      <none>        443/TCP             6d11h


#수정 후
root@node1:~/argo-cd# kubectl get svc
NAME                                    TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)                      AGE
argo-cd-argocd-application-controller   ClusterIP   10.233.62.82    <none>        8082/TCP                     11m
argo-cd-argocd-dex-server               ClusterIP   10.233.10.79    <none>        5556/TCP,5557/TCP            11m
argo-cd-argocd-redis                    ClusterIP   10.233.54.78    <none>        6379/TCP                     11m
argo-cd-argocd-repo-server              ClusterIP   10.233.61.188   <none>        8081/TCP                     11m
argo-cd-argocd-server                   NodePort    10.233.14.15    <none>        80:30041/TCP,443:31135/TCP   11m
kubernetes                              ClusterIP   10.233.0.1      <none>        443/TCP                      6d11h

NodePort로 설정이 바꼈기 때문에 slave 서버IP:31135 포트를 이용하여 접속을 합니다.

패스워드 확인 후 접속합니다.

$ kubectl get pods -n default -l app.kubernetes.io/name=argocd-server -o name | cut -d'/' -f 2

root@node1:~/argo-cd# kubectl get pods -n default -l app.kubernetes.io/name=argocd-server -o name | cut -d'/' -f 2
argo-cd-argocd-server-7d859675c9-jcg9r


패스워드는 argo-cd-argocd-server-7d859675c9-jcg9r 입니다.

 

접속 후의 모습입니다.

 

이상으로 설치 방법에 대해 알아보았으며, 다음 글은 github에 있는 repository를 불러와서 배포하는 방법에 대해서 소개해보도록 하겠습니다.

 

긴 글 읽어주셔서 감사합니다.

Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.