본문 바로가기
devops/Kubernetes

Argo CD 설치하기, Argo CD 란?

by 아이티.파머 2023. 4. 28.
반응형

Argo

Argo CD 란 ?

GitOps 방법론을 사용하여 Kubernetes 어플리케이션을 배포 관리 하는 오픈소스 도구이다.

사전 설치

  • kubernetes 가 설치되어 있어야 한다.
  • kubectl cli가 설치 되어 있어야 한다.

Argo CD 설치하기(방법)

설치방법에는 두가지가있다. 첫번째는 helm을 이용하는 방법, 두번째는 manifest를 사용하는 방법이다.

여기서는 두번째 방법을 사용해서 설치한다.

  1. 네임스페이스 생성
kubectl create namespace argocd
  1. Argo cd manifest 파일 다운로드후 배포
kubectl apply -n argocd -f https://raw.githubusercontent.com/argoproj/argo-cd/stable/manifests/install.yaml
  1. 배포가 잘되었는지 확인
mezzo-skan@mezzoui-MacBookPro ~ % kubectl get pods -n argocd 
NAME                                                READY   STATUS    RESTARTS      AGE
argocd-application-controller-0                     1/1     Running   2 (96s ago)   9d
argocd-applicationset-controller-57db5f5c7d-xznmq   1/1     Running   2 (96s ago)   9d
argocd-dex-server-c4b8545d-5mn86                    1/1     Running   2 (96s ago)   9d
argocd-notifications-controller-7cddc64d84-vhm9l    1/1     Running   2 (96s ago)   9d
argocd-redis-6b7c6f67db-bhjzw                       1/1     Running   2 (96s ago)   9d
argocd-repo-server-6867ddcc74-b4pcv                 1/1     Running   2 (96s ago)   9d
argocd-server-64957744c9-vbchz                      1/1     Running   2 (96s ago)   9d

Argo CD 서버 접속방법

서버에 접속하기 위해서는 ingress controller을 사용하여 외부에서 접근가능 하도록 설정 하거나, 네트워크 정보를 LoadBalancer 서비를 생성하여 외부에서 접근 할 수있도록 설정 하는 것이다.

서비스의 타입을 보면 ClusterIP로 되어 있다. 이중에 우리가 접속하려는 ArgoCD web serivce는argocd-server 이다. 외부에서 접근하기 위해서는 type을 nodePort로 만들어 주거나 ingress Controler 를 이용하는 것이다. 여기서는 node port로 설정한다.

참고로 몇가지 방법이 더있음

다음 명령어를 실행하면 서비스 타입과 몇가지 설정을 확인 할 수있다.

Type 모두 ClusterIP로 인데 이중에 외부에서 접근할 argocd-server 만 Node Port로 변경할 한다.

mezzo-skan@mezzoui-MacBookPro ~ %  kubectl get service -n argocd 
NAME                                      TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)                      AGE
argocd-applicationset-controller          ClusterIP   10.104.234.198   <none>        7000/TCP,8080/TCP            15d
argocd-dex-server                         ClusterIP   10.106.150.106   <none>        5556/TCP,5557/TCP,5558/TCP   15d
argocd-metrics                            ClusterIP   10.109.110.47    <none>        8082/TCP                     15d
argocd-notifications-controller-metrics   ClusterIP   10.110.137.140   <none>        9001/TCP                     15d
argocd-redis                              ClusterIP   10.97.26.116     <none>        6379/TCP                     15d
argocd-repo-server                        ClusterIP   10.106.114.159   <none>        8081/TCP,8084/TCP            15d
argocd-server                             ClusterIP    10.101.125.129   <none>       80/TCP,443/TCP               15d
argocd-server-metrics                     ClusterIP   10.102.113.18    <none>        8083/TCP                     15d

1.다음 명령어를 실행하여 service type을 node port 로 변경한다.

kubectl patch svc argocd-server -n argocd -p '{"spec": {"type": "NodePort"}}'
  1. 다음명령어를 실행하여 server type 이 변경된 것을 확인하다.
mezzo-skan@mezzoui-MacBookPro ~ %  kubectl get service -n argocd 
NAME                                      TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)                      AGE
argocd-applicationset-controller          ClusterIP   10.104.234.198   <none>        7000/TCP,8080/TCP            15d
argocd-dex-server                         ClusterIP   10.106.150.106   <none>        5556/TCP,5557/TCP,5558/TCP   15d
argocd-metrics                            ClusterIP   10.109.110.47    <none>        8082/TCP                     15d
argocd-notifications-controller-metrics   ClusterIP   10.110.137.140   <none>        9001/TCP                     15d
argocd-redis                              ClusterIP   10.97.26.116     <none>        6379/TCP                     15d
argocd-repo-server                        ClusterIP   10.106.114.159   <none>        8081/TCP,8084/TCP            15d
argocd-server                             NodePort    10.101.125.129   <none>        80:32238/TCP,443:32619/TCP   15d
argocd-server-metrics                     ClusterIP   10.102.113.18    <none>        8083/TCP                     15d

3.argocd-server 의 Type이 NodePort로 변경된 것을 확인 할 수있다.

4.제 서비스의 외부 접근 설정 이후 IP 및 포트를 확인하여 접속한다.

