Skip to content

目录

目录类型的应用程序会从.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/*}"

如果两个includeexclude则应用程序将包含符合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'