IT - DevOps/ArgoCD

ArgoCD Projects 설정하기

happygram 2022. 12. 6. 23:54

ArgoCD Project 는 ArgoCD Application 의 논리적 그룹입니다. 수 많은 ArgoCD Application 들을 그룹화하고 Application 들의 검색을 용이하게 하고 권한을 설정하여 조회, 생성, 변경, 삭제를 제어할 수 있으며 Application 소스의 원천이 되는 Repositories 를 제한하거나 Application 이 기동되는 Kubernetes 클러스터를 제한할 수 있습니다.

ArgoCD Repositories, Application 에 대해서 궁금 하시다면 이전 글을 참조 해주세요.

기본 Project

처음 ArgoCD 를 설치하고 기본적으로 생성된 default Project 가 있습니다. Settings > Projects 에서 확인할 수 있습니다.

ArgoCD - Projects
ArgoCD - default Project details 1
ArgoCD - default Project details 2

  • GENERAL : Project 명칭은 default
  • SOURCE REPOSITORIES / SCOPED REPOSITORIES : Application 의 원천이 되는 소스의 Repositories
  • DESTINATIONS / SCOPED CLUSTERS : Application 을 기동할 Kubernetes Cluster 및 Namespace
  • CLUSTER ALLOW & DENY LIST : Kubernetes 리소스 중 Cluster 리소스의 Kind, Group 허용 및 제한
  • NAMESPACE ALLOW & DENY LIST : Kubernetes 리소스 중 Namespace 리소스의 Kind, Group 허용 및 제한

요약해보면 모든 Repositories 에 대해서 소스를 허용하고 모든 Cluster 에 대해서 기동이 가능하며 실행할 Namespace 도 제한을 두지 않는 자유로운 Project 입니다. 제한으로부터 자유로운 default Project 를 통해서 ArgoCD Application 을 생성하는 경우 쉽게 생성이 가능하지만 실수로 원치 않는 Cluster 혹은 Namespace 에 생성이 될 수 있는 단점이 있습니다. 이보다 조금은 제한이 있는 Project 를 생성해서 어떤 동작들을 제한하고 있는 지 한 번 알아보도록 하겠습니다.

Project 생성하기

Settings > Projects 에서 +NEW PROJECT 버튼을 통해서 Project 를 생성할 수 있습니다. Project 를 생성하고 권한을 제한하도록 하겠습니다.

  • GENERAL : Project 명칭은 happygram
  • SOURCE REPOSITORIES : git@github.com:happygram/argocd.git
  • DESTINATIONS
    • Server : https://kubernetes.default.svc
    • Name : in-cluster
    • Namespace : happygram
  • CLUSTER ALLOW
    • Kind : *
    • Group : *

SSH 로 연결해둔 Repository 만 허용하고, 현재 ArgoCD 가 기동 중인 Cluster 의 happygram Namespace 만 허용하도록 생성하였습니다.

ArgoCD Application 생성 테스트

테스트케이스 1. Namespace default 로 설정

Type Name
Project Name happygram
Repository URL git@github.com:happygram/argocd.git
Cluster URL https://kubernetes.default.svc
Namespace default

ArgoCD - Create Application Testcase 1

=> 생성 실패

테스트케이스 2. Repository URL https 로 설정

Type Name
Project Name happygram
Repository URL https://github.com/happygram/argocd.git
Cluster URL https://kubernetes.default.svc
Namespace happygram

ArgoCD - Create Application Testcase 2

=> 생성 실패

테스트케이스 3. Namespace happygram / Repository URL ssh 로 설정

Type Name
Project Name happygram
Repository URL git@github.com:happygram/argocd.git
Cluster URL https://kubernetes.default.svc
Namespace happygram

ArgoCD - Create Application Testcase 3

=> 생성 성공

마무리

새롭게 생성한 Project 를 통해서 Application 의 생성 제한을 테스트 해보았습니다. Project 에 설정된 제한에 걸리지 않도록 생성을 해야 비로소 Application 이 생성되는 것을 확인할 수 있었습니다. 이러한 Project 의 장점을 살려서 Application 을 논리적 그룹화 할 수 있을 뿐 아니라 생성 실수도 방지할 수 있고 더욱 견고한 Application 들을 그룹화 할 수 있다는 것을 알 수 있습니다.

Project 를 잘 활용하여 검색에도 도움받고 건강한 ArgoCD Application 을 생성할 수 있도록 도움을 받을 수 있도록 합니다.

'IT - DevOps > ArgoCD' 카테고리의 다른 글

ArgoCD Application 생성하기  (0) 2022.11.29
ArgoCD Repositories 설정하기  (0) 2022.11.29
ArgoCD helm 으로 설치하기  (0) 2022.11.25