새소식

기술/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

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

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