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/*}"
include와 exclude가 모두 지정되면 Application은 include 패턴과 일치하고 exclude 패턴과 일치하지 않는 모든 파일을 포함합니다. 예를 들어 다음 소스 저장소를 고려하세요:
config.json
deployment.yaml
env-use2/
configmap.yaml
env-usw2/
configmap.yaml
config.json과 env-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