[ArgoCD] RBAC 액션별로 제공하기
# 공식 문서
https://argo-cd.readthedocs.io/en/stable/operator-manual/rbac/
# policy 규칙
p, <role/user/group>, <resource>, <action>, <appproject>/<object> allow
Resources: `clusters`, `projects`, `applications`, `applicationsets`, `repositories`, `certificates`, `accounts`, `gpgkeys`, `logs`, `exec`, `extensions`
Actions: `get`, `create`, `update`, `delete`, `sync`, `override`, `action/<group/kind/action-name>`
이 때 `sync`, `override`, `action/*` 액션은 applications 리소스에 대해서만 사용 가능
# action/ 밑에 쓸 수 있는 액션들 확인하는 방법
기본적으로는 ArgoCD Application단위의 액션만 제공된다.
하지만 애플리케이션 내부 리소스들에 대한 액션도 권한을 별도로 부여할 수 있다.
https://github.com/argoproj/argo-cd/tree/master/resource_customizations
여기에 적힌 경로에 있는 애들 사용 가능
즉, deployment restart 주고싶다 → API순서대로 찾아보면 됨
apps/Deployment/actions/ 경로로 가보면 `pause`, `restart`, `resume` 이 존재함 -> 사용 가능
Rollout의 경우, argoproj.io/Rollout/actions 경로에 `abort`, `promote-full`, `resume`, `retry` 존재함 → 얘네들 권한 줄 수 있다는 뜻
만약 developer 란 롤에 Deployment, Rollout, STS 등의 Restart 권한만 주고 싶다면 아래와 같이 적용 가능
p, role:developer, applications, action/apps/*/restart, */*, allow
p, role:developer, applications, action/argoproj.io/Rollout/restart, */*, allow
여기에 없는 놈들인 경우 원한다면 직접 커스텀 리소스 액션 만들어서 사용
https://argo-cd.readthedocs.io/en/stable/operator-manual/resource_actions/#custom-resource-actions
끝~