환경
항목 | 내용 |
날짜 | 2026-03-06 |
서비스 | ArgoCD |
버전 | v3.3.2 (helm chart: argo-cd-9.4.7) |
환경 | kubeadm, Multipass VM, nginx-ingress, MetalLB |
증상
http://argocd.chaos-lab.local 접속 시 Web UI에 접근할 수 없었다. HTTP 요청이 HTTPS로 리다이렉트되고 있음을 확인할 수 있었다.
$ curl http://argocd.chaos-lab.local
<html>
<head><title>503 Service Temporarily Unavailable</title></head>
<body>
<center><h1>503 Service Temporarily Unavailable</h1></center>
<hr><center>nginx</center>
</body>
</html>
Bash
복사
원인
ArgoCD는 기본적으로 TLS가 활성화된 상태로 설치된다. 따라서 HTTP로 요청이 들어오면 ArgoCD server가 HTTPS로 강제 리다이렉트한다. nginx-ingress를 통해 HTTP로 노출하더라도 ArgoCD 서버 자체의 TLS 설정이 유지되므로 TLS 설정을 하지 않은 상태에서 Web UI에 정상적으로 접근할 수 없다.
재현 조건
•
ArgoCD를 HTTP로 노출 (nginx-ingress + MetalLB, TLS 미적용)
•
ArgoCD의 TLS 설정을 비활성화하지 않은 상태
해결 방법
helm chart의 values를 수정한다.
configs.params에 server.insecure: true를 설정하여 ArgoCD의 TLS를 비활성화하고, backend-protocol을 HTTP로 변경한다.
configs:
params:
server.insecure: true
server:
ingress:
enabled: true
hostname: "argocd.chaos-lab.local"
ingressClassName: nginx
annotations:
nginx.ingress.kubernetes.io/backend-protocol: "HTTP"
YAML
복사
values를 적용하여 설치 및 업그레이드를 진행한다.
helm upgrade --install argocd argo/argo-cd \
--namespace argocd --create-namespace \
-f values/argocd/argocd-values.yaml
Bash
복사
적용 후 ConfigMap에 반영되었는지 확인한다.
kubectl get configmap argocd-cmd-params-cm -n argocd -o yaml | grep insecure
# server.insecure: "true"
Bash
복사
예방
ArgoCD는 기본적으로 TLS가 활성화되어 있으므로 HTTP 환경에서는 TLS를 비활성화해야 한다. ingress를 통해 HTTP로 ArgoCD를 노출하는 경우 초기 설치 시 반드시 아래 설정을 values에 포함한다.
configs:
params:
server.insecure: true
server:
ingress:
enabled: true
hostname: "argocd.chaos-lab.local"
ingressClassName: nginx
annotations:
nginx.ingress.kubernetes.io/backend-protocol: "HTTP"
YAML
복사