문제 해결 도구
문제 해결 도구 (Troubleshooting Tools)
이 문서는 argocd admin 서브커맨드를 사용해 Argo CD 설정 커스터마이즈를 단순화하고 연결 문제를 해결하는 방법을 설명해요.
출처: 문서
본문
설정 (Settings)
Argo CD는 시스템 동작을 커스터마이즈하는 여러 방법과 많은 설정을 제공해요. 여러 사용자가 사용하는 프로덕션 Argo CD에서 설정을 수정하는 것은 위험할 수 있어요. 설정을 적용하기 전에 argocd admin 서브커맨드를 사용해 설정이 유효하고 Argo CD가 예상대로 동작하는지 확인할 수 있어요.
argocd admin settings validate 명령은 기본 설정 검증을 수행하고 각 설정 그룹의 짧은 요약을 출력해요.
Diffing 커스터마이즈 (Diffing Customization)
Diffing 커스터마이즈는 diffing 과정에서 일부 리소스 필드를 제외할 수 있게 해줘요. diffing 커스터마이즈는 argocd-cm ConfigMap의 resource.customizations 필드에 구성돼요.
다음 argocd admin 명령은 지정된 ConfigMap에서 diffing에서 제외된 필드에 대한 정보를 출력해요.
argocd admin settings resource-overrides ignore-differences ./deploy.yaml --argocd-cm-path ./argocd-cm.yaml
헬스 평가 (Health Assessment)
Argo CD는 몇 가지 Kubernetes 리소스에 대한 내장 헬스 평가를 제공하며, Lua로 자체 헬스 체크를 작성해 더 커스터마이즈할 수 있어요. 헬스 체크는 argocd-cm ConfigMap의 resource.customizations 필드에 구성돼요.
다음 argocd admin 명령은 지정된 ConfigMap에 구성된 Lua 스크립트로 리소스 헬스를 평가해요.
argocd admin settings resource-overrides health ./deploy.yaml --argocd-cm-path ./argocd-cm.yaml
리소스 동작 (Resource Actions)
리소스 동작은 리소스 수정을 수행하는 명명된 Lua 스크립트를 구성할 수 있게 해줘요.
다음 argocd admin 명령은 지정된 ConfigMap에 구성된 Lua 스크립트로 동작을 실행하고 적용된 수정 사항을 출력해요.
argocd admin settings resource-overrides run-action /tmp/deploy.yaml restart --argocd-cm-path /private/tmp/argocd-cm.yaml
다음 argocd admin 명령은 지정된 ConfigMap에 구성된 Lua 스크립트로 주어진 리소스에 사용 가능한 동작을 나열해요.
argocd admin settings resource-overrides list-actions /tmp/deploy.yaml --argocd-cm-path /private/tmp/argocd-cm.yaml
클러스터 자격 증명 (Cluster credentials)
클러스터 자격 증명이 있는 Secret을 수동으로 만들었고 연결 문제를 해결해야 한다면 argocd admin cluster kubeconfig가 유용해요. 이 경우 다음 단계를 따르는 것이 좋아요:
- [argocd-application-controller] 파드에 SSH로 접속하세요.
kubectl exec -n argocd -it \
$(kubectl get pods -n argocd -l app.kubernetes.io/name=argocd-application-controller -o jsonpath='{.items[0].metadata.name}') -- bash
argocd admin cluster kubeconfig명령으로 구성된 Secret에서 kubeconfig 파일을 내보내세요:
argocd admin cluster kubeconfig https://<api-server-url> /tmp/kubeconfig --namespace argocd
kubectl을 사용해 연결 문제에 대한 자세한 정보를 얻고, 수정한 다음 변경 사항을 secret에 다시 적용하세요:
export KUBECONFIG=/tmp/kubeconfig
kubectl get pods -v 9