다음 단계에서는 Kubernetes에 Argo CD를 설치하겠습니다. 공식 Argo CD Helm 차트를 사용합니다.
먼저 Helm 저장소를 추가합니다.
$ helm repo add argo https://argoproj.github.io/argo-helm
Argo CD를 설치합니다.
$ helm install argocd argo/argo-cd -n argocd --create-namespace
Argo CD가 설치되면 안내에 따라 대시보드로 접속합니다.
$ kubectl port-forward service/argocd-server -n argocd 8080:443
http://localhost:8080
기본 사용자 이름은 admin이고 비번은 아래와 같습니다.
$ kubectl get secret argocd-initial-admin-secret \
--template={{.data.password}} \
-n argocd | base64 -d
agro cname 레코드로 등록
cat <<EOT> ingress-argo-prod.yaml
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: argo-prod
namespace: argocd
annotations:
acme.cert-manager.io/http01-ingress-class: nginx
cert-manager.io/cluster-issuer: letsencrypt-prod
nginx.ingress.kubernetes.io/ssl-passthrough: "true"
# If you encounter a redirect loop or are getting a 307 response code
# then you need to force the nginx ingress to connect to the backend using HTTPS.
#
nginx.ingress.kubernetes.io/backend-protocol: "HTTPS"
spec:
ingressClassName: nginx
tls:
- hosts:
- argo.code-lab.kr
secretName: argo-prod-tls
rules:
- host: argo.code-lab.kr
http:
paths:
- pathType: Prefix
path: /
backend:
service:
name: argocd-server
port:
name: https
EOT
k apply -f ingress-argo-prod.yaml
인증서 확인
➜ k get certificates -n argocd
NAME READY SECRET AGE
argo-prod-tls True argo-prod-tls 33s
인증서 생성이 안 되면 https 관련 설정을 주석처리하거나 http 로 바꾸고 적용하면 인증서가 생성됩니다.
실제로 브라우저에서 아르고 접속이 안 될텐데 원복 후 다시 적용하면 작동합니다.
로드밸런서 용도로 할당 받은 IP로 https 프로토콜 접속을 합니다. https://argo.code-lab.kr
그리고 앞서 확인한 패스워드를 입력해 로그인합니다.
username: admin
password: <secret을 통해 확인한 값>