공부/Open Source

[ArgoCD] RBAC 액션별로 제공하기

haejang 2024. 6. 18. 15:09
728x90
728x90

 

# 공식 문서

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

 

argo-cd/resource_customizations at master · argoproj/argo-cd

Declarative Continuous Deployment for Kubernetes. Contribute to argoproj/argo-cd development by creating an account on GitHub.

github.com

 

여기에 적힌 경로에 있는 애들 사용 가능
즉, 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

 

 

끝~

 

 

 

728x90
728x90