Directory 애플리케이션

Directory 애플리케이션 (Directory)

디렉터리 유형의 애플리케이션은 .yml, .yaml, .json 파일에서 일반 매니페스트 파일을 로드합니다. 이 문서는 재귀 리소스 감지 활성화, 파일 포함/제외, 파일 렌더링 건너뛰기 등 directory 애플리케이션 구성 방법을 다룹니다.

출처: 문서

본문

Directory

디렉터리 유형의 애플리케이션은 .yml, .yaml, .json 파일에서 일반 매니페스트 파일을 로드합니다. 디렉터리 유형 애플리케이션은 UI, CLI, 또는 선언적으로 생성할 수 있습니다. 선언적 구문은 다음과 같습니다:

apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
  name: guestbook
spec:
  destination:
    namespace: default
    server: https://kubernetes.default.svc
  project: default
  source:
    path: guestbook
    repoURL: https://github.com/argoproj/argocd-example-apps.git
    targetRevision: HEAD

추가 구성 옵션을 위해 spec.source.directory 필드를 명시적으로 추가할 필요는 없습니다. Argo CD는 소스 저장소/경로에 일반 매니페스트 파일이 포함되어 있음을 자동으로 감지합니다.

재귀 리소스 감지 활성화

기본적으로 directory 애플리케이션은 구성된 저장소/경로의 루트에 있는 파일만 포함합니다.

재귀 리소스 감지를 활성화하려면 recurse 옵션을 설정하세요.

argocd app set guestbook --directory-recurse

동일한 작업을 선언적으로 하려면 다음 구문을 사용하세요:

apiVersion: argoproj.io/v1alpha1
kind: Application
spec:
  source:
    directory:
      recurse: true

경고: Directory 유형 애플리케이션은 일반 매니페스트 파일에만 작동합니다. directory:가 설정된 상태에서 Argo CD가 Kustomize, Helm 또는 Jsonnet 파일을 만나면 매니페스트를 렌더링하지 못합니다.

파일 포함/제외

특정 파일만 포함

directory 애플리케이션에서 특정 파일/디렉터리만 포함하려면 include 옵션을 설정하세요. 값은 glob 패턴입니다.

예를 들어 .yaml 파일만 포함하려면 다음 패턴을 사용할 수 있습니다:

argocd app set guestbook --directory-include "*.yaml"

참고: 패턴이 Argo CD로 전송되기 전에 셸이 확장하지 않도록 *.yaml을 인용하는 것이 중요합니다.

여러 패턴을 포함하는 것도 가능합니다. 패턴을 {}로 감싸고 쉼표로 구분하세요. .yml.yaml 파일을 포함하려면 다음 패턴을 사용하세요:

argocd app set guestbook --directory-include "{*.yml,*.yaml}"

특정 디렉터리만 포함하려면 다음과 같은 패턴을 사용하세요:

argocd app set guestbook --directory-include "some-directory/*"

동일한 작업을 선언적으로 하려면 다음 구문을 사용하세요:

apiVersion: argoproj.io/v1alpha1
kind: Application
spec:
  source:
    directory:
      include: 'some-directory/*'

특정 파일 제외

directory 애플리케이션에서 패턴과 일치하는 파일을 제외할 수 있습니다. 예를 들어 일부 매니페스트와 매니페스트가 아닌 YAML 파일이 포함된 저장소에서 구성 파일을 다음과 같이 제외할 수 있습니다:

argocd app set guestbook --directory-exclude "config.yaml"

하나 이상의 패턴을 제외하는 것도 가능합니다. 예를 들어 구성 파일과 관련 없는 디렉터리:

argocd app set guestbook --directory-exclude "{config.yaml,env-use2/*}"

includeexclude가 모두 지정되면 Application은 include 패턴과 일치하고 exclude 패턴과 일치하지 않는 모든 파일을 포함합니다. 예를 들어 다음 소스 저장소를 고려하세요:

config.json
deployment.yaml
env-use2/
  configmap.yaml
env-usw2/
  configmap.yaml

config.jsonenv-usw2 디렉터리를 제외하려면 다음 패턴 조합을 사용할 수 있습니다:

argocd app set guestbook --directory-include "*.yaml" --directory-exclude "{config.json,env-usw2/*}"

선언적 구문은 다음과 같습니다:

apiVersion: argoproj.io/v1alpha1
kind: Application
spec:
  source:
    directory:
      exclude: '{config.json,env-usw2/*}'
      include: '*.yaml'

파일 렌더링 건너뛰기

어떤 경우에는 저장소에 apiVersion, kind, metadata 같은 필드를 포함하여 Kubernetes 매니페스트처럼 보이지만 실제 Kubernetes 리소스로 렌더링되거나 적용되도록 의도되지 않은 YAML 파일이 있을 수 있습니다. 예로는 Helm values.yaml 파일이나 CI/CD 파이프라인에서 사용하는 구성 스니펫이 있습니다.

Argo CD가 이러한 파일을 매니페스트로 파싱하려 시도하는 것(오류를 일으킬 수 있음)을 방지하려면 특수 주석 지시문으로 명시적으로 건너뛰도록 표시할 수 있습니다:

# +argocd:skip-file-rendering

이 주석이 파일 어디에든 존재하면 Argo CD는 매니페스트 처리 중에 해당 파일을 무시합니다. 이는 실제 매니페스트가 아닌 Kubernetes 유사 파일의 안전한 공존을 허용합니다.

예시
# +argocd:skip-file-rendering
apiVersion: v1
kind: ConfigMap
metadata:
  name: example
data:
  not-actually: a-manifest

더 알아보기 (Learn more)