DevOps와 Infra/AWS EKS / / 2023. 9. 10. 23:31

10. [AWS EKS] Argocd 설치

회사 내부 정리용 글.

Helm 설치

Kubectl을 설치한 Jenkins EC2서버에 Helm을 설치해서 Helm으로 Argocd를 설치할 것이다.

우선 Helm을 설치한다. (참조한 사이트는 https://helm.sh/docs/intro/install/ )

$ curl https://baltocdn.com/helm/signing.asc | gpg --dearmor | sudo tee /usr/share/keyrings/helm.gpg > /dev/null
$ sudo apt-get install apt-transport-https --yes
$ echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/helm.gpg] https://baltocdn.com/helm/stable/debian/ all main" | sudo tee /etc/apt/sources.list.d/helm-stable-debian.list
$ sudo apt-get update
$ sudo apt-get install helm

설치 확인을 위해 version 조회

$ helm version
// version.BuildInfo{Version:"v3.12.3", GitCommit:"3a31588ad33fe3b89af5a2a54ee1d25bfe6eaa5e", GitTreeState:"clean", GoVersion:"go1.20.7"}

현재 설치된 kubectl version과 호환되는 Helm version을 설치해야하는데,

Helm version → supported Kubernetes version : https://helm.sh/docs/topics/version_skew/

호환 정보가 정확하지는 않은 것 같다.

 

ArgoCD 설치

namespace를 argocd로 만들어주고 설치

$ kubectl create namespace argocd
$ helm repo add argo https://argoproj.github.io/argo-helm
$ helm repo list
// NAME	URL
// argo	https://argoproj.github.io/argo-helm

// helm 문법 검증
$ helm -n argocd template argocd argo/argo-cd
// argocd 설치
$ helm -n argocd install argocd argo/argo-cd

위와 같이 설치하면 다음과 같은 메세지가 뜬다.

 

STATUS: deployed
REVISION: 1
TEST SUITE: None
NOTES:
In order to access the server UI you have the following options:

1. kubectl port-forward service/argocd-server -n istio-system 8080:443

    and then open the browser on http://localhost:8080 and accept the certificate

2. enable ingress in the values file `server.ingress.enabled` and either
      - Add the annotation for ssl passthrough: https://argo-cd.readthedocs.io/en/stable/operator-manual/ingress/#option-1-ssl-passthrough
      - Set the `configs.params."server.insecure"` in the values file and terminate SSL at your ingress: https://argo-cd.readthedocs.io/en/stable/operator-manual/ingress/#option-2-multiple-ingress-objects-and-hosts


After reaching the UI the first time you can login with username: admin and the random password generated during the installation. You can find the password by running:

kubectl -n argocd get secret argocd-initial-admin-secret -o jsonpath="{.data.password}" | base64 -d

(You should delete the initial secret afterwards as suggested by the Getting Started Guide: https://argo-cd.readthedocs.io/en/stable/getting_started/#4-login-using-the-cli)

 

다음으로 설치여부를 확인

$ kubectl get all -n argocd

Service 중에 argocd-server를 LoadBalancer로 변경해서 외부에서 접속할 것이다.

$ kubectl patch svc argocd-server -n argocd -p '{"spec": {"type": "LoadBalancer"}}'

자동으로 LoadBalancer가 만들어지는데 약 5분정도 소요된다. 5분후에 접속하면 된다.

그리고 우리는 Nginx를 사용하므로 LoadBalancer를 URL과 연결해준다.

중요: Nginx의 .conf 파일에 http://가 아닌 https://로 써줘야한다... 안 그러면 nginx가 스스로 무한호출을 반복하면서 서버가 죽어버린다.

다음 명령어로 초기 패스워드를 알아내고, 접속하자마자 패스워드를 바꿔준다.

kubectl -n argocd get secret argocd-initial-admin-secret -o jsonpath="{.data.password}" | base64 -d; echo

 

  • 네이버 블로그 공유
  • 네이버 밴드 공유
  • 페이스북 공유