문제발생
Argo CD API 서버가 팟과 deployment 리소스들을 조회할 권한이 없어서, UI에서 “세부 정보 가져오기” 요청을 보내도 403/권한 부족 에러가 났다.
1. ArgoCD UI에서 리소스를 클릭할 때 에러가 발생하는 것은 ArgoCD 서버가 해당 리소스에 대한 세부 정보를 가져올 권한이 부족하거나, RBAC 설정에 문제가 있을 수 있다.
-> ArgoCD 서버의 권한을 확장 시도
$ kubectl patch clusterrole argocd-server --type json -p='[
{
"op": "add",
"path": "/rules/-",
"value": {
"apiGroups": [""],
"resources": ["pods", "services", "endpoints", "persistentvolumeclaims", "events", "configmaps", "secrets"],
"verbs": ["get", "list", "watch"]
}
},
{
"op": "add",
"path": "/rules/-",
"value": {
"apiGroups": ["apps"],
"resources": ["deployments", "daemonsets", "replicasets", "statefulsets"],
"verbs": ["get", "list", "watch"]
}
},
{
"op": "add",
"path": "/rules/-",
"value": {
"apiGroups": ["networking.k8s.io"],
"resources": ["ingresses"],
"verbs": ["get", "list", "watch"]
}
}
]'
$ clusterrole.rbac.authorization.k8s.io/argocd-server patched
2. ArgoCD Application Controller 권한 확인 및 업데이트
kubectl get clusterrole argocd-application-controller -o yaml
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
annotations:
kubectl.kubernetes.io/last-applied-configuration: |
{"apiVersion":"rbac.authorization.k8s.io/v1","kind":"ClusterRole","metadata":{"annotations":{},"labels":{"app.kubernetes.io/component":"application-controller","app.kubernetes.io/name":"argocd-application-controller","app.kubernetes.io/part-of":"argocd"},"name":"argocd-application-controller"},"rules":[{"apiGroups":["*"],"resources":["*"],"verbs":["*"]},{"nonResourceURLs":["*"],"verbs":["*"]}]}
creationTimestamp: "2025-06-25T06:05:20Z"
labels:
app.kubernetes.io/component: application-controller
app.kubernetes.io/name: argocd-application-controller
app.kubernetes.io/part-of: argocd
name: argocd-application-controller
resourceVersion: "193669"
uid: a5586776-c1a4-4575-a67d-ac0c6a968880
rules:
- apiGroups:
- '*'
resources:
- '*'
verbs:
- '*'
- nonResourceURLs:
- '*'
verbs:
- '*'
-> 이제 Application Controller 는 모든 권한을 가지고 있음
3. ArgoCD 서버를 재시작하여 권한 변경사항을 적용
$ kubectl rollout restart deployment argocd-server -n argocd
$ deployment.apps/argocd-server restarted
4. ArgoCD 서버가 다시 시작되길 기다림
$ kubectl get pods -n argocd -l app.kubernetes.io/name=argocd-server
NAME READY STATUS RESTARTS AGE
argocd-server-6b49447fcb-hpz74 0/1 Pending 0 6s
argocd-server-78d95cbc7-8krnf 1/1 Running 0 2d
argocd-server-78d95cbc7-vdcdl 1/1 Running 0 2d
5. 서버 재시작에 시간이 걸린다면, 다른 방법으로 문제를 해결
5-1. ArgoCD의 RBAC 설정 파일을 직접 확인하고 수정
kubectl get configmap argocd-rbac-cm -n argocd -o yaml
apiVersion: v1
kind: ConfigMap
metadata:
annotations:
kubectl.kubernetes.io/last-applied-configuration: |
{"apiVersion":"v1","kind":"ConfigMap","metadata":{"annotations":{},"labels":{"app.kubernetes.io/name":"argocd-rbac-cm","app.kubernetes.io/part-of":"argocd"},"name":"argocd-rbac-cm","namespace":"argocd"}}
creationTimestamp: "2025-06-25T06:05:22Z"
labels:
app.kubernetes.io/name: argocd-rbac-cm
app.kubernetes.io/part-of: argocd
name: argocd-rbac-cm
namespace: argocd
resourceVersion: "193692"
uid: 68f8a695-6558-4854-bddb-89b35c7e3d87
-> RBAC ConfigMap이 비어있습니다. ArgoCD의 기본 admin 정책을 추가
kubectl patch configmap argocd-rbac-cm -n argocd --type merge -p='{
"data":{
"policy.default":"role:readonly",
"policy.csv":"
p, role:admin, applications, *, */*, allow
p, role:admin, clusters, *, *, allow
p, role:admin, repositories, *, *, allow
g, argocd:admin, role:admin
"
}
}'
6. ArgoCD 서버 상태를 다시 확인
$ kubectl get pods -n argocd -l app.kubernetes.io/name=argocd-server
NAME READY STATUS RESTARTS AGE
argocd-server-6b49447fcb-hpz74 0/1 Pending 0 6m4s
argocd-server-78d95cbc7-8krnf 1/1 Running 0 2d
argocd-server-78d95cbc7-vdcdl 1/1 Running 0 2d
새로운 Pod가 여전히 Pending 상태입니다. 리소스 문제일 수 있으니, 현재 실행 중인 ArgoCD 서버로 진행한다.
임시 해결책: ArgoCD Application Controller를 재시작하여 Controller가 리소스 상태를 다시 수집하도록 한다.
kubectl rollout restart deployment argocd-application-controller -n argocd
Error from server (NotFound): deployments.apps "argocd-application-controller" not found
$ kubectl get statefulsets -n argocd
NAME READY AGE
argocd-application-controller 1/1 2d
argocd-redis-ha-server 1/3 2d
7. application Controller 재시작
$ kubectl rollout restart statefulset argocd-application-controller -n argocd
statefulset.apps/argocd-application-controller restarted
Application Controller를 재시작했습니다. 잠시 기다린 후 다시 확인해보겠습니다.
추가로 확인할 사항들:
1. ArgoCD UI 브라우저 캐시 지우기
2. ArgoCD UI에서 하드 리프레시 (Ctrl+F5 또는 Cmd+Shift+R)
또 다른 방법으로, ArgoCD의 insecure 모드 설정을 확인해보겠습니다:
8. 확인
$ kubectl get configmap argocd-cmd-params-cm -n argocd -o yaml
apiVersion: v1
data:
redis.server: argocd-redis-ha-haproxy:6379
kind: ConfigMap
metadata:
annotations:
kubectl.kubernetes.io/last-applied-configuration: |
{"apiVersion":"v1","data":{"redis.server":"argocd-redis-ha-haproxy:6379"},"kind":"ConfigMap","metadata":{"annotations":{},"labels":{"app.kubernetes.io/name":"argocd-cmd-params-cm","app.kubernetes.io/part-of":"argocd"},"name":"argocd-cmd-params-cm","namespace":"argocd"}}
creationTimestamp: "2025-06-25T06:05:22Z"
labels:
app.kubernetes.io/name: argocd-cmd-params-cm
app.kubernetes.io/part-of: argocd
name: argocd-cmd-params-cm
namespace: argocd
resourceVersion: "193688"
uid: 0218c586-83df-480f-90ea-86737fb8149b

'Infra' 카테고리의 다른 글
| Cronjob을 활용한 기업정보 크롤링 파이프라인 구축하기(1) - 기능 구현 (0) | 2025.09.07 |
|---|---|
| EKS 클러스터 및 노드 그룹 생성, Kubectl 설치 및 연결 (0) | 2025.06.24 |
| 쿠버네티스 리소스 관리 pod 과 deployment (2) | 2025.06.22 |
| 모니터링 환경 설정 - 배포 포트가 변경될 때 8080...8081,, switching (0) | 2025.05.26 |
| 모니터링 환경을 구축 Promtail, Loki, Prometheus, Grafana, Logback (0) | 2025.05.26 |