目录¶
目录类型的应用程序会从.yml,.yaml和.json目录类型应用程序可以通过用户界面、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.directoryArgo CD 会自动检测源代码库/路径是否包含纯文件清单。
启用递归资源检测¶
默认情况下,目录应用程序只包含配置的存储库/路径根目录下的文件。
要启用递归资源检测,请设置递归选择。
argocd app set guestbook --directory-recurse
以声明方式做同样的事情,请使用以下语法:
apiVersion: argoproj.io/v1alpha1
kind: Application
spec:
source:
directory:
recurse: true
!!! 警告 Directory 类型的应用程序仅适用于普通清单文件。 如果 Argo CD 在设置目录: 时遇到 Kustomize、 helm 或 Jsonnet 文件,它将无法渲染清单。
包括/排除文件¶
只包括某些文件¶
要在目录应用程序中只包含某些文件/目录,请设置include值是一个 glob 模式。
例如,如果您只想包含.yaml文件,就可以被引用这种模式:
argocd app set guestbook --directory-include "*.yaml"
注意,必须引用*.yaml这样,外壳在将图案发送到 Argo CD 之前就不会扩展图案。
也可以包含多个模式。{}要包括.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/*'
排除某些文件¶
例如,在包含一些清单和一个非清单 yaml 文件的版本库中,可以像这样排除配置文件:
argocd app set guestbook --directory-exclude "config.yaml"
可以排除多个模式,例如配置文件和无关目录:
argocd app set guestbook --directory-exclude "{config.yaml,env-use2/*}"
如果两个include和exclude则应用程序将包含符合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'