IT - DevOps/ArgoCD

ArgoCD Application 생성하기

happygram 2022. 11. 29. 23:09

ArgoCD 에는 Kubernetes 리소스들을 그룹으로 묶어서 관리하고 있습니다. 이를 Application 이라고 하는데, ArgoCD 에서 제공하는 Kubernetes CRD 입니다. Application 을 잘 작성하면 Service, Pod, ConfigMap 등을 그룹 단위로 관리할 수 있고 쉽게 유지보수 할 수 있는 장점이 있습니다.

이전에 작성한 ArgoCD Repositories 설정하기 글에서 샘플 매니페스트를 이미 작성하였는데, 이를 기반으로 Application 을 생성하는 과정을 설명하도록 하겠습니다.

Application 생성하기

ArgoCD 에 로그인 한 후 Applications 대시보드로 진입합니다.

ArgoCD - Applications

+NEW APP 혹은 CREATE APPLICATION 버튼을 눌러서 생성 화면을 오픈합니다.

ArgoCD - Application General

GENERAL

  • Application Name : Application 명칭
  • Project Name : ArgoCD 논리적 구분 단위
    특정 Repository, Kubernetes Cluster/Namespace 에 대해서 제한을 설정하거나 모두 오픈할 수 있습니다.
  • SYNC POLICY : 매니페스트 변경이 있는 경우 수동 혹은 자동으로 동기화하는 옵션

나머지 옵션은 추후 ArgoCD 고도화 편에서 추가로 다루도록 하겠습니다.

ArgoCD - Application Source/Destination

SOURCE

  • Repository URL : 앞서 설정된 매니페스트가 올라가 있는 Repository 를 선택합니다. ssh, https 모두 동일한 Repository 를 보고 있기 때문에 어느 선택이든 좋습니다.
  • Revision : git revision 을 선택합니다. 기본 main 브랜치가 선택되도록 HEAD 를 유지합니다.
  • Path : 앞서 만든 디렉터리를 지정합니다. 하위에 존재하는 매니페스트들이 Application 묶음 단위가 됩니다.

DESTINATION

  • Cluster URL : Kubernetes Cluster 의 API 서버의 주소를 지정합니다. 기본적으로 ArgoCD 가 설치된 Cluster 가 설정되어 있고 이를 선택합니다.
  • Namespace : 생성할 Application 이 위치할 Namespace 를 선택합니다.

CREATE 버튼을 눌러서 생성을 마무리합니다.

ArgoCD - Application Create

Application 생성된 후에는 각 조건으로 필터링 할 수 있는 컴포넌트가 좌측 메뉴에 추가로 생성됩니다. 추후 Application 이 많아지는 경우 필터링을 통해서 원하는 리소스만 조회할 수 있습니다.

Application 조회하기

생성한 Application 을 클릭해서 리소스들의 트리와 상세를 보도록 하겠습니다.

ArgoCD - Application Details Tree

가장 좌측의 리소스는 Application 입니다. 해당 Application 으로부터 Service, Deployment 가 생성 되었습니다. 또한 Service 로 부터 Endpoints, EndpointSlice 생성이 되고, Deployment 로부터 ReplicaSets 그리고 Pod 가 생성된 모습입니다.

kubectl 커맨드로 쿼리하여 역시 조회할 수 있습니다.

kubectl get deploy,pod,svc
NAME                               READY   UP-TO-DATE   AVAILABLE   AGE
deployment.apps/nginx-deployment   1/1     1            1           27m

NAME                                    READY   STATUS    RESTARTS   AGE
pod/nginx-deployment-7fb96c846b-dtdqq   1/1     Running   0          27m

NAME                 TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)   AGE
service/nginx-svc    ClusterIP   10.108.28.143   <none>        80/TCP    27m

Kubernetes 리소스의 전형적인 구조를 트리 형태로 전체를 볼 수 있도록 보여주고 있습니다. 이를 통해서 어느 리소스가 생성이 되어 있는 지 한 눈에 파악이 가능하고, 또한 어느 리소스에서 문제가 있는 지 업데이트가 되어있는 지 다양한 정보를 볼 수 있습니다.

ArgoCD - Application Pod Detail

Pod 를 클릭해서 Pod 의 매니페스트를 볼 수 있습니다. Pod 의 매니페스트를 요약해서 상단에서 보여주고 있고, 하단에는 실제 생성되어 있는 매니페스트의 전체를 YAML 형태로 볼 수 있습니다.

  • SYNC : Pod 의 매니페스트 변경이 있는 경우 이 버튼을 눌러서 동기화 할 수 있습니다.
  • EDIT : Live 상태의 매니페스트를 EDIT 버튼을 클릭해서 직접 변경 및 저장도 가능합니다.
  • DELETE : Pod 를 삭제할 수 있습니다. Pod 를 재시작 할 때 사용합니다.

ArgoCD - Application Details Pods

우측 상단의 Log out 좌측에 다양한 뷰의 형태로 Application 상세를 볼 수 있습니다. 두 번째 버튼을 클릭해서 Pod 의 상세를 볼 수 있는데 GROUP BY 의 Node, Parent Resource, Top Level Resource 를 선택해서 다양한 뷰로 볼 수 있습니다.

  • Node : Pod 가 스케줄 되어 있는 Node 의 정보를 간략히 볼 수 있고, Pod 에 할당되어 있는 CPU, Memory 도 조회할 수 있습니다.
  • Parent Resource : Pod 의 상위 리소스를 기준으로 볼 수 있습니다.
  • Top Level Resource : Pod 의 가장 상위 리소스를 기준으로 볼 수 있습니다.

이 외에도 APPLICATION DETAILS NETWORK,  APPLICATION DETAILS LIST 의 뷰를 선택해서 다양한 뷰로 조회가 가능합니다. 개인적으로는 첫 번째 뷰인 APPLICATION DETAILS TREE 를 가장 많이 보고 있습니다.

마무리

Kubernetes 의 리소스를 그룹 단위로 관리하는 Application 에 대해서 알아보았습니다. 리소스가 확장되면서 개별로 관리되는 Kubernetes 의 리소스는 기하적으로 매우 많아질 수 있는데 이를 Application 단위로 관리하는 것은 매우 큰 장점이라고 생각합니다. 이를 통해서 유지보수 하는 입장에서 큰 수고로움을 덜을 수 있고, 더욱 집중할 수 있는 곳에 시간을 투자할 수 있습니다.

Application 의 단위를 어느 기준으로 가져갈 지 회사마다 조직마다 매우 다를 것이기 때문에 이를 정의하는 것이 중요하다고 생각합니다. 처음 Application 의 단위를 잘 정의해서 이 장점을 잘 활용하면 좋을 것 같습니다.

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

ArgoCD Projects 설정하기  (0) 2022.12.06
ArgoCD Repositories 설정하기  (0) 2022.11.29
ArgoCD helm 으로 설치하기  (0) 2022.11.25