문서 목차
ORKESTRIX설치
ArgoCD (CD)
Git 저장소 기반의 선언적 쿠버네티스 애플리케이션 자동 배포(CD) 를 위한 ArgoCD 를 구성합니다. Helm 차트에 SOPS 기반 시크릿 복호화(helm secrets) 기능이 추가로 포함됩니다.
QUANTUM C&S
Git 저장소 기반의 선언적 쿠버네티스 애플리케이션 자동 배포(CD)를 위한 ArgoCD를 구성합니다. Helm 차트에 SOPS 기반 시크릿 복호화(helm-secrets) 기능이 추가로 포함됩니다.
설정값
inventory/qks/group_vars/all/all-k8s.yaml:
qks_argocd_enabled: true
qks_argocd_version: 10.9.2
qks_argocd_app_version: 3.5.3
qks_argocd_release: qks-cd
qks_argocd_namespace: qks-cicd
qks_argocd_fqdn: "cd.{{ kube_default_domain }}"
qks_argocd_admin_pass: "{{ kube_default_passwd }}"
실행
./install.sh ubuntu plays/qks-argocd.yaml
설치 흐름
./install.sh ubuntu plays/qks-argocd.yaml
├─ 1. 접속 도메인을 각 노드 /etc/hosts에 등록
├─ 2. Helm 저장소 등록 ('argocd')
├─ 3. helm-secrets용 age 키 Secret 생성
├─ 4. Helm으로 ArgoCD 배포 (server+controller+repo-server+applicationset+redis)
├─ 5. Ingress에 Traefik 어노테이션 패치
└─ 6. admin 비밀번호를 bcrypt 해시로 패치
설치 확인
kubectl get pods -n <qks_argocd_namespace>
qks-cd-application-controller · qks-cd-applicationset-controller · qks-cd-repo-server · qks-cd-server · qks-cd-redis 파드가 모두 Running이어야 합니다.
실제 동작 확인
웹 접속:
curl -k -s -o /dev/null -w "%{http_code}\n" https://<qks_argocd_fqdn>/
200이 나오면 정상입니다.
로그인:
curl -k -s -X POST https://<qks_argocd_fqdn>/api/v1/session \
-H "Content-Type: application/json" \
-d '{"username":"admin","password":"<qks_argocd_admin_pass>"}'
응답으로 token이 나오면 정상입니다.
Git 저장소 기반 자동 배포 확인:
curl -k -s -X POST https://<qks_argocd_fqdn>/api/v1/applications \
-H "Authorization: Bearer <token>" -H "Content-Type: application/json" \
-d '{
"metadata": {"name": "test-app"},
"spec": {
"project": "default",
"source": {"repoURL": "<git 저장소 URL>", "path": "<매니페스트 경로>", "targetRevision": "HEAD"},
"destination": {"server": "https://kubernetes.default.svc", "namespace": "test-app"},
"syncPolicy": {"automated": {"prune": true, "selfHeal": true}, "syncOptions": ["CreateNamespace=true"]}
}
}'
curl -k -s -H "Authorization: Bearer <token>" https://<qks_argocd_fqdn>/api/v1/applications/test-app
status.sync.status가 Synced, status.health.status가 Healthy이고 대상 네임스페이스에 실제 리소스(Deployment/Service 등)가 생성되어 있으면 정상입니다.