회사 내부 정리용 글.
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
'DevOps와 Infra > AWS EKS' 카테고리의 다른 글
1. AWS Load Balancer Controller 설치 ( Introduction ) (0) | 2023.10.25 |
---|---|
11. ArgoCD setting (0) | 2023.09.11 |
09. [AWS EKS] istio와 istio gateway 설치 (0) | 2023.09.10 |
08. [AWS EKS] metrics server 설치 / HPA autoscaling (0) | 2023.09.10 |
07. [AWS EKS] 특정 node에 선택적으로 배포하기 위한 labelling (0) | 2023.09.09 |