Argo CD 애플리케이션 관리

Argo CD 애플리케이션 관리

1️⃣ Application 객체 생성 및 설정


Argo CD에서 애플리케이션은 Kubernetes 클러스터에 배포할 애플리케이션을 나타내는 기본적인 단위입니다. Application 객체는 Git 저장소에서 Kubernetes 리소스를 가져와 자동으로 배포합니다.

1. Application 객체란?

Application 객체는 GitOps에서 애플리케이션을 정의하고, Git 리포지토리와 클러스터 간의 동기화를 관리하는 데 사용됩니다. 이를 통해 Argo CD는 애플리케이션의 상태를 Git과 동기화합니다.

2. Application 객체 생성 예시

Application 객체를 생성하기 위해서는 먼저 Git 리포지토리와 Kubernetes 클러스터를 정의해야 합니다. 아래는 application.yaml을 사용한 예시입니다.

apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
  name: my-app
  namespace: argocd
spec:
  destination:
    server: https://kubernetes.default.svc
    namespace: default
  source:
    repoURL: https://github.com/my-org/my-app.git
    targetRevision: HEAD
    path: manifests
  project: default
  syncPolicy:
    automated:
      prune: true
      selfHeal: true

이 YAML 파일은 GitHub 리포지토리의 manifests 폴더에서 Kubernetes 리소스를 가져와 default 네임스페이스에 배포합니다. syncPolicy는 자동 동기화 및 자원 정리를 활성화합니다.


2️⃣ ApplicationSet을 활용한 대규모 애플리케이션 배포

ApplicationSet은 여러 개의 애플리케이션을 관리할 수 있는 기능을 제공합니다. 이를 사용하면 대규모 애플리케이션 환경에서 여러 개의 Application 객체를 동적으로 생성하고 관리할 수 있습니다.

1. ApplicationSet 개요

ApplicationSet은 여러 Git 리포지토리 또는 클러스터에 걸쳐 동일한 애플리케이션을 배포하는 데 유용합니다. 예를 들어, 여러 환경(개발, 스테이징, 프로덕션)에서 동일한 애플리케이션을 자동으로 배포할 수 있습니다.

2. ApplicationSet 예시

아래는 ApplicationSet을 사용하여 여러 애플리케이션을 배포하는 예시입니다. git 소스를 기반으로 애플리케이션을 배포합니다.

apiVersion: argoproj.io/v1alpha1
kind: ApplicationSet
metadata:
  name: my-app-set
spec:
  generators:
  - git:
      repoURL: https://github.com/my-org/my-app.git
      revision: HEAD
      directories:
        - path: apps/*
  template:
    metadata:
      name: "{{path.basename}}"
    spec:
      destination:
        server: https://kubernetes.default.svc
        namespace: default
      source:
        repoURL: https://github.com/my-org/my-app.git
        targetRevision: HEAD
        path: "{{path}}"
      project: default
      syncPolicy:
        automated:
          prune: true
          selfHeal: true

이 예시에서는 git 저장소의 여러 디렉토리 내 애플리케이션들을 동적으로 관리합니다.


3️⃣ Helm Chart 기반 애플리케이션 배포

Helm Chart는 Kubernetes 애플리케이션의 패키징 방식으로, Argo CD는 Helm Chart를 사용하여 애플리케이션을 배포할 수 있습니다. Helm Chart는 애플리케이션의 리소스를 템플릿화하여 쉽게 배포하고 관리할 수 있게 도와줍니다.

1. Helm Chart로 애플리케이션 배포

Helm Chart를 사용하여 Argo CD에서 애플리케이션을 배포하려면, 먼저 Helm Chart를 Git 리포지토리 또는 Helm 레지스트리에 저장해야 합니다.

2. Helm Chart 배포 예시

apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
  name: my-helm-app
  namespace: argocd
spec:
  destination:
    server: https://kubernetes.default.svc
    namespace: default
  source:
    repoURL: https://github.com/my-org/my-helm-chart.git
    targetRevision: HEAD
    chart: my-chart
  project: default
  syncPolicy:
    automated:
      prune: true
      selfHeal: true

이 예시는 Git 저장소에서 my-helm-chart Helm Chart를 가져와 default 네임스페이스에 배포합니다.


4️⃣ Kustomize를 이용한 배포 관리

Kustomize는 Kubernetes 리소스의 오버레이 및 패치 관리 도구로, Argo CD는 Kustomize를 지원하여 다양한 환경에 맞는 배포를 관리할 수 있습니다.

1. Kustomize란?

Kustomize는 기본 리소스를 변형하여 다른 환경에 맞게 설정할 수 있는 도구입니다. 예를 들어, 개발, 테스트, 프로덕션 환경에서 동일한 애플리케이션을 배포할 수 있습니다.

2. Kustomize 배포 예시

apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
  name: my-kustomize-app
  namespace: argocd
spec:
  destination:
    server: https://kubernetes.default.svc
    namespace: default
  source:
    repoURL: https://github.com/my-org/my-kustomize-app.git
    targetRevision: HEAD
    path: overlays/prod
  project: default
  syncPolicy:
    automated:
      prune: true
      selfHeal: true

이 예시는 Git 저장소에서 prod 오버레이를 사용하여 프로덕션 환경에 맞게 배포합니다.


5️⃣ Manifest 파일(YAML) 직접 적용하기

Argo CD는 Helm, Kustomize 외에도 Kubernetes 리소스를 직접 YAML 파일로 관리할 수 있습니다. 이 방법을 사용하면 애플리케이션을 더 세밀하게 제어할 수 있습니다.

1. Manifest 파일 직접 적용 예시

apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
  name: my-manifest-app
  namespace: argocd
spec:
  destination:
    server: https://kubernetes.default.svc
    namespace: default
  source:
    repoURL: https://github.com/my-org/my-manifest-app.git
    targetRevision: HEAD
    path: manifests
  project: default
  syncPolicy:
    automated:
      prune: true
      selfHeal: true

이 예시는 Git 저장소에서 Kubernetes 리소스가 정의된 manifests 폴더를 직접 가져와 배포합니다.


6️⃣ Argo CD를 통한 마이크로서비스 배포 및 관리

Argo CD는 마이크로서비스 아키텍처를 관리하는 데 매우 유용한 도구입니다. 여러 개의 마이크로서비스를 각기 다른 Git 리포지토리 또는 Helm Chart로 관리하며, 각 서비스의 배포를 Argo CD로 자동화할 수 있습니다.

1. 마이크로서비스 배포 예시

마이크로서비스 애플리케이션을 여러 개의 Application 객체로 관리하며, 각각 다른 Git 리포지토리에서 소스를 가져올 수 있습니다.

apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
  name: service1
  namespace: argocd
spec:
  destination:
    server: https://kubernetes.default.svc
    namespace: default
  source:
    repoURL: https://github.com/my-org/service1.git
    targetRevision: HEAD
    path: manifests
  project: default
  syncPolicy:
    automated:
      prune: true
      selfHeal: true

이와 같은 방식으로 각 마이크로서비스를 별도로 관리할 수 있습니다. Argo CD는 여러 서비스의 배포 및 상태를 한눈에 관리할 수 있는 기능을 제공합니다.

RSS Feed
마지막 수정일자