Project
project는 argocd가 관리하는 논리적 그룹이고 application을 관리합니다. 사용자가 생성한 application은 무조건 project에 속합니다.
argocd를 설치하면 쿠버네티스 default namespace처럼 default project가 존재합니다. 그러므로 별도로 project를 생성하지 않아도 appliaction을 생성할 수 있었습니다
kubectl -n argocd get AppProject
Shell
복사
구성요소
Project는 여러가지 정보로 구성됩니다. Git repo, sync할 쿠버네티스 클러스터 정보, Role 등이 있습니다. Project에 속한 Application의 대부분 설정은 Project에 설정된 정보만 사용할 수 있습니다. Project에 종속성(Dependency)이 생기는 특성을 이용하여 Appliction을 그룹핑하여 관리할 수 있습니다.
활용사례
예를 들어 Team이름단위로 Project를 만들 수 있습니다. 또 다른 예는 배포환경(dev, stg, prd)에 따라 Project를 분리할 수 있습니다.
프로젝트 생성
프로젝트 설정
project 생성은 쉽지만 설정은 매우 많습니다. Project생성은 단순히 그룹이름을 만드는 것이고, Project에 속한 Appliction에 대한 세부내용은 Project 설정에서 합니다.
default Project는 모든 설정이 풀려있어 Application을 제한 없이 생성할 수 있습니다.
•
[Source Repositories]는 applicatoin이 사용한 git repo주소를 제한합니다. 별표(아스타)로 되어 있기 때문에 default는 모든 git repo을 사용할 수 있습니다.
•
[Destinations]은 sync를 허용할 쿠버네티스 클러스터 목록입니다. default project는 별표(아스타)로 되어 있어서 모든 쿠버네티스 클러스터에 sync할 수 있습니다.
•
[Cluster Resource Allow List]는 sync할 때 허용할 쿠버네티스 리소스 목록입니다. default project는 별표(아스타)로 되어 있어서 모든 쿠버네티스 리소스를 sync할 수 있습니다.
Project 권한(Role)과 예제
Project Role은 특정 Project에만 유효한 Role입니다. 예를 들어 test1 Project에 생성한 Role은 test1에만 유효하고 다른 Project에는 사용할 수 없습니다. 그리고 web UI로그인은 못하고 JWT방식만 지원합니다.
Argo CD전체 관리 권한보다는 Project만 관리할 수 있는 제한된 권한을 설정할 때 적합합니다.
생성 방법
web UI, Argo CD CLI, appproject CRD 모두 가능합니다.
•
Web UI
•
Policy 설정
•
JWT 생성
Project Role은 곧바로 Project에 적용되어 사용되지 않고 JWT를 발급받아 사용할 수 있습니다. JWT는 Project Role설정 화면에서 생성할 수 있습니다. 생성된 JWT는 설정화면이 닫힌 후에 알 수 없으므로 잘 보관해야 합니다.
•
JWT 사용 예
argocd account can-i로 test1 Project의 Application 조회(get)이 가능한지 확인할 수 있습니다. Argo CD login을 하지 않아도 TOKEN으로 인증과 인가가 가능해졌습니다.
TOKEN=<TOKEN>
argocd account can-i get applications 'test1/*' --auth-token $TOKEN
Shell
복사
test1 Project에 Application 생성 권한이 있는지 확인해보면 당연히 create application Policy를 추가하지 않았으므로 No 메세지가 나옵니다.
argocd account can-i create applications 'test1/*' --auth-token $TOKEN
Shell
복사
Create 권한 추가
•
다시 시도해보면 yes가 출력된다.
argocd account can-i create applications 'test1/*' --auth-token $TOKEN
Shell
복사
















