Notice
Recent Posts
Recent Comments
Link
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

Study_note

[CICD] ArgoCD Project, Application, App of apps 본문

Terraform

[CICD] ArgoCD Project, Application, App of apps

Study_note 2023. 3. 16. 21:15

ArgoCD를 사용하고 처음 app을 만들면 아래와 같이  Application과 Project을 선택할 수 있다.

간단 하게 Application와 Project를 정의하면 아래와 같다

Application 이란?

ArgoCD가 사용하는 CRD 중 하나로 어떤 Repository에서 어떤 리소스들을 어떻게 배포할 지를 정의

 

Project 란

Application이 속하는 논리적 그룹

 

ArgoCD에서 Application-test라는 생성하고 확인하면 다음과 같이 확인 가능하다.  

application에 대한 상세정보 또한 kubectl describe로 확인할 수 있고 neat 플러그인 사용해서 확인 가능

 

위에서 설명했듯이 Project는 Application이 속하는 논리적 그룹이라 했다 아래와 같은 형식이라 생각하면된다.

 

Project는 여러가지 정보로 구성됩니다. Git repo, sync할 클러스터 정보, Role 등이 있다.

Project에 속한 Application의 대부분 설정은 Project에 설정된 정보만 사용할 수 있다.

 

Project 생성과 설정은 다음과 같다.

 

위와 같은 순서로 project를 생성하면 아래처럼 몇가지 정보를 설정할 수 있는 창이 나온다.

각 의하는 설정은 아래와 같다

Source Repositories는 applicatoin이 사용한 git repo주소를 제한

(특정 repo에 있는 리소스만 허용, 다른 repo에 있는 리소스들을 배포 방지)

 

Destinations은 sync를 허용할 쿠버네티스 클러스터 목록

 

Cluster Resource Allow List는 sync할 때 허용할 쿠버네티스 리소스 목록

(CLUSTER RESOURCE ALLOW,DENY LIST, NAMESPACE RESOURCE ALLOW,DENY LIST 등 원하는 리소스만을 허용, 거부 가능)

 

해당 설정들을 적용해 원하는 프로젝트, 리소스, 클러스터 끼리 논리적으로 분리 가능하다.

 

 

App of apps

여러 Application을 하나의 Application으로 관리하는 방법으로 주로 여러 application을 관리할 때 사용하는데 공식문서를 보면 클러스터 부트스트래핑에서 많이 사용한다고한다. 클러스터에 필요한 리소스를 빠르게 배포하는 방식이다.

필요한 리소스를 application으로 정의하고 여러 application을 app of apps패턴으로 관리하면, 쉽고 빠르게 리소스를 새로운 클러스터 배포할 수 있다. 

App of apps의 공식문서와 git을 참고하면 좋다

https://argo-cd.readthedocs.io/en/stable/operator-manual/declarative-setup/#app-of-apps

https://github.com/argoproj/argocd-example-apps

 

위에 깃 허브에서 있는 예제를 실행해보면

 

apps레포에 templates경로로 가면 yaml 파일들 확인 가능하다.

helm-guestbook.yaml 확인해보면 아래와 같고 spec.source.path는 헬름 파일 경로가 있다

최상단인 apps레포로 올라가면 spec.source.path로 지정한 디렉토리가 있고 내부에는 helm파일을 확인할 수 있다.

 

해당 예제를 apps레포로 하고 path를 apps로 지정하면 설정 파일 같이 4개의 application과, namespace가 생성되는것을 확인 가능하며 그림과 같이 app-of-apps라는 application에 속해있는것을 확인 가능하다.

 

아래 그림도 마찬가지로 하나의 application을 생성했는데 4개의 application이 같이 생성되는것을 확인 가능

이것이 app-of-apps구조이며 부트스트래핑같은 처음 생성하는 클러스터에 리소스들을 빠르게 생성 가능하다.

 

Comments