# 서비스 상세 정보 확인 
kubectl describe svc argocd-server -n argocd

mezzo-skan@mezzoui-MacBookPro ~ % kubectl describe svc argocd-server -n argocd
Name:                     argocd-server
Namespace:                argocd
Labels:                   app.kubernetes.io/component=server
                          app.kubernetes.io/name=argocd-server
                          app.kubernetes.io/part-of=argocd
Annotations:              <none>
Selector:                 app.kubernetes.io/name=argocd-server
Type:                     NodePort
IP Family Policy:         SingleStack
IP Families:              IPv4
IP:                       **10.101.125.129**
IPs:                      10.101.125.129
Port:                     http  80/TCP
**TargetPort:               8080/TCP**
NodePort:                 http  32238/TCP
Endpoints:                10.244.0.88:8080
Port:                     https  443/TCP
**TargetPort:               8080/TCP**
NodePort:                 https  32619/TCP
Endpoints:                10.244.0.88:8080
Session Affinity:         None
External Traffic Policy:  Cluster
Events:                   <none>

# 서비스 정보 나열 
mezzo-skan@mezzoui-MacBookPro ~ % kubectl get svc -n argocd
NAME                                      TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)                      AGE
argocd-applicationset-controller          ClusterIP   10.104.234.198   <none>        7000/TCP,8080/TCP            15d
argocd-dex-server                         ClusterIP   10.106.150.106   <none>        5556/TCP,5557/TCP,5558/TCP   15d
argocd-metrics                            ClusterIP   10.109.110.47    <none>        8082/TCP                     15d
argocd-notifications-controller-metrics   ClusterIP   10.110.137.140   <none>        9001/TCP                     15d
argocd-redis                              ClusterIP   10.97.26.116     <none>        6379/TCP                     15d
argocd-repo-server                        ClusterIP   10.106.114.159   <none>        8081/TCP,8084/TCP            15d
**argocd-server                             NodePort    10.101.125.129   <none>        80:32238/TCP,443:32619/TCP   15d**
argocd-server-metrics                     ClusterIP   10.102.113.18    <none>        8083/TCP                     15d

IP 와 Port를 확인하면 외부에서 접속 가능한 NodePort가 생성된것을 볼수있다.

[http://10.101.125.129:32238](http://10.101.125.129:32238) 로 접속하면 argoCD web ui 에 접속 할 수있다.

  1. 접속하려면 비밀번호가 필요한데, 다음 명령어를 통해 비밀번호를 확인 할 수있다.
kubectl -n argocd get secret argocd-initial-admin-secret -o jsonpath="{.data.password}" | base64 -d; echo
**ZpiWlqPPMqvOAmpq**

어카운트 정보는 admin 임으로 id 와 passwd 를 입력한뒤 로그인 한다.

추가)

미니쿠버(minikube) 에서는 아무리 Cluster IP를 입력하고 서버에 접근 하려고 해도 접속 할 수 없다. 미니쿠버 터널링을 해주어야 한다.

다음 명령어를 실행하여 argocd-service 의 터널링을 실행한다.

minikube service <service name> -n <nsmespace>

minikube service **argocd-server  -n argocd
|-----------|---------------|-------------|---------------------------|
| NAMESPACE |     NAME      | TARGET PORT |            URL            |
|-----------|---------------|-------------|---------------------------|
| argocd    | argocd-server | http/80     | http://192.168.49.2:32238 |
|           |               | https/443   | http://192.168.49.2:32619 |
|-----------|---------------|-------------|---------------------------|
🏃  argocd-server 서비스의 터널을 시작하는 중
|-----------|---------------|-------------|------------------------|
| NAMESPACE |     NAME      | TARGET PORT |          URL           |
|-----------|---------------|-------------|------------------------|
| argocd    | argocd-server |             | http://127.0.0.1:50736 |
|           |               |             | http://127.0.0.1:50737 |
|-----------|---------------|-------------|------------------------|
[argocd argocd-server  http://127.0.0.1:50736
http://127.0.0.1:50737]
❗  Because you are using a Docker driver on darwin, the terminal needs to be open to run it.**
  1. 터널링된 정보와 함께 접속할수있는 url을 알려주는데 ‘http://127.0.0.1:50737’ 로 접속하면 웹UI에 접근 가능 하다. 미니쿠버는 보안상 이렇게 터널링을 꼭해주어야 한다고 하는데, 풀수 있는 방법도 있다. 필자는 굳이 풀지 않고 터널링을 이용해서 테스트 하는것을 추천한다.

아이디와 비밀번호를 넣고 로그인한다.

  1. 해당 화면은 +NEW APP 을 통해 Argo CD를 사용한 샘플이다. 관련된 내용은 해당 링크를 참고!!

<<링크>>

ArgoCD Application

우리가 작성한 kubunetes 의 minifest 파일을 읽어 이렇게 아름답게 표현할수있다니..신기하면서도 좋다.

반응형

'devops > Kubernetes' 카테고리의 다른 글

kubernetes namespage  (0) 2024.04.25
kubernetes service (nodeport) 에대한 설명  (1) 2024.04.25
kubernetes minikube install  (0) 2024.04.25
kubernetes dashboard  (1) 2024.04.25
kubectl 명령어  (0) 2024.04.25