mirror of
https://github.com/argoproj/argo-cd.git
synced 2026-02-20 01:28:45 +01:00
Signed-off-by: sangyeong01 <tkddud386@gmail.com> Signed-off-by: sangyeong01 <sy.park@alpacax.com> Signed-off-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com> Co-authored-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>
300 lines
14 KiB
YAML
300 lines
14 KiB
YAML
apiVersion: argoproj.io/v1alpha1
|
|
kind: Application
|
|
metadata:
|
|
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: guestbook
|
|
spec:
|
|
# The project the application belongs to.
|
|
project: default
|
|
|
|
# Source of the application manifests
|
|
source:
|
|
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 config
|
|
chart: 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: config
|
|
path: 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 above
|
|
valueFiles:
|
|
- values-prod.yaml
|
|
|
|
# Ignore locally missing valueFiles when installing Helm chart. Defaults to false
|
|
ignoreMissingValueFiles: false
|
|
|
|
# Values file as block file. Prefer to use valuesObject if possible (see below)
|
|
values: |
|
|
ingress:
|
|
enabled: true
|
|
path: /
|
|
hosts:
|
|
- mydomain.example.com
|
|
annotations:
|
|
kubernetes.io/ingress.class: nginx
|
|
kubernetes.io/tls-acme: "true"
|
|
labels: {}
|
|
tls:
|
|
- secretName: mydomain-tls
|
|
hosts:
|
|
- mydomain.example.com
|
|
|
|
# Values file as block file. This takes precedence over values
|
|
valuesObject:
|
|
ingress:
|
|
enabled: true
|
|
path: /
|
|
hosts:
|
|
- mydomain.example.com
|
|
annotations:
|
|
kubernetes.io/ingress.class: nginx
|
|
kubernetes.io/tls-acme: "true"
|
|
labels: {}
|
|
tls:
|
|
- secretName: mydomain-tls
|
|
hosts:
|
|
- mydomain.example.com
|
|
|
|
# Skip custom resource definition installation if chart contains custom resource definitions. Defaults to false
|
|
skipCrds: false
|
|
|
|
# Skip schema validation if chart contains JSON schema validation. Defaults to false
|
|
skipSchemaValidation: 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
|
|
|
|
# You can specify the Kubernetes API version to pass to Helm when templating manifests. By default, Argo CD uses
|
|
# the Kubernetes version of the target cluster. The value must be semver formatted. Do not prefix with `v`.
|
|
kubeVersion: 1.30.0
|
|
|
|
# You can specify the Kubernetes resource API versions to pass to Helm when templating manifests. By default, Argo
|
|
# CD uses the API versions of the target cluster. The format is [group/]version/kind.
|
|
apiVersions:
|
|
- traefik.io/v1alpha1/TLSOption
|
|
- v1/Service
|
|
|
|
# Optional namespace to template with. If left empty, defaults to the app's destination namespace.
|
|
namespace: custom-namespace
|
|
|
|
# kustomize specific config
|
|
kustomize:
|
|
# Optional kustomize version. Note: version must be configured in argocd-cm ConfigMap
|
|
version: v3.5.4
|
|
# Supported kustomize transformers. https://kubectl.docs.kubernetes.io/references/kustomize/kustomization/
|
|
namePrefix: prod-
|
|
nameSuffix: -some-suffix
|
|
commonLabels:
|
|
foo: bar
|
|
commonAnnotations:
|
|
beep: boop-${ARGOCD_APP_REVISION}
|
|
# Toggle which enables/disables env variables substitution in commonAnnotations
|
|
commonAnnotationsEnvsubst: true
|
|
# Defines if the common label(s) should be applied to resource selectors. It also excludes common labels from
|
|
# templates unless `labelIncludeTemplates` is set to true.
|
|
labelWithoutSelector: false
|
|
# Defines if the common label(s) should be applied to resource templates.
|
|
labelIncludeTemplates: false
|
|
forceCommonLabels: false
|
|
forceCommonAnnotations: false
|
|
images:
|
|
- quay.io/argoprojlabs/argocd-e2e-container:0.2
|
|
- my-app=gcr.io/my-repo/my-app:0.1
|
|
namespace: custom-namespace
|
|
replicas:
|
|
- name: kustomize-guestbook-ui
|
|
count: 4
|
|
components:
|
|
- ../component # relative to the kustomization.yaml (`source.path`).
|
|
# Ignore locally missing component directories when using Kustomize Components. Defaults to false
|
|
ignoreMissingComponents: true
|
|
patches:
|
|
- target:
|
|
kind: Deployment
|
|
name: guestbook-ui
|
|
patch: |-
|
|
- op: add # Add new element to manifest
|
|
path: /spec/template/spec/nodeSelector/
|
|
value:
|
|
env: "pro"
|
|
|
|
# You can specify the Kubernetes API version to pass to Helm when templating manifests. By default, Argo CD uses
|
|
# the Kubernetes version of the target cluster. The value must be semver formatted. Do not prefix with `v`.
|
|
kubeVersion: 1.30.0
|
|
|
|
# You can specify the Kubernetes resource API versions to pass to Helm when templating manifests. By default, Argo
|
|
# CD uses the API versions of the target cluster. The format is [group/]version/kind.
|
|
apiVersions:
|
|
- traefik.io/v1alpha1/TLSOption
|
|
- v1/Service
|
|
|
|
# directory
|
|
directory:
|
|
recurse: true
|
|
jsonnet:
|
|
# A list of Jsonnet External Variables
|
|
extVars:
|
|
- name: foo
|
|
value: bar
|
|
# You can use "code" to determine if the value is either string (false, the default) or Jsonnet code (if code is true).
|
|
- code: true
|
|
name: baz
|
|
value: "true"
|
|
# A list of Jsonnet Top-level Arguments
|
|
tlas:
|
|
- code: false
|
|
name: foo
|
|
value: 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 config
|
|
plugin:
|
|
# 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 plugin
|
|
env:
|
|
- name: FOO
|
|
value: bar
|
|
# Plugin parameters are new in v2.5.
|
|
parameters:
|
|
- name: string-param
|
|
string: example-string
|
|
- name: array-param
|
|
array: [item1, item2]
|
|
- name: map-param
|
|
map:
|
|
param-name: param-value
|
|
|
|
# Sources field specifies the list of sources for the application
|
|
sources:
|
|
- 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
|
|
name: 'guestbook' # Optional source name. Can be used instead of the source position in multi-source Applications CLI
|
|
|
|
# Destination cluster and namespace to deploy the application
|
|
destination:
|
|
# cluster API URL
|
|
server: 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.namespace
|
|
namespace: guestbook
|
|
|
|
# Extra information to show in the Argo CD Application details tab
|
|
info:
|
|
- name: 'Example:'
|
|
value: 'https://example.com'
|
|
|
|
# Sync policy
|
|
syncPolicy:
|
|
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.
|
|
enabled: true # Enables automated syncing of the application ( true by default ).
|
|
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 configuration
|
|
- ApplyOutOfSyncOnly=true # Only sync out-of-sync resources, rather than applying every object in the application
|
|
- SkipDryRunOnMissingResource=true # Allow skip dry run on missing resource
|
|
- Replace=true # Argo CD will use kubectl replace or kubectl create command to apply changes.
|
|
managedNamespaceMetadata: # 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 namespace
|
|
any: label
|
|
you: like
|
|
annotations: # The annotations to set on the application namespace
|
|
the: same
|
|
applies: for
|
|
annotations: on-the-namespace
|
|
|
|
# The retry feature is available since v1.7
|
|
retry:
|
|
limit: 5 # number of failed sync attempt retries; unlimited number of attempts if less than 0
|
|
backoff:
|
|
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 retry
|
|
maxDuration: 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: apps
|
|
kind: Deployment
|
|
jsonPointers:
|
|
- /spec/replicas
|
|
- kind: ConfigMap
|
|
jqPathExpressions:
|
|
# Example: Ignore changes to a specific key inside a ConfigMap
|
|
- '.data["config.yaml"]'
|
|
# 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-deployment
|
|
namespace: 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
|
|
|
|
# sourceHydrator enables manifest hydration from a dry source to a sync source branch.
|
|
# The drySource.helm, drySource.kustomize, drySource.directory, and drySource.plugin fields
|
|
# are available and follow the same spec as the source field above.
|
|
sourceHydrator:
|
|
drySource:
|
|
repoURL: https://github.com/argoproj/argocd-example-apps.git
|
|
targetRevision: HEAD
|
|
path: guestbook
|
|
# helm, kustomize, directory, and plugin fields are available here.
|
|
# See the source.helm, source.kustomize, source.directory, and source.plugin sections above for details.
|
|
syncSource:
|
|
targetBranch: env/prod
|
|
path: guestbook-hydrated
|