Application Specification
The following describes all the available fields of an Application:
apiVersion: argoproj.io/v1alpha1kind: Applicationmetadata:name: guestbook# You'll usually want to add your resources to the argocd namespace.namespace: argocd# Add this finalizer ONLY if you want these to cascade delete.finalizers:# The default behaviour is foreground cascading deletion- resources-finalizer.argocd.argoproj.io# Alternatively, you can use background cascading deletion# - resources-finalizer.argocd.argoproj.io/background# Add labels to your application object.labels:name: guestbookspec:# The project the application belongs to.project: default# Source of the application manifestssource:repoURL: https://github.com/argoproj/argocd-example-apps.git # Can point to either a Helm chart repo or a git repo.targetRevision: HEAD # For Helm, this refers to the chart version.path: guestbook # This has no meaning for Helm charts pulled directly from a Helm repo instead of git.# helm specific configchart: chart-name # Set this when pulling directly from a Helm repo. DO NOT set for git-hosted Helm charts.helm:passCredentials: false # If true then adds --pass-credentials to Helm commands to pass credentials to all domains# Extra parameters to set (same as setting through values.yaml, but these take precedence)parameters:- name: "nginx-ingress.controller.service.annotations.external-dns\\.alpha\\.kubernetes\\.io/hostname"value: mydomain.example.com- name: "ingress.annotations.kubernetes\\.io/tls-acme"value: "true"forceString: true # ensures that value is treated as a string# Use the contents of files as parameters (uses Helm's --set-file)fileParameters:- name: configpath: files/config.json# Release name override (defaults to application name)releaseName: guestbook# Helm values files for overriding values in the helm chart# The path is relative to the spec.source.path directory defined abovevalueFiles:- values-prod.yaml# Ignore locally missing valueFiles when installing Helm chart. Defaults to falseignoreMissingValueFiles: false# Values file as block file. Prefer to use valuesObject if possible (see below)values: |ingress:enabled: truepath: /hosts:- mydomain.example.comannotations:kubernetes.io/ingress.class: nginxkubernetes.io/tls-acme: "true"labels: {}tls:- secretName: mydomain-tlshosts:- mydomain.example.com# Values file as block file. This takes precedence over valuesvaluesObject:ingress:enabled: truepath: /hosts:- mydomain.example.comannotations:kubernetes.io/ingress.class: nginxkubernetes.io/tls-acme: "true"labels: {}tls:- secretName: mydomain-tlshosts:- mydomain.example.com# Skip custom resource definition installation if chart contains custom resource definitions. Defaults to falseskipCrds: false# Optional Helm version to template with. If omitted it will fall back to look at the 'apiVersion' in Chart.yaml# and decide which Helm binary to use automatically. This field can be either 'v2' or 'v3'.version: v2# kustomize specific configkustomize:# Optional kustomize version. Note: version must be configured in argocd-cm ConfigMapversion: v3.5.4# Supported kustomize transformers. https://kubectl.docs.kubernetes.io/references/kustomize/kustomization/namePrefix: prod-nameSuffix: -some-suffixcommonLabels:foo: barcommonAnnotations:beep: boop-${ARGOCD_APP_REVISION}# Toggle which enables/disables env variables substitution in commonAnnotationscommonAnnotationsEnvsubst: trueimages:- gcr.io/heptio-images/ks-guestbook-demo:0.2- my-app=gcr.io/my-repo/my-app:0.1namespace: custom-namespacereplicas:- name: kustomize-guestbook-uicount: 4# directorydirectory:recurse: truejsonnet:# A list of Jsonnet External VariablesextVars:- name: foovalue: bar# You can use "code to determine if the value is either string (false, the default) or Jsonnet code (if code is true).- code: truename: bazvalue: "true"# A list of Jsonnet Top-level Argumentstlas:- code: falsename: foovalue: bar# Exclude contains a glob pattern to match paths against that should be explicitly excluded from being used during# manifest generation. This takes precedence over the `include` field.# To match multiple patterns, wrap the patterns in {} and separate them with commas. For example: '{config.yaml,env-use2/*}'exclude: 'config.yaml'# Include contains a glob pattern to match paths against that should be explicitly included during manifest# generation. If this field is set, only matching manifests will be included.# To match multiple patterns, wrap the patterns in {} and separate them with commas. For example: '{*.yml,*.yaml}'include: '*.yaml'# plugin specific configplugin:# If the plugin is defined as a sidecar and name is not passed, the plugin will be automatically matched with the# Application according to the plugin's discovery rules.name: mypluginname# environment variables passed to the pluginenv:- name: FOOvalue: bar# Plugin parameters are new in v2.5.parameters:- name: string-paramstring: example-string- name: array-paramarray: [item1, item2]- name: map-parammap:param-name: param-value# Sources field specifies the list of sources for the applicationsources:- repoURL: https://github.com/argoproj/argocd-example-apps.git # Can point to either a Helm chart repo or a git repo.targetRevision: HEAD # For Helm, this refers to the chart version.path: guestbook # This has no meaning for Helm charts pulled directly from a Helm repo instead of git.ref: my-repo # For Helm, acts as a reference to this source for fetching values files from this source. Has no meaning when under `source` field# Destination cluster and namespace to deploy the applicationdestination:# cluster API URLserver: https://kubernetes.default.svc# or cluster name# name: in-cluster# The namespace will only be set for namespace-scoped resources that have not set a value for .metadata.namespacenamespace: guestbook# Extra information to show in the Argo CD Application details tabinfo:- name: 'Example:'value: 'https://example.com'# Sync policysyncPolicy:automated: # automated sync by default retries failed attempts 5 times with following delays between attempts ( 5s, 10s, 20s, 40s, 80s ); retry controlled using `retry` field.prune: true # Specifies if resources should be pruned during auto-syncing ( false by default ).selfHeal: true # Specifies if partial app sync should be executed when resources are changed only in target Kubernetes cluster and no git change detected ( false by default ).allowEmpty: false # Allows deleting all application resources during automatic syncing ( false by default ).syncOptions: # Sync options which modifies sync behavior- Validate=false # disables resource validation (equivalent to 'kubectl apply --validate=false') ( true by default ).- CreateNamespace=true # Namespace Auto-Creation ensures that namespace specified as the application destination exists in the destination cluster.- PrunePropagationPolicy=foreground # Supported policies are background, foreground and orphan.- PruneLast=true # Allow the ability for resource pruning to happen as a final, implicit wave of a sync operation- RespectIgnoreDifferences=true # When syncing changes, respect fields ignored by the ignoreDifferences configurationmanagedNamespaceMetadata: # Sets the metadata for the application namespace. Only valid if CreateNamespace=true (see above), otherwise it's a no-op.labels: # The labels to set on the application namespaceany: labelyou: likeannotations: # The annotations to set on the application namespacethe: sameapplies: forannotations: on-the-namespace# The retry feature is available since v1.7retry:limit: 5 # number of failed sync attempt retries; unlimited number of attempts if less than 0backoff:duration: 5s # the amount to back off. Default unit is seconds, but could also be a duration (e.g. "2m", "1h")factor: 2 # a factor to multiply the base duration after each failed retrymaxDuration: 3m # the maximum amount of time allowed for the backoff strategy# Will ignore differences between live and desired states during the diff. Note that these configurations are not# used during the sync process unless the `RespectIgnoreDifferences=true` sync option is enabled.ignoreDifferences:# for the specified json pointers- group: appskind: DeploymentjsonPointers:- /spec/replicas- kind: ConfigMapjqPathExpressions:- '.data["config.yaml"].auth'# for the specified managedFields managers- group: "*"kind: "*"managedFieldsManagers:- kube-controller-manager# Name and namespace are optional. If specified, they must match exactly, these are not glob patterns.name: my-deploymentnamespace: my-namespace# RevisionHistoryLimit limits the number of items kept in the application's revision history, which is used for# informational purposes as well as for rollbacks to previous versions. This should only be changed in exceptional# circumstances. Setting to zero will store no history. This will reduce storage used. Increasing will increase the# space used to store the history, so we do not recommend increasing it.revisionHistoryLimit: 10