With Kiali v1.57.1 an additional status condition was added:
```
- lastTransitionTime: '2022-10-14T11:56:24Z'
message: ''
reason: ''
status: 'False'
type: Failure
```
Based on the discussion in https://github.com/kiali/kiali/issues/5560 this should not lead to a degraded health state.
This will no longer return Degraded as a catch-all and use the `type` and `status` fields of the condition to determine the CR health.
Signed-off-by: Allex Veldman <allexveldman+github@gmail.com>
Signed-off-by: Allex Veldman <allexveldman+github@gmail.com>
The "Webhook and Manifest Paths Annotation" section of the documentation
contained a number of grammar and spelling issues as well as what appeared
to be some unintentionally pasted text.
This commit attempts to address these issues.
Signed-off-by: Lars Kellogg-Stedman <lars@oddbit.com>
Signed-off-by: Lars Kellogg-Stedman <lars@oddbit.com>
* test: Remove circular symlinks from testdata
Signed-off-by: jannfis <jann@mistrust.net>
* Another test case
Signed-off-by: jannfis <jann@mistrust.net>
* Use defer for changing back to original workdir
Signed-off-by: jannfis <jann@mistrust.net>
* Abort the test on error in defer
Signed-off-by: jannfis <jann@mistrust.net>
* fix: create serviceaccount token for v1.24 clusters
Signed-off-by: Daniel Helfand <helfand.4@gmail.com>
* change create to get in err
Signed-off-by: Daniel Helfand <helfand.4@gmail.com>
When configuring an external OIDC provider which uses a private PKI
for its certificates it was not possible to properly verify the certificate
being served. Also, when using ArgoCD in insecure mode, e.g. when running
behind istio for providing mTLS, this resulted in errors.
Signed-off-by: Clive Jevons <clive@jevons-it.net>
* fix: missing Helm params
Signed-off-by: Michael Crenshaw <michael@crenshaw.dev>
* use absolute paths, fix tests
Signed-off-by: Michael Crenshaw <michael@crenshaw.dev>
* fix race in test
Signed-off-by: Michael Crenshaw <michael@crenshaw.dev>
* chore: eliminate go-mpatch dependency
Signed-off-by: Michael Crenshaw <michael@crenshaw.dev>
* chore: abstract out resource list function
Signed-off-by: Michael Crenshaw <michael@crenshaw.dev>
* chore: don't exit the program in anything but the main function
Signed-off-by: Michael Crenshaw <michael@crenshaw.dev>
* chore: better error messages
Signed-off-by: Michael Crenshaw <michael@crenshaw.dev>
* chore: better error messages
Signed-off-by: Michael Crenshaw <michael@crenshaw.dev>
* fix: do not allow symlinks from directory-type applications
Signed-off-by: Michael Crenshaw <michael@crenshaw.dev>
* chore: fix imports and unnecessary parameters
Signed-off-by: Michael Crenshaw <michael@crenshaw.dev>
* chore: lint
Signed-off-by: Michael Crenshaw <michael@crenshaw.dev>
* chore: use t.TempDir for simpler tests
Signed-off-by: Michael Crenshaw <michael@crenshaw.dev>
* address comments
Signed-off-by: Michael Crenshaw <michael@crenshaw.dev>
* fix: prevent file traversal using helm file values param and application details api
Signed-off-by: Alexander Matyushentsev <AMatyushentsev@gmail.com>
* apply reviewer notes: move resolve.go into separate package; use uuid to generate random file
Signed-off-by: Alexander Matyushentsev <AMatyushentsev@gmail.com>
* fix: return a codes.NotFound error when trying to get a non-existent repository
Signed-off-by: Simon Ninon <simon.ninon@gmail.com>
* move s.db.RepositoryExists call after the permission check
Signed-off-by: Simon Ninon <simon.ninon@gmail.com>
* update ArgoDB mock and add unit tests
Signed-off-by: Simon Ninon <simon.ninon@gmail.com>
* group diff should set resource id use new interface
Signed-off-by: pashavictorovich <pavel@codefresh.io>
* add cluster destination should support name
Signed-off-by: pashavictorovich <pavel@codefresh.io>
Add echo to the end of the kubectl command to fetch initial admin secrets so that '%' new line character is not printed at the end of the secret.
Signed-off-by: mustafa89 <mustafa.mujahid@outlook.com>
Co-authored-by: Mustafa Mujahid <mustafa.mujahid@tradebyte.com>
The commit introduces the following changes:
1. Update the admin settings resource-overrides CLI to work with jqPathExpressions
2. Allow jqPathExpressions to be set from the UI
Signed-off-by: Chetan Banavikalmutt <chetanrns1997@gmail.com>
It is not immediately clear what the `<current-user-password>` should be as shown by this issue: https://github.com/argoproj/argo-cd/issues/4096.
This comment should make it more clear that when users are setting passwords as the default `admin` user, they should be using the `admin` password here.
Signed-off-by: John Chen <johnchen456@gmail.com>
* fix: repository name already exists when multiple helm dependencies from same private repo server
Signed-off-by: May Zhang <may_zhang@intuit.com>
* fix: add test cases
Signed-off-by: May Zhang <may_zhang@intuit.com>
* fix: clean up
Signed-off-by: May Zhang <may_zhang@intuit.com>
* docs: add configuration guide for using Google Load Balancers with GKE
Signed-off-by: alvarogonzalez-packlink <alvarogonzalez@packlink.com>
* docs: fix format on notes and warnings
Signed-off-by: alvarogonzalez-packlink <alvarogonzalez@packlink.com>
The instructions for telling the CLI how to automatically use
port-forward were intertwined with the instructions for registering a
repo; this separates them.
This also moves the port-forward flags instructions to the first place
in the doc a user would need them.
Signed-off-by: Josh Gavant <joshgavant@gmail.com>
* Update declarative-setup.md
added `type: git` to the secrets
* warning about labels getting lost
when using sealed-secrets the labels will get lost and has to be readded
When creating an application directly through the CLI or a `kubectl
apply`, it's relatively obvious which application is invalid (provided
you aren't applying several at once) as you're there creating it
interactively.
It's less clear when applications are generated by the application set
controller. When that happens, you need to go looking in the controller
logs, where you'll find something like:
> time="2021-08-10T11:36:02Z" level=error msg="application spec is
> invalid: InvalidSpecError: application destination
> {https://kubernetes.default.svc default} is not permitted in project
> 'my-project'"
which doesn't have any connection back to the application being
generated. This is particularly tricky to track down if you're searching
your logs via some sort of aggregator rather than watching `kubectl logs
-f`.
After this change, the log produced would be:
> time="2021-08-10T11:36:02Z" level=error msg="application spec for
> guestbook is invalid: InvalidSpecError: application destination
> {https://kubernetes.default.svc default} is not permitted in project
> 'my-project'"
There's probably fancier ways this information could be presented (e.g.
if application sets were represented in the UI and knew about failures
to apply their generated applications), but this logging change seems
like a cheap way to make this situation more debuggable.
Signed-off-by: Chris Sinjakli <chris@sinjakli.co.uk>
The cluster collector includes one more metric for kubernetes cluster connection
which rely on `SyncError`.
Ticket: #6855
Signed-off-by: Spiros Economakis <spiros.oikonomakis@gmail.com>
* fix: argocd core commands should not drop existing persistent flags
Signed-off-by: Alexander Matyushentsev <AMatyushentsev@gmail.com>
* run cli codegen
Signed-off-by: Alexander Matyushentsev <AMatyushentsev@gmail.com>
* fix: use secure way to generate initial password
Signed-off-by: May Zhang <may_zhang@intuit.com>
* fix: use secure way to generate initial password
Signed-off-by: May Zhang <may_zhang@intuit.com>
* docs: Add documentation on using OIDC with Dex
Signed-off-by: Connor Kelly <connor.r.kelly@gmail.com>
* docs: Add documentation on using OIDC with Dex -- fix typo
Signed-off-by: Connor Kelly <connor.r.kelly@gmail.com>
* Fix warning box for Dex OIDC group configuration knob
Signed-off-by: Connor Kelly <connor.r.kelly@gmail.com>
* fix(ui): Bump argo-ui to hide filter suggestions on enter and show on typing
Signed-off-by: Remington Breeze <remington@breeze.software>
* remove unneccessary yarn.lock changes
Signed-off-by: Remington Breeze <remington@breeze.software>
* fix: docs about custom image user, change it from argocd to 999
Signed-off-by: Charles Cai <charles.cai@sap.com>
* update: docs for upgrading version
Signed-off-by: Charles Cai <charles.cai@sap.com>
Co-authored-by: Charles Cai <charles.cai@sap.com>
* Correct usage info for `argocd account delete-token`
Signed-off-by: May Zhang <may_zhang@intuit.com>
* fix: Correct usage info for `argocd account delete-token`
Signed-off-by: May Zhang <may_zhang@intuit.com>
* fix: Correct usage info for `argocd account delete-token`
Signed-off-by: May Zhang <may_zhang@intuit.com>
* chore: pre filter groups before enforcing
Part of: #4296
Signed-off-by: Jan Jansen <jan.jansen@gdata.de>
* chore: prevent serialization if it is a mapclaims
Signed-off-by: Jan Jansen <jan.jansen@gdata.de>
* add comments
Signed-off-by: Jan Jansen <jan.jansen@gdata.de>
* refactor: enhance application resources filter panels
Signed-off-by: Alexander Matyushentsev <AMatyushentsev@gmail.com>
* use fixed position for resources filter on application details page
Signed-off-by: Alexander Matyushentsev <AMatyushentsev@gmail.com>
* fix(ui): Allow filters in input that are not listed in suggestions
Signed-off-by: Remington Breeze <remington@breeze.software>
* Add back accidentally removed line
Signed-off-by: Remington Breeze <remington@breeze.software>
* feat: add --headless flag to Argo CD CLI command
Signed-off-by: Alexander Matyushentsev <AMatyushentsev@gmail.com>
* docs: add headless installation manifests and documentation
Signed-off-by: Alexander Matyushentsev <AMatyushentsev@gmail.com>
* Apply reviewer notes
Signed-off-by: Alexander Matyushentsev <AMatyushentsev@gmail.com>
* Remove port forwarding logs
Signed-off-by: Alexander Matyushentsev <AMatyushentsev@gmail.com>
* add "--insecure-skip-tls-verify" on helm pull when Creds.InsecureSkipVerify is set to true
* Requested change of alax
Co-authored-by: Pieter van der Meer <Pieter@dataworkz.nl>
* Allow argocd-notification ingress to repo-server
This change allows an argocd-notification installation using the provided
manifests to ingress to the repo-server.
I am not sure if there is a prevailing opinion about how to manage a
cross project network policy for these related components so I thought
I would put up a PR to spark that discussion. This could live in a separate
NetworkPolicy object managed by the argocd-notifications manifests but I
thought it wuold be better for the possible ingresses for the argocd project
to all live in the argo-cd manifests. I know that notifications are an optional
component, so maybe this is better provided as a separate manifest that can
be strategic merged in? (I am a kustomize user).
Regardless, I think this policy is something that be maintained by argoproj
in some form to reduce release burden of users trying to hand maintain network
policies.
Signed-off-by: Tyler Dixon <tdixon@buf.build>
* make manifests
Signed-off-by: Tyler Dixon <tdixon@buf.build>
* chore: Skip cluster e2e tests if already run
Signed-off-by: jannfis <jann@mistrust.net>
* Use defer to record test run
Signed-off-by: jannfis <jann@mistrust.net>
* feat: add custom resource health checks for trident.netapp.io/TridentOrchestrator and trident.netapp.io/TridentBackendConfig
Signed-off-by: Balazs Zachar <zachar.balazs@gmail.com>
* feat: extend TridentOrchestrator check with degraded state (based on official documentation)
Signed-off-by: Balazs Zachar <zachar.balazs@gmail.com>
* chore: Update Golang builder to 1.16.5
Signed-off-by: jannfis <jann@mistrust.net>
* Use variables to refer to Go version in workflows
Signed-off-by: jannfis <jann@mistrust.net>
* feat: Supported set metadata annotations with `argocd-util appgenerate-spec` command
Signed-off-by: takumakume <takuma.kume@pepabo.com>
* docs: Added `--annotations` option of `argocd-util app generate-spec` command
Signed-off-by: takumakume <takuma.kume@pepabo.com>
* fix: `--annotations` option changes the `.metadata` section, so change it to the appropriate place
Signed-off-by: takumakume <takuma.kume@pepabo.com>
* docs: Added `--annotations` option of `argocdapp create` command
Signed-off-by: takumakume <takuma.kume@pepabo.com>
* fix: set an empty value if there is no `=` in `--annotations`
Signed-off-by: takumakume <takuma.kume@pepabo.com>
* docs: added an example `--annotations` are `=` delimited
Signed-off-by: takumakume <takuma.kume@pepabo.com>
Unless the argocd-dex-server-network-policy NetworkPolicy was meant to
authorize ALL TCP traffic, which seems unlikely, this is a typo.
Signed-off-by: Antonin Bas <abas@vmware.com>
* docs: add hblixt as reviewer
As per 6/21 meeting, proposed and accepted as reviewer.
Thanks for the confidence, looking forward to contributing even more!
* docs: re-add ishitasequeira
* feat: add first class support to access repositories using proxy
Currently, users need to set the proxy URLs as env variables in the repo server. This is not user-friendly and also error-prone. This PR adds support to maintain proxy URLs along with repository configs in the argocd-cm. Argo CD uses this proxy to access your repository. In case the custom proxy is absent, it defaults to reading the proxy from the env variables.
Signed-off-by: Chetan Banavikalmutt <chetanrns1997@gmail.com>
* set both http & https proxy variables
Signed-off-by: Chetan Banavikalmutt <chetanrns1997@gmail.com>
* docs: Argo CD installation manifest file to run test against a real cluster
Signed-off-by: arout <arout@redhat.com>
* Use more expressive sentence
Signed-off-by: arout <arout@redhat.com>
* fix: Fail gracefully when unable to unmarshal cluster secret
Signed-off-by: jannfis <jann@mistrust.net>
* Do not log error details
Signed-off-by: jannfis <jann@mistrust.net>
* Do not return invalid clusters on list
Signed-off-by: jannfis <jann@mistrust.net>
* Additional test
Signed-off-by: jannfis <jann@mistrust.net>
fix: userinfo /v1/session/userinfo should return authenticated=false if token has expired (#6282)
Signed-off-by: Alexander Matyushentsev <AMatyushentsev@gmail.com>
* feat: use RLock and RUnlock for project to improve performance
Signed-off-by: Yujun Zhang <zhangyujun@gmail.com>
* chore: go mod vendor && go mod tidy
Signed-off-by: Yujun Zhang <yujunz@nvidia.com>
Why do we need this change?
=======================
On April 20th, 2021 onelogin removed their v1 implementation of openid. You will get a 410 error if you try to use this url. As such update documentation to rely upon v2 api
What effects does this change have?
=======================
* Updates the onelogin documentation to correctly setup with the v2 implementation of openid
Signed-off-by: Joshua Jackson <joshua.jackson@jobvite-inc.com>
Currently, the usage of standard lua library is always disabled, making it difficult to implement complex health check scripts.
This feat allow admins to control the usage of standard library by setting "health.lua.useOpenLibs" (merged-keys convention)/"resource.customizations.useOpenLibs.<group_kind>"
(split-keys convention) field in argocd-cm ConfigMap.
Signed-off-by: Chetan Banavikalmutt <chetanrns1997@gmail.com>
This commit adds support to export and import applicationset objects along with other Argo CD resources
Signed-off-by: Chetan Banavikalmutt <chetanrns1997@gmail.com>
* fix: add helm dependecies with custom CA
Signed-off-by: Shubham Agarwal <shubhamagarawal19@gmail.com>
* fixed go lint error
Signed-off-by: Shubham Agarwal <shubhamagarawal19@gmail.com>
* ignore existing repos
Signed-off-by: Shubham Agarwal <shubhamagarawal19@gmail.com>
* fix: Enable helm OCI to work for lots of different URLs without having to create a repo for each one
Signed-off-by: May Zhang <may_zhang@intuit.com>
* Revert "fix: Enable helm OCI to work for lots of different URLs without having to create a repo for each one"
This reverts commit a8ae8cf1b9.
* fix: only adding the dependency repo which does not exist in the repo list
Co-authored-by: May Zhang <may_zhang@intuit.com>
* fix(redis-ha): Adding explicit bind to redis and sentinel config to support IPv4 clusters. Closes#5957
Signed-off-by: Ryan Umstead <ryan.umstead@blackrock.com>
* initial draft of adding tests for OCI
Signed-off-by: May Zhang <may_zhang@intuit.com>
* fix: initial draft of adding tests for OCI
Signed-off-by: May Zhang <may_zhang@intuit.com>
* bring up registry for tests
Signed-off-by: May Zhang <may_zhang@intuit.com>
* bring up registry for tests
Signed-off-by: May Zhang <may_zhang@intuit.com>
* bring up registry for tests
Signed-off-by: May Zhang <may_zhang@intuit.com>
* fix: just to test if PR is working
Signed-off-by: May Zhang <may_zhang@intuit.com>
* adding additional helm oci dependencies tests
Signed-off-by: May Zhang <may_zhang@intuit.com>
* Fix k8s version in Ingress Configuration doc
Signed-off-by: Isaac Lopez <syak7771@gmail.com>
* docs: Fix k8s version in ingress api
Signed-off-by: Isaac Lopez <syak7771@gmail.com>
This allows to override the Kubernetes configuration used to set up the
Port Forward.
Closes [ISSUE 5905]
Signed-off-by: Raphaël Pinson <raphael.pinson@camptocamp.com>
Allow adding build options that are specific to a kustomize version instead of using the same default options for each version.
Signed-off-by: Chetan Banavikalmutt <chetanrns1997@gmail.com>
Since Go 1.11, "go get" uses the modules system. This changes
the location the package is downloaded.
Additionally, "go get -u" does more work than required; changing
this to "go get -d" speeds up the process.
Finally, since Go 1.13 "go get" can also check out tags directly,
avoiding an additional checkout.
Signed-off-by: Patric Stout <github@truebrain.nl>
* fix: add prefix sync for CLI argocd app flag --retry-limit, --retry-backoff-duration, --retry-backoff-factor and --retry-backoff-max-duration
Signed-off-by: May Zhang <may_zhang@intuit.com>
Using exit-code flag we could control the exit status of the command when there's a diff.
Example:
argocd app diff sample --local /path --exit-code=false
The above command will return exit code 0 even if it finds a diff.
Signed-off-by: Chetan Banavikalmutt <chetanrns1997@gmail.com>
* chore: Fix manifest generation in release and make quay.io the lead
Signed-off-by: jannfis <jann@mistrust.net>
* Fix docker push command
Signed-off-by: jannfis <jann@mistrust.net>
* Separate "online" mode from "production" mode in yarn build
Signed-off-by: William Tam <email.wtam@gmail.com>
* Signed-off-by: William Tam <email.wtam@gmail.com>
Fix typo
* fix: error when reset kustomize parameters from UI
Signed-off-by: May Zhang <may_zhang@intuit.com>
* Revert "fix: error when reset kustomize parameters from UI"
This reverts commit 126f210a
Signed-off-by: May Zhang <may_zhang@intuit.com>
* fix: error when reset kustomize parameters from UI
Signed-off-by: May Zhang <may_zhang@intuit.com>
This commit adds a flag --plugin-env to the app unset command, using which the plugin env varibles can be removed if present.
Example
argocd app unset example --plugin-env key1 --plugin-env key2
Fixes: #5681
Signed-off-by: Chetan Banavikalmutt <chetanrns1997@gmail.com>
* feat(helm): Do not fail when value files do not exist
Skip Helm value files that do not exit. This will allow the values that do exit
to be displayed.
* feat: support background propagation policy
Currently, Argo CD only supports foreground propagation policy ie. delete all the resources in the foreground and then delete the application in the end. This PR introduces a new flag `propagation-policy` to decide the type of policy when cascading is enabled. It also adds an annotation `propagation-policy.argocd.argoproj.io`, which is used by the application controller to decide the order of deletion.
Fixes: #5216
Signed-off-by: Chetan Banavikalmutt <chetanrns1997@gmail.com>
* fix lint and doc errors
Signed-off-by: Chetan Banavikalmutt <chetanrns1997@gmail.com>
* update logs to display the application name
Signed-off-by: Chetan Banavikalmutt <chetanrns1997@gmail.com>
* address review comments
* remove application name from logs since it's already present
* update the propagation policy annotation key
Signed-off-by: Chetan Banavikalmutt <chetanrns1997@gmail.com>
* Add radio buttons in the UI to select propagation policy
Signed-off-by: Chetan Banavikalmutt <chetanrns1997@gmail.com>
* inject finalizers instead of annotations for specifying propagation policy
Signed-off-by: Chetan Banavikalmutt <chetanrns1997@gmail.com>
* rebase branch on master
Signed-off-by: Chetan Banavikalmutt <chetanrns1997@gmail.com>
* update the controller to set the policy only for application's resources
Signed-off-by: Chetan Banavikalmutt <chetanrns1997@gmail.com>
* fix the label of policy radio button
Signed-off-by: Chetan Banavikalmutt <chetanrns1997@gmail.com>
* fix: increase contrast for text color
Signed-off-by: Regina Scott <rescott@redhat.com>
* aligned spacing in application status panel
Signed-off-by: Regina Scott <rescott@redhat.com>
* boldened and darkened headers
Signed-off-by: Regina Scott <rescott@redhat.com>
* docs: Add ApplicationSet page to Argo CD docs
Signed-off-by: Jonathan West <jonwest@redhat.com>
* docs: Add ApplicationSet page to Argo CD docs
Signed-off-by: Jonathan West <jonwest@redhat.com>
* docs: Add ApplicationSet page to Argo CD docs
Signed-off-by: Jonathan West <jonwest@redhat.com>
* docs: PRs with Argo CD and Codefresh
Signed-off-by: Viktor Farcic <viktor@farcic.com>
* Video
Signed-off-by: Viktor Farcic <viktor@farcic.com>
* Yet another video
Signed-off-by: Viktor Farcic <viktor@farcic.com>
* feat: upgrade kustomize to v3.9.4 and support v3.8.5 breaking change
Signed-off-by: Alexander Matyushentsev <AMatyushentsev@gmail.com>
* fix flaky test
Signed-off-by: Alexander Matyushentsev <AMatyushentsev@gmail.com>
* feat: made Helm v3 the default and removed version auto-detection
Signed-off-by: ishitasequeira <isequeir@redhat.com>
* feat: made Helm v3 the default and removed version auto-detection
Signed-off-by: ishitasequeira <isequeir@redhat.com>
* feat: regenerate active users token if it is expiring soon
Signed-off-by: Alexander Matyushentsev <AMatyushentsev@gmail.com>
* Comment how 'renew-token' header is used
Signed-off-by: Alexander Matyushentsev <AMatyushentsev@gmail.com>
* fix: Empty resource whitelist allowed all resources
This requires setting the default in quite a few
places around the code base as well as adapting
a couple of tests
Signed-off-by: Jan Graefen <223234+jangraefen@users.noreply.github.com>
* Improve default behavior and not require explicitly set whitelist
Signed-off-by: Jan Graefen <223234+jangraefen@users.noreply.github.com>
* fix: Update gitops-engine to get the fix for sync should apply Namespaces and CRDs before resources
Signed-off-by: May Zhang <may_zhang@intuit.com>
* fix: Update gitops-engine to get the fix for sync should apply Namespaces and CRDs before resources
Signed-off-by: May Zhang <may_zhang@intuit.com>
* updated metrics docs to correct selector
Signed-off-by: Kai Reichart <kai@reichart.dev>
* docs: updated metrics docs to correct selector on servicemonitor for repo-server
Signed-off-by: Kai Reichart <kai@reichart.dev>
* docs: FAQ entry for SealedSecret health updates
Since certain version combinations of ArgoCD and
the sealed-secret controller might lead to
SealedSecrets being stuck in the Progressing
state, this commit adds an explanation and
possible work-arounds to the FAQ.
Signed-off-by: Jan Graefen <223234+jangraefen@users.noreply.github.com>
* Fix review findings
Signed-off-by: Jan Gräfen <223234+jangraefen@users.noreply.github.com>
* Add missing letter
Signed-off-by: Jan Gräfen <223234+jangraefen@users.noreply.github.com>
This commit adds a lua script, which updates the health status of an application based on sealed secret's status
Fixes: #4754
Signed-off-by: Chetan Banavikalmutt <chetanrns1997@gmail.com>
* fix(cli): format appURL from server settings (#5333)
Signed-off-by: Yujun Zhang <yujunz@nvidia.com>
* fix(cli): fallback to client options if URL is not set
Signed-off-by: Yujun Zhang <yujunz@nvidia.com>
* feat: Dockerized *-docs Makefile commands
Signed-off-by: ishitasequeira <isequeir@redhat.com>
* removed the deprecated target(publish-docs) and added a local build and serve target
Signed-off-by: ishitasequeira <isequeir@redhat.com>
UI for the argocd e2e test server will be available on port 4000. This patch updates the link in e2e tests to use 4000 instead of 8080.
Signed-off-by: Chetan Banavikalmutt <chetanrns1997@gmail.com>
* feat: add versioning to argocd docs
Signed-off-by: Regina Scott <rescott@redhat.com>
* make default branch stable, provide warning for latest
Signed-off-by: Regina Scott <rescott@redhat.com>
* fix(ui): Prevent overlap of toolbar items with narrow browser windows. Other narrow window related fixes
Signed-off-by: Remington Breeze <remington@breeze.software>
* fix: consistently display information about 'compared to' and 'synced to' revisions
Signed-off-by: Alexander Matyushentsev <AMatyushentsev@gmail.com>
* apply review notes
Signed-off-by: Alexander Matyushentsev <AMatyushentsev@gmail.com>
Since v1.7.5, argocd app create -f doesn't use any labels specified
inside the application file anymore. Refactor the SetLabels funcion to
merge labels specified in the file with those from the command line
arguments. Extend the existing e2e test to verify that behavior.
Signed-off-by: Tom Wieczorek <t.wieczorek@yieldlab.de>
In PR #3010 the method of authentication w/ AWS changed. The previous method was still referenced in the docs.
Signed-off-by: Evan Lowry <elowry@beyondtrust.com>
Explicitly specify the "C" language during the invocation of the gpg
binary. That way, parsing its output is more robust on non-english
systems.
Signed-off-by: Tom Wieczorek <t.wieczorek@yieldlab.de>
* chore: Update manifests to point to quay.io
Signed-off-by: jannfis <jann@mistrust.net>
* Set image also in kustomize bases
Signed-off-by: jannfis <jann@mistrust.net>
* make manifests
Signed-off-by: jannfis <jann@mistrust.net>
* Also update for Dex init container
Signed-off-by: jannfis <jann@mistrust.net>
* Adapt upgrade docs to reflect new registry
Signed-off-by: jannfis <jann@mistrust.net>
* fix: controller should load application related nodes from target cluster
Signed-off-by: Alexander Matyushentsev <AMatyushentsev@gmail.com>
* fix: make sure node capasity and pod requests are in same unit, improve unit formatting
Signed-off-by: Alexander Matyushentsev <AMatyushentsev@gmail.com>
* fix: application hosts should include info about resources requested by app neighbors
Signed-off-by: Alexander Matyushentsev <AMatyushentsev@gmail.com>
* apply reviewer notes
Signed-off-by: Alexander Matyushentsev <AMatyushentsev@gmail.com>
* feat: prune last
fixes: #5080.
If sync option has PruneLast=true, or individual resource has annotation argocd.argoproj.io/sync-options: PruneLast=true, these prune tasks get assigned with a new sync wave.
the new sync wave is the last sync wave of non-prune tasks which is in sync phase + 1, so that these resources will be pruned after all sync phase resources are synced and healthy.
Signed-off-by: May Zhang <may_zhang@intuit.com>
* fix: go mod tidy
Signed-off-by: May Zhang <may_zhang@intuit.com>
* fix: Generate initial admin password in a more secure manner
Signed-off-by: jannfis <jann@mistrust.net>
* Make CreateOrUpdateSecret method public
Signed-off-by: jannfis <jann@mistrust.net>
* correct name for argocd-redis-ha-haproxy role/role binding
Signed-off-by: William Tam <email.wtam@gmail.com>
* Trim trailing spaces
Signed-off-by: William Tam <email.wtam@gmail.com>
* docs(fix): note not rendering correctly on user-management/auth0 page
Add newline under `note` to try fix rendering of note component from my previous commit on user-management/auth0 page of the docs
Signed-off-by: Grant Isdale <44140736+grantisdale@users.noreply.github.com>
* docs(fix): fix note section at the bottom of Auth0 SSO page
Signed-off-by: Grant Isdale <44140736+grantisdale@users.noreply.github.com>
* Add url parameter in example of Auth0 setting
Signed-off-by: Ayato Tachibana <tyoutugai.7@gmail.com>
* docs: Add url parameter in example of Auth0 setting
Signed-off-by: Ayato Tachibana <tyoutugai.7@gmail.com>
* feat(ui): replicaset children of deployment should sort by revision #4249
* fix: export and test compareNodes
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>
* feat: use info["name"="Revision"].value
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>
* docs: add example for using ALB with GRPC
Signed-off-by: Jonah Back <jonah@jonahback.com>
* docs: address review comments
Signed-off-by: Jonah Back <jonah@jonahback.com>
* chore: Upgrade go-jsonnet to v0.17.0
Signed-off-by: Maxime Brunet <max@brnt.mx>
* Fix vm.EvaluateSnippet is deprecated
Use EvaluateFile or EvaluateAnonymousSnippet instead.
Signed-off-by: Maxime Brunet <max@brnt.mx>
* Do not read Jsonnet files
Signed-off-by: Maxime Brunet <max@brnt.mx>
This PR adds the creation time as a bubble to the root node in network view. It also adds CREATED_AT field to the application summary page
Fixes: #4903
Signed-off-by: Chetan Banavikalmutt <chetanrns1997@gmail.com>
HorizontalPodAutoscaler uses annotations to store conditions. This commit adds a custom heath check that parses the conditions from annotation and creates health status.
Fixes: #4413
Signed-off-by: Chetan Banavikalmutt <chetanrns1997@gmail.com>
* Describe presenting okta CA as a secret
Signed-off-by: lowkeyliesmyth <lowkey@kaffeinlabs.com>
* Describe private argo UI with public Okta SSO callback
Signed-off-by: lowkeyliesmyth <lowkey@kaffeinlabs.com>
* Describe using Contour with split public and private Ingresses
Signed-off-by: lowkeyliesmyth <lowkey@kaffeinlabs.com>
* Okta group to Argo CD role mapping
Signed-off-by: lowkeyliesmyth <lowkey@kaffeinlabs.com>
* Include required scopes for RBAC
Signed-off-by: lowkeyliesmyth <lowkey@kaffeinlabs.com>
* fix: Don't allow arbitrary redirects at login
Signed-off-by: jannfis <jann@mistrust.net>
* Also check for CRLF in path
Signed-off-by: jannfis <jann@mistrust.net>
* Explicit unit test for empty redirect_url
Signed-off-by: jannfis <jann@mistrust.net>
* Cosmetics and remove redundancy
Signed-off-by: jannfis <jann@mistrust.net>
The `git verify-commit` output might have additional fields like
`issuer`. This change will make the parser skip the additional fields
instead of returning an error.
gpg: Signature made Mon Aug 26 20:59:48 2019 CEST
gpg: using RSA key 4AEE18F83AFDEB23
gpg: issuer "j.doe@example.com"
gpg: Can't check signature: No public key
This change is designed so it is easy to specify additional fields that
need to get skipped, by adjusting the regex.
Signed-off-by: Sven Walter <s.walter@rebuy.com>
* Generate server command reference docs
Signed-off-by: William Tam <email.wtam@gmail.com>
* Insert newline
Signed-off-by: William Tam <email.wtam@gmail.com>
* undo iinsert newline
Signed-off-by: William Tam <email.wtam@gmail.com>
Signed-off-by: William Tam <email.wtam@gmail.com>
* * Renane tab to `Server Configuration Parameters`
* Generate argocd-util command docs
Signed-off-by: William Tam <email.wtam@gmail.com>
* Tweak erver command descriptions
Signed-off-by: William Tam <email.wtam@gmail.com>
* Minor tweaks to argocd-util command descriptions
Signed-off-by: William Tam <email.wtam@gmail.com>
* Move main_test.go to secrets_redactor_test.go into commands package
Signed-off-by: William Tam <email.wtam@gmail.com>
* Disable auto generation tag.
Signed-off-by: William Tam <email.wtam@gmail.com>
Virtuo (govirtuo.com) is officially using ArgoCD along with the other Argo projects to deploy to Kubernetes.
Signed-off-by: Xavier Krantz <xakraz@gmail.com>
* chore: Add a GitHub action that runs unit tests with -race to CI build (#4774)
Signed-off-by: Jonathan West <jonwest@redhat.com>
* chore: Add a GitHub action that runs unit tests with -race to CI build (#4774)
Signed-off-by: Jonathan West <jonwest@redhat.com>
* fix: failUnmarshal only checked for file contains information which has apiVersion, kind and metadata.
Signed-off-by: May Zhang <may_zhang@intuit.com>
* add negative test case
Signed-off-by: May Zhang <may_zhang@intuit.com>
* modified negative test data
Signed-off-by: May Zhang <may_zhang@intuit.com>
* modified negative test data
Signed-off-by: May Zhang <may_zhang@intuit.com>
* feat: Add autocomplete for repo Revisions
- Introduces api/v1/repositories/{repo}/refs which returns branches and tags
- Add new RevisionFormField component to Create and Edit Application pages
Signed-off-by: Tim Etchells <tetchell@redhat.com>
* feat: Annnotation based app prefix detection in webhooks
* webhook should copy previously generated manifests cache if new commit does not introduce any changes
* use 'argocd.argoproj.io/manifest-generate-paths' annotation to specify paths
Co-authored-by: Carson Anderson <ca@carsonoid.net>
* feat: Improve UX when filtering applications
- When application filters are active, show a badge with # filters and a button to clear them
- When no matching applications are found, provide a button to clear filters
- Styling updates to application filters UI
Signed-off-by: Tim Etchells <tetchell@redhat.com>
* feat: Util for generate global project from ClusterRole
* feat: fix lint error
* feat: fix test failure
* fix lint
* fix lint error
* moved into sub command and removed not needed fields.
* updated error package
* rename files
* feat: Add ID option to 'proj role create-token'
Also add some more informative output to the same command
Signed-off-by: Tim Etchells <tetchell@redhat.com>
* Parse token on client side, add --token-only flag
Signed-off-by: Tim Etchells <tetchell@redhat.com>
- Remove references to CircleCI
- Move info for troubleshooting CI builds into ci.md
- Add 'gofmt' note to Lint CI check failing
- Add note about generated code to FAQ
Signed-off-by: Tim Etchells <tetchell@redhat.com>
* fix: Serve ReDoc JS from Argo CD server instead of from CDN
* refactor: dynamically copy redoc.standalone.js from npm module
Co-authored-by: Alexander Matyushentsev <AMatyushentsev@gmail.com>
* chore: Replace deprecated set-env directives
* revert lint version change
* Revert go.mod and go.sum changes
* Fix typo
* Update golangci-lint-action to v2
* Fix golangci-lint version
* Skip new lint complaints in test
* Skip more new lint complaints in test
* Exclude new SA5011 check in lint
There's a bug in the resource inclusions parsing, if the string is "" then it's
parsed as a map, which returns nil, and so it fails when adding elements later.
An application can be created by specifying only cluster name. Since cluster URL is used for queries, it should inferred. ValidateDestination() method will infer the cluster URL if cluster name is present.
Fixes: #4534
* feat: global project
* feat: revert back argocd-cm.yaml
* feat: remove commented code.
* feat: check err
* feat: corrected comments.
* feat: merge sync windows
* feat: getProject
* feat: fix lint error
* feat: update existing test case
* feat: minor comments
* feat: Fixed for sync window which is also called from API server.
* feat: fix application tests
* feat: block by sync window
* feat: test using sync window
* feat: updated based on code review
* feat: fixed comment
We got bitten by thinking that this annotation could possibly added to the application to exclude all extraneous resources (see #4487).
The annotation must be added to the resource we wish to exclude.
This commit fixes an error where the underlaying disk would get
filled up when running make test-tools-image and the user running
it are running with a big UID.
Adding --no-log-init or -l will prevent useradd from trying to make
sure that there are is room for the user in lastlog and faillog.
* fix: application external url falsely uses backend servicePort #2318
Use https if spec.tls is specified for the related host. Otherwise use http
* refactor / add new test
* Add "chown" to gpg/keys in "start-local" target that so that repo-server can access gpg keys.
* * Set -u uid:gid in the docker run commands so that test images are run under the current user.
* test Procfile processes will not need to perform "su" to default user (which has the current user's uid/gid)
* Remove chown in start-e2e-local
* clean up, remove "bash -c"
* Test containers are run as uid 0 which allows uid_entrypoint.sh to perform some user setup. uid_entrypoint.sh creates a non-root user (default) and enables passwordless sudo for that user. The container entry point command is run as the non-root user. "goreman start" does "sudo" to to the processes that need root permission including sshd, fcgiwrap, and nginix. The other processes are running as the non-root user.
* use /bin/bash
* change back to sh
* Docker image to create unpriveleged testuser and enable passwordless sudo for that user
* Use kustomize v3 to build ArgoCD manifests
* Update to test-tools-image v0.3.0
* Reorder patches so Kustomize v3 will properly find targets
* adding back these changes
* Use the generated files.
* changed the namespace
* changed kustomize version to 3.8.1 to be in sync with the one in tool-version.sh
* revert changes in makefile
* Re-run codegen
Co-authored-by: Zhang <may_zhang@intuit.com>
Co-authored-by: Alexander Matyushentsev <AMatyushentsev@gmail.com>
Newer versions of the redis go libraries include built-in support for
compression of values going to and from redis. Since the controller
is extremely chatty and makes heavy use of redis for caching, this
reduces the amount of bandwidth requires significantly.
This change should be backwards compatible since the redis libraries
detect whether or not compression was used and does not error in the
no compression case.
Fixes#4256
I am a partner at Arctiq and we use the argo suite extensively for internal tooling, and am also the technical lead for the DevOps Platform at BCGov in which we are using ArgoCD (and the suite) for cluster configuration management.
This commit adds support for configurable Helm version either via
declarative syntax or via argocd cli.
New helm option 'Version' added to the ApplicationSourceHelm
struct which can be either 'v2' or 'v3'.
Argocd app create accepts '--helm-version' that also looks for the
same Helm versions as above.
* chore: add more tests to permitted sources (#3759)
* fix: support ** wildcard in repo sources
* keep backward compitability
* fix: typo
* use separator only in source
* docs: Add adoption section
Should we list adoption separately ? Would be nice if we could add more known adopters to the list.
* Link to users.md
* Add a whitespace between Argo and CD :)
* docs: add `namespace` field to cluster secret documentation
This feature for connecting with clusters where you only are (or can) watch a set of namespaces. Also useful when connecting argo with several clusters to avoid having the controller watching every single kind from every single api group from every single cluster.
https://github.com/argoproj/argo-cd/pull/2839
* fix: typo in the cluster namespaces description
* feat: adding disable-validation for app create and app set
* feat: adding disable-validation for app create and app set
* feat: change test func name
* feat: added support of app unset and app edit in addition to app create and app set.
* feat: remove extra space.
* Generate Name field generates names when created so should not cause a duplication warning
* Updating existing test case to check no additional conditions are added
* feat: delete in reverse order of sync waves
Signed-off-by: darshanime <deathbullet@gmail.com>
* feat: add tests for deletion in order
Signed-off-by: darshanime <deathbullet@gmail.com>
* feat: fix lint for appcontroller.go
Signed-off-by: darshanime <deathbullet@gmail.com>
* feat: add comment to explain early return
Signed-off-by: darshanime <deathbullet@gmail.com>
* fix: Do not use -i flag when building CLI
* Debug output
* re-disable CGO
* increase timeout
* correctly create dist directory before e2e server
* Revert
* feat: add resource creation time to api response
* feat: add creation time to model
* feat: add resource's age to app detail page
* feat: add created_at to resource summary page
* feat: added Libs field to ApplicationSourceJsonnet
Signed-off-by: Matthias Riegler <matthias.riegler@taotesting.com>
* feat: codegen
Signed-off-by: Matthias Riegler <matthias.riegler@taotesting.com>
* feat: implemented jsonnet jpath arguments
- Implement the `-J` command line flag for jsonnet
- adapt test to include a nested library for testing the VM
functionality
Signed-off-by: Matthias Riegler <matthias.riegler@taotesting.com>
* feat: jsonnet import path relative to the repoRoot
- adapted testCase to make use of a jpath
- join repoRoot and provided jpath attributes
Signed-off-by: Matthias Riegler <matthias.riegler@taotesting.com>
* fix: added checking for out-of-repoRoot references
Signed-off-by: Matthias Riegler <matthias.riegler@taotesting.com>
* feat: Added CLI option for passing jsonnet libs
Signed-off-by: Matthias Riegler <matthias.riegler@taotesting.com>
* feat: Updated jsonnet docs
Signed-off-by: Matthias Riegler <matthias.riegler@taotesting.com>
* fix: renamed function
Signed-off-by: Matthias Riegler <matthias.riegler@taotesting.com>
* feat: Expose --local-repo-root flag
Allows passing a "virtal" git repository root when using the local sync
mode with --local.
Provides backwardscompatible with the previous default value ("/")
Signed-off-by: Matthias Riegler <matthias.riegler@taotesting.com>
* fix: added missing command
Signed-off-by: Matthias Riegler <matthias.riegler@taotesting.com>
* Remove obsolete line out of docs
Signed-off-by: Matthias Riegler <matthias.riegler@taotesting.com>
* add flagger.app/Canary health check lua script and tests
* add flagger.app/Canary health check lua script and tests, fix type
* add handle for flagger Initialized phase
* add handle for flagger Initialized phase and test
* Include sub and and iat in PermissionDenied message
* iat fromat changing
* Adding MapClaims convertion
* Adding Orphaned exception list
* Adding group kind label
* Fixed lint errors
* Method rename
* fix: don't refresh if dry run
Signed-off-by: darshanime <deathbullet@gmail.com>
* fix: add e2e test for sync with dry-run
Signed-off-by: darshanime <deathbullet@gmail.com>
* fix: refresh only if not dryRun for sync command
Signed-off-by: darshanime <deathbullet@gmail.com>
* chore: make make cli use virtualized toolchain
Signed-off-by: darshanime <deathbullet@gmail.com>
* chore: use cli-local in Dockerfile
Signed-off-by: darshanime <deathbullet@gmail.com>
* chore: use cli-local in Dockerfile
Signed-off-by: darshanime <deathbullet@gmail.com>
* fix: permission denied due to NormalizeProjs failed to get list of projects
* fix: permission denied due to NormalizeProjs failed to get list of projects
* fix: return error if normalization failed.
* fix: return error if normalization failed.
* fix: return error if normalization failed.
* fix: in GetJWTToken, remove normalize. It causes issue with delete token.
* Moved get project to only when apierr.IsConflict(err)
* jwtTokens are reset when applying AppProjects
* fix unit tests in server_test.go
checking in generated.pb.go
* fix unit tests in rbackpolicy_test.go
* fix yarnl lint errors
* fix delete token in both spec and status
* add tests
* fixing failed test
* fixing failed test
* retry 3 times during update
* renamed CRD fields.
Updated nomalize method.
* fixed UI
* fixing merge conflicts
* fixing merge conflicts
* removed unused variables in UI
renamed a CRD field
updated combineToken logic using map
* Only update project which needs normalize token.
* Changed logging.
* check for nil
* Fix UI
* added project role get tests
* rename variables
* clean up
* fixing failed tests
* fixing failed tests
* fixing error handling for remove token
* log err when we have retried 3 times
* sort tokens
* sort tokens
* Add initial primitives and tests for GPG related operations
* More tests and test documentation
* Move gpg primitives to own module
* Add initial primitives for running git verify-commit and tests
* Improve and better comment test
* Implement VerifyCommitSignature() primitive for metrics wrapper
* More commentary
* Make reposerver verify gpg signatures when generating manifests
* Make signature validation optional
* Forbid use of local manifests when signature verification is enabled
* Introduce new signatureKeys field in project CRD
* Initial support for only syncing against signed revisions
* Updates to GnuPG primitives and more test cases
* Move signature verification to correct place and add tests
* Add signature verification result to revision metadata and display it in UI
* Add more primitives and move out some stuff to common module
* Add more testdata
* Add key management primitives to ArgoDB
* Move type GnuPGPublicKey to appsv1 package
* Add const ArgoCDGPGKeysConfigMapName
* Handle key operations with appsv1.GnuPGPublicKey
* Add initial API for managing GPG keys
* Remove deprecated code
* Add primitives for adding public keys to configuration
* Change semantics of ValidateGPGKeys to return more key information
* Add key import functionality to public key API
* Fix code quirks reported by linter
* More code quirks fixes
* Fix test
* Add primitives for deleting keys from configuration
* Add delete key operation to API and CLI
* Cosmetics
* Implement logic to sync configuration to keyring in repo-server
* Add IsGPGEnabled() primitive and also update trustdb on ownertrust changes
* Use gpg.IsGPGEnabled() instead of custom test
* Remove all keyring manipulating methods from DB
* Cosmetics/comments
* Require grpc methods from argoproj pkg
* Enable setting config path via ARGOCD_GPG_DATA_PATH
* Allow "no" and any cases in ARGOCD_GPG_ENABLED
* Enable GPG feature on start and start-e2e and set required environment
* Cosmetics/comments
* Cosmetics and commentary
* Update API documentation
* Fix comment
* Only run GPG related operations if GPG is enabled
* Allow setting ARGOCD_GPG_ENABLE from the environment
* Create GPG ConfigMap resource during installation
* Use function instead of constant to get the watcher path
* Re-watch source path in case it gets recreated. Also, error on finish
* Add End-to-End tests for GPG commit verification
* Introduce SignatureKey type for AppProject CRD
* Fix merge error from previous commit
* Adapt test for additional manifest (argocd-gpg-keys-cm.yaml)
* Fix linter issues
* Adapt CircleCI configuration to enable running tests
* Add wrapper scripts for git and gpg
* Sigh.
* Display gpg version in CircleCI
* Install gnupg2 and link it to gpg in CI
* Try to install gnupg2 in CircleCI image
* More CircleCI tweaks
* # This is a combination of 10 commits.
# This is the 1st commit message:
Containerize tests - test cycle
# This is the commit message #2:
adapt working directory
# This is the commit message #3:
Build before running tests (so we might have a cache)
# This is the commit message #4:
Test limiting parallelism
# This is the commit message #5:
Remove unbound variable
# This is the commit message #6:
Decrease parallelism to find out limit
# This is the commit message #7:
Use correct flag
# This is the commit message #8:
Update Docker image
# This is the commit message #9:
Remove build phase and increase parallelism
# This is the commit message #10:
Further increase parallelism
* Dockerize toolchain
* Add new targets to Makefile
* Codegen
* Properly handle permissions for E2E tests
* Remove gnupg2 installation from CircleCI configuration
* Limit parallelism of build
* Fix Yarn lint
* Retrigger CI for possible flaky test
* Codegen
* Remove duplicate target in Makefile
* Pull in pager from dep ensure -v
* Adapt to gitops-engine changes and codegen
* Use new health package for health status constants
* Add GPG methods to ArgoDB mock module
* Fix possible nil pointer dereference
* Fix linter issue in imports
* Introduce RBAC resource type 'gpgkeys' and adapt policies
* Use ARGOCD_GNUPGHOME instead of GNUPGHOME for subsystem configuration
Also remove some deprecated unit tests.
* Also register GPG keys API with gRPC-GW
* Update from codegen
* Update GPG key API
* Add web UI to manage GPG keys
* Lint updates
* Change wording
* Add some plausibility checks for supplied data on key creation
* Update from codegen
* Re-allow binary keys and move check for ASCII armoured to UI
* Make yarn lint happy
* Add editing signature keys for projects in UI
* Add ability to configure signature keys for project in CLI
* Change default value to use for GNUPGHOME
* Do not include data section in default gpg keys CM
* Adapt Docker image for GnuPG feature
* Add required configuration to installation manifests
* Add add-signature-key and remove-signature-key commands to project CLI
* Fix typo
* Add initial user documentation for GnuPG verification
* Fix role name - oops
* Mention required RBAC roles in docs
* Support GPG verification of git annotated tags as well
* Ensure CLI can build succesfully
* Better support verification on tags
* Print key type in upper case
* Update user documentation
* Correctly disable GnuPG verification if ARGOCD_GPG_ENABLE=false
* Clarify that this feature is only available with Git repositories
* codegen
* Move verification code to own function
* Remove deprecated check
* Make things more developer friendly when running locally
* Enable GPG feature by default, and don't require ARGOCD_GNUPGHOME to be set
* Revert changes to manifests to reflect default enable state
* Codegen
The declarative setup approach is very powerful, and potentially reduces the
number of tools that you need to learn.
When coming in fresh to help out a colleague (without my head
in ops mode) my brain failed to make the mental leap from
"kubernetes manifests" to "Oh! I can use `kubectl apply` for those!".
I was worried that I would need to get kustomize out to combine things
together or something.
This patch points out that `kubectl apply` really is good enough for this job,
and also points out that it lets you skip a bunch of steps when setting up your
cluster.
When creating the webhook in Github (enterprise, not sure if it happens in Github.com), The default "Content type" is "application/x-www-form-urlencoded". After some time debugging it I found the library used to handle the hooks (https://github.com/go-playground/webhooks) only supports 'application/json'.
I just noticed that the screenshot has the 'application/json' selected, but since the default is "application/x-www-form-urlencoded" it can be easily overlooked and create some frustration when the hooks doesn't work as expected.
Someone else from my team tried to activate the hooks a while ago an assumed they weren't working, and probably this was the reason :S
This commit adds support for TLS client authentication in the CLI.
It adds the necessary fields to the config and CLI parameters, modeled
on the existing server-crt functionality.
It also fixes 2 bugs in the grpcproxy:
1. The grpcproxy would ignore the server-crt when making a call to the
upstream server.
2. The grpcproxy would falsely assume that the HTTP status code returned
by the upstream server is always 200. It would then try to parse the
body as if it was a grpc response. At best this led to weird errors
being shown, at worst I have seen it cause the runtime to run out of
memory.
* feat(applications-tiles.tsx): adding helm icon to app tiles
conditionally add the helm icon if the application uses a "chart" otherwise default to git
* feat: add time taken to complete deployment
Signed-off-by: darshanime <deathbullet@gmail.com>
* feat: add test for adding deploy started at time
Signed-off-by: darshanime <deathbullet@gmail.com>
* feat: use hourglass for time to deploy
Signed-off-by: darshanime <deathbullet@gmail.com>
* feat: add comments to RevisionHistory fields
Signed-off-by: darshanime <deathbullet@gmail.com>
* feat: Allow --local with automatic sync for --dry-run
Signed-off-by: darshanime <deathbullet@gmail.com>
* feat: add e2e test for local sync with dry run
Signed-off-by: darshanime <deathbullet@gmail.com>
* support partial sync with namespace.
* corrected test folder name
* Trying to fix lint error
* 1. in test, delete ns after test
2. in test, created new methods for ResourceSyncStatusWithNamespaceIs and ResourceHealthWithNamespaceIs.
* reformat imports
* simplify code
* remove timeout
* chore: Migrate CI to GitHub actions
* Do not install golangci-lint, we use the action
* Integrate codecov.io upload
* Use some better names for analyze job & steps
* go mod tidy
* Update tools
* Disable CircleCI completely
* Satisfy CircleCI with a dummy step until it's disabled
* fix: Allow unsetting the last values file (#3644)
Because the `setHelmOpt()` function does not act on empty inputs, it
would do nothing when removing the last values file using `argocd app
unset`.
The parameter overrides are actually being unset correctly, so this has
been changed to work the same way by manipulating `app.Spec.Source.Helm`
directly.
This fixes#3644.
* fix: Allow unsetting the last values file, add tests
* Retrigger CI pipeline
* feat: CLI: Allow setting Helm values literal (#3601)
While you could already set values files using the `--values` flag with external data using the CLI with `argocd app create` and `argocd app set`, this was not yet possible for managing the literal `.spec.source.helm.values` value in an Application without resorting to a complicated `argocd app patch` escaped parameter or by generating the entire application YAML manifest by yourself.
Therefore, this PR adds a `--values-literal-file` flag to the `argocd app create` and `argocd app set` commands, which accepts a local file name or URL to a values file, which will be read and included as a multiline string in the application manifest. This is different from the `--helm-set-file` flag which expects the file in the chart itself.
The `argocd app unset` command is expanded with a `--values-literal` flag, so we can also unset this field again.
I hope I chose nice enough names for the flags, I wanted to make clear it expects a file name, but also distinguish it enough from the existing `--values` flag which actually points to values files.
Because the current `setHelmOpt()` functionality would not work for unsetting things to an empty value and it was difficult to do these changes independently, this PR also contains the fix for issue #3644. A separate PR has still been created for that one because I think it should end up as a separate issue in the release notes.
* feat: CLI: Allow setting Helm values literal, add tests
* chore: Migrate to Go modules
* Update CircleCI config
* Fix path
* Attach vendor for test step correctly
* restore_vendor -> attach_vendor
* Update cache path
* Checkout code before attaching vendor
* Move checkout to even earlier in job
* Don't restore cache for e2e step
* .
* Explicitly set GOPATH
* Restore Build cache
* Fix permissions
* Set correct environment for docker env
* Uncache everything
* Fix permissions
* Use workspace for caching Go code
* .
* go mod tidy
* Try to speed up builds
* Make mod target implicit dependencies
* Do not call make mod-download or mod-vendor
* Fix permissions
* Don't have modules dependendencies on test-e2e-local
* Fix confgi
* Bye bye
* Remove test parallelism
* Get max test parallelism back in, but with lower value
* Initial Try of failure retry
* Get failureRetryCount and failureRetryPeriodSecond from command line args.
* Get failureRetryCount and failureRetryPeriodSecond from command line args.
* Get failureRetryCount and failureRetryPeriodSecond from command line args.
* Get failureRetryCount and failureRetryPeriodSecond from command line args.
* Update logic to find out if we should retry.
* 1. add retry wrapper to only argo client.
2. change to env variables instead of command line arguments.
* keep imports grouped
* resolve merge conflict
* Move utils packages that are required for gitops engine under engine/pkg/utils package.
Following changes were implemented:
* util/health package is split into two parts: resource health assessement & resource health assessement and moved into engine/pkg/utils
* utils packages moved: Closer and Close method of util package moved into engine/pkg/utils/io package
* packages diff, errors, exec, json, kube and tracing moved into engine/pkg/utils
* Move single cluster caching into engine/kube/cache package
* move sync functionality to engine/kube/sync package
* remove dependency on metrics package from engine/pkg/utils/kube/cache
* move annotation label definitions into engine/pkg/utils/kube/sync
* make sure engine/pkg has no dependencies on other argo-cd packages
* allow importing engine as a go module
* implement a high-level interface that might be consumed by flux
* fix deadlock caused by cluster cache event handler
* ClusterCache should return error if requested group kind not found
* remove obsolete tests
* apply reviewer notes
The argocd command line supports using the --port-forward options
to allow you to connect to an argocd without an ingress rule. This
is especially useful for command line automation of new environments.
But login doesn't respect port-forward - making it impossible to login
to argocd to be able to later create apps. App creation works fine
with port-forwarding after being able to login.
* Implement Crossplane CRD health checks
A health check for the ClusterStackInstall CRD to help Argo CD to wait
for a successful install.
Signed-off-by: Simon Rüegg <simon@rueggs.ch>
* Add VSHN to USERS.md
Signed-off-by: Simon Rüegg <simon@rueggs.ch>
* fix: Updating to jsonnet v1.15.0 fix issue #3277
* feat: Changes from codegen, adding a repository gt service
* feat: Adding a get repository command
* Retrigger CI pipeline
* refactor: delete deprecated option on Get
refactor printing getcommand result
Getrepository() dependent on rbac enforcement
* fix: setting Get repo command to get
If you are trying to resolve an environment-specific issue or have a one-off question about the edge case that does not require a feature then please consider asking a
question in argocd slack [channel](https://argoproj.github.io/community/join-slack).
If you are trying to resolve an environment-specific issue or have a one-off question about the edge case that does not require a feature then please consider asking a question in argocd slack [channel](https://argoproj.github.io/community/join-slack).
Checklist:
* [ ] I've searched in the docs and FAQ for my answer: http://bit.ly/argocd-faq.
* [ ] I've searched in the docs and FAQ for my answer: https://bit.ly/argocd-faq.
If the DCO action in the integration test fails, one or more of your commits are not signed off. Please click on the *Details* link next to the DCO action for instructions on how to resolve this.
Checklist:
* [ ] Either (a) I've created an [enhancement proposal](https://github.com/argoproj/argo-cd/issues/new/choose) and discussed it with the community, (b) this is a bug fix, or (c) this does not need to be in the release notes.
* [ ] The title of the PR states what changed and the related issues number (used for the release note).
* [ ] I've included "Closes [ISSUE #]" or "Fixes [ISSUE #]" in the description to automatically close the associated issue.
* [ ] I've updated both the CLI and UI to expose my feature, or I plan to submit a second PR with them.
* [ ] Does this PR require documentation updates?
* [ ] I've updated documentation as required by this PR.
* [ ] Optional. My organization is added to USERS.md.
* [ ] I've signed the CLA and my build is green ([troubleshooting builds](https://argoproj.github.io/argo-cd/developer-guide/ci/)).
* [ ] I have signed off all my commits as required by [DCO](https://github.com/argoproj/argoproj/tree/master/community#contributing-to-argo)
* [ ] I have written unit and/or e2e tests for my change. PRs without these are unlikely to be merged.
* [ ] My build is green ([troubleshooting builds](https://argo-cd.readthedocs.io/en/latest/developer-guide/ci/)).
# TODO: clean up old images once github supports it: https://github.community/t5/How-to-use-Git-and-GitHub/Deleting-images-from-Github-Package-Registry/m-p/41202/thread-id/9811
# TODO: clean up old images once github supports it: https://github.community/t5/How-to-use-Git-and-GitHub/Deleting-images-from-GitHub-Package-Registry/m-p/41202/thread-id/9811
echo "Switching to release branch '${TARGET_BRANCH}'"
if ! git checkout ${TARGET_BRANCH}; then
echo "::error::Checking out release branch '${TARGET_BRANCH}' for target version '${TARGET_VERSION}' (tagged '${RELEASE_TAG}') failed. Does it exist in repo?"
exit 1
fi
- name:Create VERSION information
run:|
set -ue
echo "Bumping version from $(cat VERSION) to ${TARGET_VERSION}"
echo "${TARGET_VERSION}" > VERSION
git commit -m "Bump version to ${TARGET_VERSION}" VERSION
- name:Generate new set of manifests
run:|
set -ue
make install-codegen-tools-local
helm2 init --client-only
make manifests-local VERSION=${TARGET_VERSION}
git diff
git commit manifests/ -m "Bump version to ${TARGET_VERSION}"
- name:Create the release tag
run:|
set -ue
echo "Creating release ${RELEASE_TAG}"
git tag ${RELEASE_TAG}
- name:Build Docker image for release
run:|
set -ue
git clean -fd
mkdir -p dist/
make image IMAGE_TAG="${TARGET_VERSION}" DOCKER_PUSH=false
Pods View is particularly useful for applications that have hundreds of pods. Instead of visualizing all Kubernetes
resources for the application, it only shows Kubernetes pods and closely related resources. The Pods View supports
grouping related resources by Parent Resource, Top Level Parent, or by Node. Each way of grouping solves a particular
use case. For example grouping by Top Level Parent allows you to quickly find how many pods your application is running
and which resources created them. Grouping by Node allows to see how Pods are spread across the nodes and how many
resources they requested.
### Logs Viewer
Argo CD provides a way to see live logs of pods, which is very useful for debugging and troubleshooting. In the v2.0
release, the log visualization has been rewritten to support pagination, filtering, the ability to disable/enable log
streaming, and even a dark mode for terminal lovers. Do you want to see aggregated logs of multiple deployment pods?
Not a problem! Just click on the parent resource such as Deployment, ReplicaSet, or StatefulSet and navigate
to the Logs tab.
### Banner Feature
Want to notify your Argo CD users of upcoming changes? Just specify the notification message and optional URL using the
`ui.bannercontent` and `ui.bannerurl` attributes in the `argocd-cm` ConfigMap.
### Core Features
* The new sync option `PrunePropagationPolicy=background` allows using background deletion during syncing
* New application finalizer `resources-finalizer.argocd.argoproj.io:background` allows using background deletion when the application is deleted
* The new sync option `ApplyOutOfSyncOnly=true` allows skipping syncing resources that are already in the desired state.
* The new sync option `PruneLast=true` allows deferring resource pruning until the last synchronization phase after all other resources are synced and healthy.
### The argocd-util CLI
Argo CD Util is a CLI tool that contains useful commands for operators who manage Argo CD. Starting from this release
the Argo CD Utility is published with every Argo CD release as a Homebrew installation.
## v1.8.7 (2021-02-26)
### Important note
This release fixed a regression regarding which cluster resources are permitted on the AppProject level.
Previous to this fix, after #3960 has been merged, all cluster resources were allowed on project level when neither of
the allow or deny lists was defined. However, the correct behavior is to block all resources in this case.
If you have Projects with empty allow and deny lists, but want the associated applications be able to sync cluster
resources, you will have to adapt your cluster resources allow lists to explicitly allow the resources.
- fix: redact sensitive data in logs (#5662)
- fix: Properly escape HTML for error message from CLI SSO (#5563)
- fix: Empty resource whitelist allowed all resources (#5540) (#5551)
## v1.8.6 (2021-02-26)
- fix: Properly escape HTML for error message from CLI SSO (#5563)
- fix: API server should not print resource body when resource update fails (#5617)
- fix: fix memory leak in application controller (#5604)
## v1.8.5 (2021-02-19)
- fix: 'argocd app wait --suspended' stuck if operation is in progress (#5511)
- fix: Presync hooks stop working after namespace resource is added in a Helm chart #5522
- docs: add the missing rbac resources to the documentation (#5476)
* Better compatibility with Helm Hooks [#1816](https://github.com/argoproj/argo-cd/issues/1816)
* App-of-Apps Health Assessment [#3781](https://github.com/argoproj/argo-cd/issues/3781)
## Global Projects
This release makes it easy to manage an Argo CD that has hundreds of Projects. Instead of duplicating the same organization-wide rules in all projects
you can put such rules into one project and make this project “global” for all other projects. Rules defined in the global project are inherited by all
other projects and therefore don’t have to be duplicated. The sample below demonstrates how you can create a global project and specify which project should
inherit global project rules using Kubernetes labels.
## User Interface Improvements
The Argo CD user interface is an important part of a project and we keep working hard on improving the user experience. Here is an incomplete list of implemented improvements:
- fix: when --rootpath is on, 404 is returned when URL contains encoded URI (#3564)
## v1.5.4 (2020-05-05)
- fix: CLI commands with --grpc-web
## v1.5.3 (2020-05-01)
This patch release introduces a set of enhancements and bug fixes. Here are most notable changes:
@@ -32,7 +498,7 @@ customizations, custom resource health checks, and more.
### Other
* New Project and Application CRD settings ([#2900](https://github.com/argoproj/argo-cd/issues/2900), [#2873](https://github.com/argoproj/argo-cd/issues/2873)) that allows customizing Argo CD behavior.
* Upgraded Dex (v2.22.0) enables seamless [SSO integration](https://www.openshift.com/blog/openshift-authentication-integration-with-argocd) with Openshift.
* Upgraded Dex (v2.22.0) enables seamless [SSO integration](https://www.openshift.com/blog/openshift-authentication-integration-with-argocd) with OpenShift.
#### Enhancements
@@ -64,7 +530,7 @@ customizations, custom resource health checks, and more.
* fix for helm repo add with flag --insecure-skip-server-verification (#3420)
* fix: app diff --local support for helm repo. #3151 (#3407)
* fix: Syncing apps incorrectly states "app synced", but this is not true (#3286)
* fix: for jsonnet when it is localed in nested subdirectory and uses import (#3372)
* fix: for jsonnet when it is located in nested subdirectory and uses import (#3372)
* feat: Add custom healthchecks for cert-manager v0.11.0 (#2689)
* feat: Add custom healthchecks for cert-manager v0.11.0 (#2689)
* feat: add git submodule support (#2495)
* feat: Add repository credential management API and CLI (addresses #2136) (#2207)
* feat: add support for --additional-headers cli flag (#2467)
@@ -432,7 +898,7 @@ https://youtu.be/GP7xtrnNznw
##### Orphan Resources
Some users would like to make sure that resources in a namespace are managed only by Argo CD. So we've introduced the concept of an "orphan resource" - any resource that is in namespace associated with an app, but not managed by Argo CD. This is enabled in the project settings. Once enabled, Argo CD will show in the app view any resources in the app's namepspace that is not mananged by Argo CD.
Some users would like to make sure that resources in a namespace are managed only by Argo CD. So we've introduced the concept of an "orphan resource" - any resource that is in namespace associated with an app, but not managed by Argo CD. This is enabled in the project settings. Once enabled, Argo CD will show in the app view any resources in the app's namespace that is not managed by Argo CD.
https://youtu.be/9ZoTevVQf5I
@@ -475,7 +941,7 @@ There may be instances when you want to control the times during which an Argo C
#### Bug Fixes
- failed parsing on parameters with comma (#1660)
- Statefuleset with OnDelete Update Strategy stuck progressing (#1881)
- StatefulSet with OnDelete Update Strategy stuck progressing (#1881)
- Warning during secret diffing (#1923)
- Error message "Unable to load data: key is missing" is confusing (#1944)
- OIDC group bindings are truncated (#2006)
@@ -514,7 +980,7 @@ There may be instances when you want to control the times during which an Argo C
- Creating an application from Helm repository should select "Helm" as source type (#2378)
- The parameters of ValidateAccess GRPC method should not be logged (#2386)
- Maintenance window meaning is confusing (#2398)
- UI bug when targetRevision is ommited (#2407)
- UI bug when targetRevision is omitted (#2407)
- Too many vulnerabilities in Docker image (#2425)
- proj windows commands not consistent with other commands (#2443)
- Custom resource actions cannot be executed from the UI (#2448)
@@ -557,7 +1023,7 @@ There may be instances when you want to control the times during which an Argo C
## v1.2.3 (2019-10-1)
* Make argo-cd docker images openshift friendly (#2362) (@duboisf)
* Add dest-server and dest-namespace field to reconciliation logs (#2354)
+ Resource action equivalent to `kubectl rollout restart` (#2177)
@@ -608,7 +1074,7 @@ Support for Git LFS enabled repositories - now you can store Helm charts as tar
+ Added 'SyncFail' to possible HookTypes in UI (#2147)
+ Support for Git LFS enabled repositories (#1853)
+ Server certificate and known hosts management (#1514)
+ Client HTTPS certifcates for private git repositories (#1945)
+ Client HTTPS certificates for private git repositories (#1945)
+ Badge for application status (#1435)
+ Make the health check for APIService a built in (#1841)
+ Bitbucket Server and Gogs webhook providers (#1269)
@@ -642,13 +1108,13 @@ Support for Git LFS enabled repositories - now you can store Helm charts as tar
- Wait for CRD creation during sync process (#1940)
- Added a button to select out of sync items in the sync panel (#1902)
- Proper handling of an excluded resource in an application (#1621)
- Stop repeating logs on stoped container (#1614)
- Stop repeating logs on stopped container (#1614)
- Fix git repo url parsing on application list view (#2174)
- Fix nil pointer dereference error during app reconciliation (#2146)
- Fix history api fallback implementation to support app names with dots (#2114)
- Fixes some code issues related to Kustomize build options. (#2146)
- Adds checks around valid paths for apps (#2133)
- Enpoint incorrectly considered top level managed resource (#2060)
- Endpoint incorrectly considered top level managed resource (#2060)
- Allow adding certs for hostnames ending on a dot (#2116)
#### Other
@@ -698,7 +1164,7 @@ optimized which significantly reduced the number of Git requests. With v1.1 rele
#### User Defined Application Metadata
User-defined Application metadata enables the user to define a list of useful URLs for their specific application and expose those links on the UI
(e.g. reference tp a CI pipeline or an application-specific management tool). These links should provide helpful shortcuts that make easier to integrate Argo CD into existing
(e.g. reference to a CI pipeline or an application-specific management tool). These links should provide helpful shortcuts that make easier to integrate Argo CD into existing
systems by making it easier to find other components inside and outside Argo CD.
### Deprecation Notice
@@ -971,7 +1437,7 @@ Argo CD introduces some additional CLI commands:
#### Label selector changes, dex-server rename
The label selectors for deployments were been renamed to use kubernetes common labels
(`app.kuberentes.io/name=NAME` instead of `app=NAME`). Since K8s deployment label selectors are
(`app.kubernetes.io/name=NAME` instead of `app=NAME`). Since K8s deployment label selectors are
immutable, during an upgrade from v0.11 to v0.12, the old deployments should be deleted using
`--cascade=false` which allows the new deployments to be created without introducing downtime.
Once the new deployments are ready, the older replicasets can be deleted. Use the following
@@ -1062,13 +1528,13 @@ has a minimum client version of v0.12.0. Older CLI clients will be rejected.
* Deprecate componentParameterOverrides in favor of source specific config (#1207)
* Support talking to Dex using local cluster address instead of public address (#1211)
* Use Recreate deployment strategy for controller (#1315)
* Honor os environment variables for helm commands (#1306) (@1337andre)
* Honor OS environment variables for helm commands (#1306) (@1337andre)
* Disable CGO_ENABLED for server/controller binaries (#1286)
* Documentation fixes and improvements (@twz123, @yann-soubeyrand, @OmerKahani, @dulltz)
- Fix CRD creation/deletion handling (#1249)
- Git cloning via SSH was not verifying host public key (#1276)
- Fixed multiple goroutine leaks in controller and api-server
- Fix isssue where `argocd app set -p` required repo privileges. (#1280)
- Fix issue where `argocd app set -p` required repo privileges. (#1280)
- Fix local diff of non-namespaced resources. Also handle duplicates in local diff (#1289)
- Deprecated resource kinds from 'extensions' groups are not reconciled correctly (#1232)
- Fix issue where CLI would panic after timeout when cli did not have get permissions (#1209)
# ASCIIRenderer does not implement blackfriday.Renderer
[[override]]
name="github.com/russross/blackfriday"
version="1.5.2"
[[override]]
branch="release-13.0"
name="k8s.io/client-go"
[[override]]
name="github.com/casbin/casbin"
version="1.9.1"
[[constraint]]
name="github.com/stretchr/testify"
version="1.5.1"
[[constraint]]
name="github.com/gobuffalo/packr"
version="v1.11.0"
[[constraint]]
branch="master"
name="github.com/argoproj/pkg"
[[constraint]]
branch="master"
name="github.com/yudai/gojsondiff"
# Fixes: Could not introduce sigs.k8s.io/kustomize@v2.0.3, as it has a dependency on github.com/spf13/cobra with constraint ^0.0.2, which has no overlap with existing constraint 0.0.5 from (root)
[[override]]
name="github.com/spf13/cobra"
revision="0.0.5"
# TODO: move off of k8s.io/kube-openapi and use controller-tools for CRD spec generation
# Pulls in all unvendored dependencies (local version)
.PHONY:dep-ensure-local
dep-ensure-local:
dep ensure -no-vendor
# Runs dep check in a container to ensure Gopkg.lock is up-to-date with dependencies
.PHONY:dep-check
dep-check:
$(call run-in-test-client,make dep-check-local)
# Runs dep check locally to ensure Gopkg.lock is up-to-date with dependencies
.PHONY:dep-check-local
dep-check-local:
if ! dep check -skip-vendor;thenecho"Please make sure Gopkg.lock is up-to-date - see https://argoproj.github.io/argo-cd/developer-guide/faq/#why-does-the-build-step-fail";exit 1;fi
.PHONY:mod-vendor-local
mod-vendor-local:mod-download-local
go mod vendor
# Deprecated - replace by install-local-tools
.PHONY:install-lint-tools
@@ -273,7 +310,7 @@ install-lint-tools:
# Run linter on the code
.PHONY:lint
lint:
lint:test-tools-image
$(call run-in-test-client,make lint-local)
# Run linter on the code (local version)
@@ -285,7 +322,7 @@ lint-local:
GOGC=$(ARGOCD_LINT_GOGC)GOMAXPROCS=2 golangci-lint run --fix --verbose --timeout 300s
.PHONY:lint-ui
lint-ui:
lint-ui:test-tools-image
$(call run-in-test-client,make lint-ui-local)
.PHONY:lint-ui-local
@@ -294,21 +331,21 @@ lint-ui-local:
# Build all Go code
.PHONY:build
build:
build:test-tools-image
mkdir -p $(GOCACHE)
$(call run-in-test-client, make build-local)
# Build all Go code (local version)
.PHONY:build-local
build-local:
go build -p 1 -v `go list ./... | grep -v 'resource_customizations\|test/e2e'`
go build -v `go list ./... | grep -v 'resource_customizations\|test/e2e'`
# Run all unit tests
#
# If TEST_MODULE is set (to fully qualified module name), only this specific
controller: sh -c "FORCE_LOG_COLORS=1 ARGOCD_FAKE_IN_CLUSTER=true go run ./cmd/argocd-application-controller/main.go --loglevel debug --redis localhost:${ARGOCD_E2E_REDIS_PORT:-6379} --repo-server localhost:${ARGOCD_E2E_REPOSERVER_PORT:-8081}"
api-server: sh -c "FORCE_LOG_COLORS=1 ARGOCD_FAKE_IN_CLUSTER=true go run ./cmd/argocd-server/main.go --loglevel debug --redis localhost:${ARGOCD_E2E_REDIS_PORT:-6379} --disable-auth=${ARGOCD_E2E_DISABLE_AUTH:-'true'} --insecure --dex-server http://localhost:${ARGOCD_E2E_DEX_PORT:-5556} --repo-server localhost:${ARGOCD_E2E_REPOSERVER_PORT:-8081} --port ${ARGOCD_E2E_APISERVER_PORT:-8080} --staticassets ui/dist/app"
dex: sh -c "go run github.com/argoproj/argo-cd/cmd/argocd-util gendexcfg -o `pwd`/dist/dex.yaml && docker run --rm -p ${ARGOCD_E2E_DEX_PORT:-5556}:${ARGOCD_E2E_DEX_PORT:-5556} -v `pwd`/dist/dex.yaml:/dex.yaml quay.io/dexidp/dex:v2.22.0 serve /dex.yaml"
redis: docker run --rm --name argocd-redis -i -p ${ARGOCD_E2E_REDIS_PORT:-6379}:${ARGOCD_E2E_REDIS_PORT:-6379} redis:5.0.3-alpine --save "" --appendonly no --port ${ARGOCD_E2E_REDIS_PORT:-6379}
repo-server: sh -c "FORCE_LOG_COLORS=1 ARGOCD_FAKE_IN_CLUSTER=true go run ./cmd/argocd-repo-server/main.go --loglevel debug --port ${ARGOCD_E2E_REPOSERVER_PORT:-8081} --redis localhost:${ARGOCD_E2E_REDIS_PORT:-6379}"
controller: sh -c "FORCE_LOG_COLORS=1 ARGOCD_FAKE_IN_CLUSTER=true ARGOCD_TLS_DATA_PATH=${ARGOCD_TLS_DATA_PATH:-/tmp/argocd-local/tls} ARGOCD_SSH_DATA_PATH=${ARGOCD_SSH_DATA_PATH:-/tmp/argocd-local/ssh} ARGOCD_BINARY_NAME=argocd-application-controller go run ./cmd/main.go --loglevel debug --redis localhost:${ARGOCD_E2E_REDIS_PORT:-6379} --repo-server localhost:${ARGOCD_E2E_REPOSERVER_PORT:-8081}"
api-server: sh -c "FORCE_LOG_COLORS=1 ARGOCD_FAKE_IN_CLUSTER=true ARGOCD_TLS_DATA_PATH=${ARGOCD_TLS_DATA_PATH:-/tmp/argocd-local/tls} ARGOCD_SSH_DATA_PATH=${ARGOCD_SSH_DATA_PATH:-/tmp/argocd-local/ssh} ARGOCD_BINARY_NAME=argocd-server go run ./cmd/main.go --loglevel debug --redis localhost:${ARGOCD_E2E_REDIS_PORT:-6379} --disable-auth=${ARGOCD_E2E_DISABLE_AUTH:-'true'} --insecure --dex-server http://localhost:${ARGOCD_E2E_DEX_PORT:-5556} --repo-server localhost:${ARGOCD_E2E_REPOSERVER_PORT:-8081} --port ${ARGOCD_E2E_APISERVER_PORT:-8080} "
dex: sh -c "ARGOCD_BINARY_NAME=argocd-dex go run github.com/argoproj/argo-cd/v2/cmd gendexcfg -o `pwd`/dist/dex.yaml && docker run --rm -p ${ARGOCD_E2E_DEX_PORT:-5556}:${ARGOCD_E2E_DEX_PORT:-5556} -v `pwd`/dist/dex.yaml:/dex.yaml ghcr.io/dexidp/dex:v2.30.2 dex serve /dex.yaml"
redis: bash -c "if [ \"$ARGOCD_REDIS_LOCAL\" == 'true' ]; then redis-server --save '' --appendonly no --port ${ARGOCD_E2E_REDIS_PORT:-6379}; else docker run --rm --name argocd-redis -i -p ${ARGOCD_E2E_REDIS_PORT:-6379}:${ARGOCD_E2E_REDIS_PORT:-6379} redis:6.2.7-alpine --save '' --appendonly no --port ${ARGOCD_E2E_REDIS_PORT:-6379}; fi"
repo-server: sh -c "FORCE_LOG_COLORS=1 ARGOCD_FAKE_IN_CLUSTER=true ARGOCD_GNUPGHOME=${ARGOCD_GNUPGHOME:-/tmp/argocd-local/gpg/keys} ARGOCD_PLUGINSOCKFILEPATH=${ARGOCD_PLUGINSOCKFILEPATH:-/tmp/argo-e2e/app/config/plugin} ARGOCD_GPG_DATA_PATH=${ARGOCD_GPG_DATA_PATH:-/tmp/argocd-local/gpg/source} ARGOCD_TLS_DATA_PATH=${ARGOCD_TLS_DATA_PATH:-/tmp/argocd-local/tls} ARGOCD_SSH_DATA_PATH=${ARGOCD_SSH_DATA_PATH:-/tmp/argocd-local/ssh} ARGOCD_BINARY_NAME=argocd-repo-server ARGOCD_GPG_ENABLED=${ARGOCD_GPG_ENABLED:-false} go run ./cmd/main.go --loglevel debug --port ${ARGOCD_E2E_REPOSERVER_PORT:-8081} --redis localhost:${ARGOCD_E2E_REDIS_PORT:-6379}"
ui: sh -c 'cd ui && ${ARGOCD_E2E_YARN_CMD:-yarn} start'
* User Community meeting: [Every other Wednesday](https://calendar.google.com/calendar/u/0/embed?src=argoproj@gmail.com) | [Agenda](https://docs.google.com/document/d/1xkoFkVviB70YBzSEa4bDnu-rUZ1sIFtwKKG1Uw8XsY8)
Participation in the Argo CD project is governed by the [CNCF Code of Conduct](https://github.com/cncf/foundation/blob/master/code-of-conduct.md)
### Blogs and Presentations
1. [Awesome-Argo: A Curated List of Awesome Projects and Resources Related to Argo](https://github.com/terrytangyuan/awesome-argo)
1. [GitOps Without Pipelines With ArgoCD Image Updater](https://youtu.be/avPUQin9kzU)
1. [Combining Argo CD (GitOps), Crossplane (Control Plane), And KubeVela (OAM)](https://youtu.be/eEcgn_gU3SM)
1. [How to Apply GitOps to Everything - Combining Argo CD and Crossplane](https://youtu.be/yrj4lmScKHQ)
1. [Couchbase - How To Run a Database Cluster in Kubernetes Using Argo CD](https://youtu.be/nkPoPaVzExY)
1. [Automation of Everything - How To Combine Argo Events, Workflows & Pipelines, CD, and Rollouts](https://youtu.be/XNXJtxkUKeY)
1. [Environments Based On Pull Requests (PRs): Using Argo CD To Apply GitOps Principles On Previews](https://youtu.be/cpAaI8p4R60)
1. [Argo CD: Applying GitOps Principles To Manage Production Environment In Kubernetes](https://youtu.be/vpWQeoaiRM4)
1. [Creating Temporary Preview Environments Based On Pull Requests With Argo CD And Codefresh](https://codefresh.io/continuous-deployment/creating-temporary-preview-environments-based-pull-requests-argo-cd-codefresh/)
1. [Tutorial: Everything You Need To Become A GitOps Ninja](https://www.youtube.com/watch?v=r50tRQjisxw) 90m tutorial on GitOps and Argo CD.
1. [Comparison of Argo CD, Spinnaker, Jenkins X, and Tekton](https://www.inovex.de/blog/spinnaker-vs-argo-cd-vs-tekton-vs-jenkins-x/)
1. [Simplify and Automate Deployments Using GitOps with IBM Multicloud Manager 3.1.2](https://medium.com/ibm-cloud/simplify-and-automate-deployments-using-gitops-with-ibm-multicloud-manager-3-1-2-4395af317359)
1. [GitOps for Kubeflow using Argo CD](https://www.kubeflow.org/docs/use-cases/gitops-for-kubeflow/)
1. [Simplify and Automate Deployments Using GitOps with IBM Multicloud Manager 3.1.2](https://www.ibm.com/cloud/blog/simplify-and-automate-deployments-using-gitops-with-ibm-multicloud-manager-3-1-2)
1. [GitOps for Kubeflow using Argo CD](https://v0-6.kubeflow.org/docs/use-cases/gitops-for-kubeflow/)
1. [GitOps Toolsets on Kubernetes with CircleCI and Argo CD](https://www.digitalocean.com/community/tutorials/webinar-series-gitops-tool-sets-on-kubernetes-with-circleci-and-argo-cd)
1. [Simplify and Automate Deployments Using GitOps with IBM Multicloud Manager](https://www.ibm.com/blogs/bluemix/2019/02/simplify-and-automate-deployments-using-gitops-with-ibm-multicloud-manager-3-1-2/)
1. [CI/CD in Light Speed with K8s and Argo CD](https://www.youtube.com/watch?v=OdzH82VpMwI&feature=youtu.be)
1. [Machine Learning as Code](https://www.youtube.com/watch?v=VXrGp5er1ZE&t=0s&index=135&list=PLj6h78yzYM2PZf9eA7bhWnIh_mK1vyOfU). Among other things, describes how Kubeflow uses Argo CD to implement GitOPs for ML
1. [Argo CD - GitOps Continuous Delivery for Kubernetes](https://www.youtube.com/watch?v=aWDIQMbp1cc&feature=youtu.be&t=1m4s)
1. [Introduction to Argo CD : Kubernetes DevOps CI/CD](https://www.youtube.com/watch?v=2WSJF7d8dUg&feature=youtu.be)
1. [GitOps Deployment and Kubernetes - using Argo CD](https://medium.com/riskified-technology/gitops-deployment-and-kubernetes-f1ab289efa4b)
1. [Deploy Argo CD with Ingress and TLS in Three Steps: No YAML Yak Shaving Required](https://itnext.io/deploy-argo-cd-with-ingress-and-tls-in-three-steps-no-yaml-yak-shaving-required-bc536d401491)
1. [GitOps Continuous Delivery with Argo and Codefresh](https://codefresh.io/events/cncf-member-webinar-gitops-continuous-delivery-argo-codefresh/)
1. [Stay up to date with Argo CD and Renovate](https://mjpitz.com/blog/2020/12/03/renovate-your-gitops/)
1. [Setting up Argo CD with Helm](https://www.arthurkoziel.com/setting-up-argocd-with-helm/)
1. [Applied GitOps with Argo CD](https://thenewstack.io/applied-gitops-with-argocd/)
1. [Solving configuration drift using GitOps with Argo CD](https://www.cncf.io/blog/2020/12/17/solving-configuration-drift-using-gitops-with-argo-cd/)
1. [Decentralized GitOps over environments](https://blogs.sap.com/2021/05/06/decentralized-gitops-over-environments/)
1. [How GitOps and Operators mark the rise of Infrastructure-As-Software](https://paytmlabs.com/blog/2021/10/how-to-improve-operational-work-with-operators-and-gitops/)
// Default time in seconds for application resync period
defaultAppResyncPeriod=180
)
funcNewCommand()*cobra.Command{
var(
clientConfigclientcmd.ClientConfig
appResyncPeriodint64
repoServerAddressstring
repoServerTimeoutSecondsint
selfHealTimeoutSecondsint
statusProcessorsint
operationProcessorsint
glogLevelint
metricsPortint
metricsCacheExpirationtime.Duration
metricsAplicationLabels[]string
kubectlParallelismLimitint64
cacheSrcfunc()(*appstatecache.Cache,error)
redisClient*redis.Client
repoServerPlaintextbool
repoServerStrictTLSbool
)
varcommand=cobra.Command{
Use:cliName,
Short:"Run ArgoCD Application Controller",
Long:"ArgoCD application controller is a Kubernetes controller that continuously monitors running applications and compares the current, live state against the desired target state (as specified in the repo). This command runs Application Controller in the foreground. It can be configured by following options.",
command.Flags().Int64Var(&appResyncPeriod,"app-resync",int64(env.ParseDurationFromEnv("ARGOCD_RECONCILIATION_TIMEOUT",defaultAppResyncPeriod*time.Second,0,math.MaxInt64).Seconds()),"Time period in seconds for application resync.")
command.Flags().StringVar(&repoServerAddress,"repo-server",env.StringFromEnv("ARGOCD_APPLICATION_CONTROLLER_REPO_SERVER",common.DefaultRepoServerAddr),"Repo server address.")
command.Flags().IntVar(&repoServerTimeoutSeconds,"repo-server-timeout-seconds",env.ParseNumFromEnv("ARGOCD_APPLICATION_CONTROLLER_REPO_SERVER_TIMEOUT_SECONDS",60,0,math.MaxInt64),"Repo server RPC call timeout seconds.")
command.Flags().IntVar(&statusProcessors,"status-processors",env.ParseNumFromEnv("ARGOCD_APPLICATION_CONTROLLER_STATUS_PROCESSORS",20,0,math.MaxInt32),"Number of application status processors")
command.Flags().IntVar(&operationProcessors,"operation-processors",env.ParseNumFromEnv("ARGOCD_APPLICATION_CONTROLLER_OPERATION_PROCESSORS",10,0,math.MaxInt32),"Number of application operation processors")
command.Flags().StringVar(&cmdutil.LogFormat,"logformat",env.StringFromEnv("ARGOCD_APPLICATION_CONTROLLER_LOGFORMAT","text"),"Set the logging format. One of: text|json")
command.Flags().StringVar(&cmdutil.LogLevel,"loglevel",env.StringFromEnv("ARGOCD_APPLICATION_CONTROLLER_LOGLEVEL","info"),"Set the logging level. One of: debug|info|warn|error")
command.Flags().IntVar(&glogLevel,"gloglevel",0,"Set the glog logging level")
command.Flags().IntVar(&metricsPort,"metrics-port",common.DefaultPortArgoCDMetrics,"Start metrics server on given port")
command.Flags().DurationVar(&metricsCacheExpiration,"metrics-cache-expiration",env.ParseDurationFromEnv("ARGOCD_APPLICATION_CONTROLLER_METRICS_CACHE_EXPIRATION",0*time.Second,0,math.MaxInt64),"Prometheus metrics cache expiration (disabled by default. e.g. 24h0m0s)")
command.Flags().IntVar(&selfHealTimeoutSeconds,"self-heal-timeout-seconds",env.ParseNumFromEnv("ARGOCD_APPLICATION_CONTROLLER_SELF_HEAL_TIMEOUT_SECONDS",5,0,math.MaxInt32),"Specifies timeout between application self heal attempts")
command.Flags().Int64Var(&kubectlParallelismLimit,"kubectl-parallelism-limit",20,"Number of allowed concurrent kubectl fork/execs. Any value less the 1 means no limit.")
command.Flags().BoolVar(&repoServerPlaintext,"repo-server-plaintext",env.ParseBoolFromEnv("ARGOCD_APPLICATION_CONTROLLER_REPO_SERVER_PLAINTEXT",false),"Disable TLS on connections to repo server")
command.Flags().BoolVar(&repoServerStrictTLS,"repo-server-strict-tls",env.ParseBoolFromEnv("ARGOCD_APPLICATION_CONTROLLER_REPO_SERVER_STRICT_TLS",false),"Whether to use strict validation of the TLS cert presented by the repo server")
command.Flags().StringSliceVar(&metricsAplicationLabels,"metrics-application-labels",[]string{},"List of Application labels that will be added to the argocd_application_labels metric")
command.Flags().Int64Var(&appResyncPeriod,"app-resync",defaultAppResyncPeriod,"Time period in seconds for application resync.")
command.Flags().StringVar(&repoServerAddress,"repo-server",common.DefaultRepoServerAddr,"Repo server address.")
command.Flags().IntVar(&repoServerTimeoutSeconds,"repo-server-timeout-seconds",60,"Repo server RPC call timeout seconds.")
command.Flags().IntVar(&statusProcessors,"status-processors",1,"Number of application status processors")
command.Flags().IntVar(&operationProcessors,"operation-processors",1,"Number of application operation processors")
command.Flags().StringVar(&logLevel,"loglevel","info","Set the logging level. One of: debug|info|warn|error")
command.Flags().IntVar(&glogLevel,"gloglevel",0,"Set the glog logging level")
command.Flags().IntVar(&metricsPort,"metrics-port",common.DefaultPortArgoCDMetrics,"Start metrics server on given port")
command.Flags().IntVar(&selfHealTimeoutSeconds,"self-heal-timeout-seconds",5,"Specifies timeout between application self heal attempts")
command.Flags().Int64Var(&kubectlParallelismLimit,"kubectl-parallelism-limit",20,"Number of allowed concurrent kubectl fork/execs. Any value less the 1 means no limit.")
Long:"ArgoCD ConfigManagementPlugin Server is an internal service which runs as sidecar container in reposerver deployment. It can be configured by following options.",
Long:"ArgoCD Repository Server is an internal service which maintains a local cache of the Git repository holding the application manifests, and is responsible for generating and returning the Kubernetes manifests. This command runs Repository Server in the foreground. It can be configured by following options.",
command.Flags().StringVar(&cmdutil.LogFormat,"logformat",env.StringFromEnv("ARGOCD_REPO_SERVER_LOGFORMAT","text"),"Set the logging format. One of: text|json")
command.Flags().StringVar(&cmdutil.LogLevel,"loglevel",env.StringFromEnv("ARGOCD_REPO_SERVER_LOGLEVEL","info"),"Set the logging level. One of: debug|info|warn|error")
command.Flags().Int64Var(¶llelismLimit,"parallelismlimit",int64(env.ParseNumFromEnv("ARGOCD_REPO_SERVER_PARALLELISM_LIMIT",0,0,math.MaxInt32)),"Limit on number of concurrent manifests generate requests. Any value less the 1 means no limit.")
command.Flags().IntVar(&listenPort,"port",common.DefaultPortRepoServer,"Listen on given port for incoming connections")
command.Flags().IntVar(&metricsPort,"metrics-port",common.DefaultPortRepoServerMetrics,"Start metrics server on given port")
command.Flags().BoolVar(&disableTLS,"disable-tls",env.ParseBoolFromEnv("ARGOCD_REPO_SERVER_DISABLE_TLS",false),"Disable TLS on the gRPC endpoint")
command.Flags().StringVar(&maxCombinedDirectoryManifestsSize,"max-combined-directory-manifests-size",env.StringFromEnv("ARGOCD_REPO_SERVER_MAX_COMBINED_DIRECTORY_MANIFESTS_SIZE","10M"),"Max combined size of manifest files in a directory-type Application")
log.Infof("argocd-repo-server %s serving on %s",common.GetVersion(),listener.Addr())
stats.RegisterStackDumper()
stats.StartStatsTicker(10*time.Minute)
stats.RegisterHeapDumper("memprofile")
err=grpc.Serve(listener)
errors.CheckError(err)
returnnil
},
}
command.Flags().StringVar(&logLevel,"loglevel","info","Set the logging level. One of: debug|info|warn|error")
command.Flags().Int64Var(¶llelismLimit,"parallelismlimit",0,"Limit on number of concurrent manifests generate requests. Any value less the 1 means no limit.")
command.Flags().IntVar(&listenPort,"port",common.DefaultPortRepoServer,"Listen on given port for incoming connections")
command.Flags().IntVar(&metricsPort,"metrics-port",common.DefaultPortRepoServerMetrics,"Start metrics server on given port")
Long:"The API server is a gRPC/REST server which exposes the API consumed by the Web UI, CLI, and CI/CD systems. This command runs API server in the foreground. It can be configured by following options.",
log.Warnf("--basehref and --rootpath had conflict: basehref: %s rootpath: %s",baseHRef,rootPath)
}
baseHRef=rootPath
}
argoCDOpts:=server.ArgoCDServerOpts{
Insecure:insecure,
ListenPort:listenPort,
MetricsPort:metricsPort,
Namespace:namespace,
BaseHRef:baseHRef,
RootPath:rootPath,
KubeClientset:kubeclientset,
AppClientset:appclientset,
RepoClientset:repoclientset,
DexServerAddr:dexServerAddress,
DisableAuth:disableAuth,
EnableGZip:enableGZip,
TLSConfigCustomizer:tlsConfigCustomizer,
Cache:cache,
XFrameOptions:frameOptions,
RedisClient:redisClient,
StaticAssetsDir:staticAssetsDir,
}
stats.RegisterStackDumper()
stats.StartStatsTicker(10*time.Minute)
stats.RegisterHeapDumper("memprofile")
for{
ctx:=context.Background()
ctx,cancel:=context.WithCancel(ctx)
argocd:=server.NewServer(ctx,argoCDOpts)
argocd.Run(ctx,listenPort,metricsPort)
cancel()
}
},
}
clientConfig=cli.AddKubectlFlagsToCmd(command)
command.Flags().BoolVar(&insecure,"insecure",env.ParseBoolFromEnv("ARGOCD_SERVER_INSECURE",false),"Run server without TLS")
command.Flags().StringVar(&staticAssetsDir,"staticassets",env.StringFromEnv("ARGOCD_SERVER_STATIC_ASSETS","/shared/app"),"Directory path that contains additional static assets")
command.Flags().StringVar(&baseHRef,"basehref",env.StringFromEnv("ARGOCD_SERVER_BASEHREF","/"),"Value for base href in index.html. Used if Argo CD is running behind reverse proxy under subpath different from /")
command.Flags().StringVar(&rootPath,"rootpath",env.StringFromEnv("ARGOCD_SERVER_ROOTPATH",""),"Used if Argo CD is running behind reverse proxy under subpath different from /")
command.Flags().StringVar(&cmdutil.LogFormat,"logformat",env.StringFromEnv("ARGOCD_SERVER_LOGFORMAT","text"),"Set the logging format. One of: text|json")
command.Flags().StringVar(&cmdutil.LogLevel,"loglevel",env.StringFromEnv("ARGOCD_REPO_SERVER_LOGLEVEL","info"),"Set the logging level. One of: debug|info|warn|error")
command.Flags().IntVar(&glogLevel,"gloglevel",0,"Set the glog logging level")
command.Flags().StringVar(&repoServerAddress,"repo-server",env.StringFromEnv("ARGOCD_SERVER_REPO_SERVER",common.DefaultRepoServerAddr),"Repo server address")
command.Flags().StringVar(&dexServerAddress,"dex-server",env.StringFromEnv("ARGOCD_SERVER_DEX_SERVER",common.DefaultDexServerAddr),"Dex server address")
command.Flags().IntVar(&listenPort,"port",common.DefaultPortAPIServer,"Listen on given port")
command.Flags().IntVar(&metricsPort,"metrics-port",common.DefaultPortArgoCDAPIServerMetrics,"Start metrics on given port")
command.Flags().IntVar(&repoServerTimeoutSeconds,"repo-server-timeout-seconds",env.ParseNumFromEnv("ARGOCD_SERVER_REPO_SERVER_TIMEOUT_SECONDS",60,0,math.MaxInt64),"Repo server RPC call timeout seconds.")
command.Flags().StringVar(&frameOptions,"x-frame-options",env.StringFromEnv("ARGOCD_SERVER_X_FRAME_OPTIONS","sameorigin"),"Set X-Frame-Options header in HTTP responses to `value`. To disable, set to \"\".")
command.Flags().BoolVar(&repoServerPlaintext,"repo-server-plaintext",env.ParseBoolFromEnv("ARGOCD_SERVER_REPO_SERVER_PLAINTEXT",false),"Use a plaintext client (non-TLS) to connect to repository server")
command.Flags().BoolVar(&repoServerStrictTLS,"repo-server-strict-tls",env.ParseBoolFromEnv("ARGOCD_SERVER_REPO_SERVER_STRICT_TLS",false),"Perform strict validation of TLS certificates when connecting to repo server")
command.Flags().StringVar(&baseHRef,"basehref","/","Value for base href in index.html. Used if Argo CD is running behind reverse proxy under subpath different from /")
command.Flags().StringVar(&rootPath,"rootpath","","Used if Argo CD is running behind reverse proxy under subpath different from /")
command.Flags().StringVar(&logLevel,"loglevel","info","Set the logging level. One of: debug|info|warn|error")
command.Flags().IntVar(&glogLevel,"gloglevel",0,"Set the glog logging level")
command.Flags().StringVar(&repoServerAddress,"repo-server",common.DefaultRepoServerAddr,"Repo server address")
command.Flags().StringVar(&dexServerAddress,"dex-server",common.DefaultDexServerAddr,"Dex server address")
command.Flags().IntVar(&listenPort,"port",common.DefaultPortAPIServer,"Listen on given port")
command.Flags().IntVar(&metricsPort,"metrics-port",common.DefaultPortArgoCDAPIServerMetrics,"Start metrics on given port")
command.Flags().IntVar(&repoServerTimeoutSeconds,"repo-server-timeout-seconds",60,"Repo server RPC call timeout seconds.")
command.Flags().StringVar(&frameOptions,"x-frame-options","sameorigin","Set X-Frame-Options header in HTTP responses to `value`. To disable, set to \"\".")
command.Flags().IntVar(&replicas,"replicas",0,"Application controller replicas count. Inferred from number of running controller pods if not specified")
command.Flags().BoolVar(&portForwardRedis,"port-forward-redis",true,"Automatically port-forward ha proxy redis from current namespace?")
command.Flags().BoolVar(&dryRun,"dry-run",true,"Print what will be performed")
command.Flags().BoolVar(&clusterResources,"cluster-resources",false,"Indicates if cluster level resources should be managed.")
command.Flags().IntVar(&namespacesCount,"max-namespace-count",0,"Max number of namespaces that cluster should managed managed namespaces is less or equal to specified count")
command.Flags().IntVar(&replicas,"replicas",0,"Application controller replicas count. Inferred from number of running controller pods if not specified")
command.Flags().BoolVar(&portForwardRedis,"port-forward-redis",true,"Automatically port-forward ha proxy redis from current namespace?")
command.PersistentFlags().StringVar(&pathOpts.LoadingRules.ExplicitPath,pathOpts.ExplicitFileFlag,pathOpts.LoadingRules.ExplicitPath,"use a particular kubeconfig file")
command.Flags().StringVar(&bearerToken,"bearer-token","","Authentication token that should be used to access K8S API server")
command.Flags().BoolVar(&generateToken,"generate-bearer-token",false,"Generate authentication token that should be used to access K8S API server")
command.Flags().StringVar(&clusterOpts.ServiceAccount,"service-account","argocd-manager",fmt.Sprintf("System namespace service account to use for kubernetes resource management. If not set then default \"%s\" SA will be used",clusterauth.ArgoCDManagerServiceAccount))
command.Flags().StringVar(&clusterOpts.SystemNamespace,"system-namespace",common.DefaultSystemNamespace,"Use different system namespace")
command.Flags().StringVarP(&outputFormat,"output","o","yaml","Output format. One of: json|yaml")
Long:"Executes resource action using the lua script configured in the 'resource.customizations' field of 'argocd-cm' ConfigMap and outputs updated fields",
Use:"list-actions RESOURCE_YAML_PATH",
Short:"List available resource actions",
Long:"List actions available for given resource action using the lua scripts configured in the 'resource.customizations' field of 'argocd-cm' ConfigMap and outputs updated fields",
Long:"Executes resource action using the lua script configured in the 'resource.customizations' field of 'argocd-cm' ConfigMap and outputs updated fields",
message:=fmt.Sprintf("WARNING: This will create a service account `argocd-manager` on the cluster referenced by context `%s` with full cluster level admin privileges. Do you want to continue [y/N]? ",contextName)
message:=fmt.Sprintf("WARNING: This will create a service account `argocd-manager` on the cluster referenced by context `%s` with full cluster level admin privileges. Do you want to continue [y/N]? ",contextName)
command.PersistentFlags().StringVar(&pathOpts.LoadingRules.ExplicitPath,pathOpts.ExplicitFileFlag,pathOpts.LoadingRules.ExplicitPath,"use a particular kubeconfig file")
command.Flags().BoolVar(&inCluster,"in-cluster",false,"Indicates Argo CD resides inside this cluster and should connect using the internal k8s hostname (kubernetes.default.svc)")
command.Flags().BoolVar(&upsert,"upsert",false,"Override an existing cluster with the same name even if the spec differs")
command.Flags().StringVar(&serviceAccount,"service-account","",fmt.Sprintf("System namespace service account to use for kubernetes resource management. If not set then default \"%s\" SA will be created",clusterauth.ArgoCDManagerServiceAccount))
command.Flags().StringVar(&awsClusterName,"aws-cluster-name","","AWS Cluster name if set then aws cli eks token command will be used to access cluster")
command.Flags().StringVar(&awsRoleArn,"aws-role-arn","","Optional AWS role arn. If set then AWS IAM Authenticator assume a role to perform cluster operations instead of the default AWS credential provider chain.")
command.Flags().StringVar(&systemNamespace,"system-namespace",common.DefaultSystemNamespace,"Use different system namespace")
command.Flags().StringArrayVar(&namespaces,"namespace",nil,"List of namespaces which are allowed to manage")
command.Flags().BoolVar(&clusterOpts.Upsert,"upsert",false,"Override an existing cluster with the same name even if the spec differs")
command.Flags().StringVar(&clusterOpts.ServiceAccount,"service-account","",fmt.Sprintf("System namespace service account to use for kubernetes resource management. If not set then default \"%s\" SA will be created",clusterauth.ArgoCDManagerServiceAccount))
command.Flags().StringVar(&clusterOpts.SystemNamespace,"system-namespace",common.DefaultSystemNamespace,"Use different system namespace")
command.Flags().BoolVar(&opts.orphanedResourcesWarn,"orphaned-resources-warn",false,"Specifies if applications should be a warning condition when orphaned resources detected")
command.Flags().StringVarP(&opts.action,"action","a","","Action to grant/deny permission on (e.g. get, create, list, update, delete)")
command.Flags().StringVarP(&opts.permission,"permission","p","allow","Whether to allow or deny access to object with the action. This can only be 'allow' or 'deny'")
command.Flags().StringSliceVar(&namespaces,"namespaces",[]string{},"Namespaces that the schedule will be applied to. Comma separated, wildcards supported (e.g. --namespaces default,\\*-prod)")
command.Flags().StringSliceVar(&clusters,"clusters",[]string{},"Clusters that the schedule will be applied to. Comma separated, wildcards supported (e.g. --clusters prod,staging)")
command.Flags().BoolVar(&manualSync,"manual-sync",false,"Allow manual syncs for both deny and allow windows")
command.Flags().StringVar(&timeZone,"time-zone","UTC","Time zone of the sync window")
command.Flags().StringSliceVar(&applications,"applications",[]string{},"Applications that the schedule will be applied to. Comma separated, wildcards supported (e.g. --applications prod-\\*,website)")
command.Flags().StringSliceVar(&namespaces,"namespaces",[]string{},"Namespaces that the schedule will be applied to. Comma separated, wildcards supported (e.g. --namespaces default,\\*-prod)")
command.Flags().StringSliceVar(&clusters,"clusters",[]string{},"Clusters that the schedule will be applied to. Comma separated, wildcards supported (e.g. --clusters prod,staging)")
command.Flags().StringVar(&timeZone,"time-zone","UTC","Time zone of the sync window. (e.g. --time-zone \"America/New_York\")")
command.Flags().StringVar(&sshPrivateKeyPath,"ssh-private-key-path","","path to the private ssh key (e.g. ~/.ssh/id_rsa)")
command.Flags().StringVar(&tlsClientCertPath,"tls-client-cert-path","","path to the TLS client cert (must be PEM format)")
command.Flags().StringVar(&tlsClientCertKeyPath,"tls-client-cert-key-path","","path to the TLS client cert's key path (must be PEM format)")
command.Flags().Int64Var(&repo.GithubAppId,"github-app-id",0,"id of the GitHub Application")
command.Flags().Int64Var(&repo.GithubAppInstallationId,"github-app-installation-id",0,"installation id of the GitHub Application")
command.Flags().StringVar(&githubAppPrivateKeyPath,"github-app-private-key-path","","private key of the GitHub Application")
command.Flags().StringVar(&repo.GitHubAppEnterpriseBaseURL,"github-app-enterprise-base-url","","base url to use when using GitHub Enterprise (e.g. https://ghe.example.com/api/v3")
command.Flags().BoolVar(&upsert,"upsert",false,"Override an existing repository with the same name even if the spec differs")
command.Flags().BoolVar(&repo.EnableOCI,"enable-oci",false,"Specifies whether helm-oci support should be enabled for this repo")
command.Flags().StringVar(&repo.Type,"type",common.DefaultRepoType,"type of the repository, \"git\" or \"helm\"")
command.PersistentFlags().BoolVar(&clientOpts.GRPCWeb,"grpc-web",config.GetBoolFlag("grpc-web"),"Enables gRPC-web protocol. Useful if Argo CD server is behind proxy which does not support HTTP2.")
command.PersistentFlags().StringVar(&clientOpts.GRPCWebRootPath,"grpc-web-root-path",config.GetFlag("grpc-web-root-path",""),"Enables gRPC-web protocol. Useful if Argo CD server is behind proxy which does not support HTTP2. Set web root.")
command.PersistentFlags().StringVar(&logLevel,"loglevel",config.GetFlag("loglevel","info"),"Set the logging level. One of: debug|info|warn|error")
command.PersistentFlags().StringVar(&cmdutil.LogFormat,"logformat",config.GetFlag("logformat","text"),"Set the logging format. One of: text|json")
command.PersistentFlags().StringVar(&cmdutil.LogLevel,"loglevel",config.GetFlag("loglevel","info"),"Set the logging level. One of: debug|info|warn|error")
command.PersistentFlags().StringSliceVarP(&clientOpts.Headers,"header","H",[]string{},"Sets additional header to all requests made by Argo CD CLI. (Can be repeated multiple times to add multiple headers, also supports comma separated headers)")
command.PersistentFlags().BoolVar(&clientOpts.PortForward,"port-forward",config.GetBoolFlag("port-forward"),"Connect to a random argocd-server port using port forwarding")
command.PersistentFlags().StringVar(&clientOpts.PortForwardNamespace,"port-forward-namespace",config.GetFlag("port-forward-namespace",""),"Namespace name which should be used for port forwarding")
command.PersistentFlags().IntVar(&clientOpts.HttpRetryMax,"http-retry-max",0,"Maximum number of retries to establish http connection to Argo CD server")
command.PersistentFlags().BoolVar(&clientOpts.Core,"core",false,"If set to true then CLI talks directly to Kubernetes instead of talking to Argo CD API server")
command.Flags().StringVar(&opts.env,"env","","Application environment to monitor")
command.Flags().StringVar(&opts.revision,"revision","","The tracking source branch, tag, commit or Helm chart version the application will sync to")
command.Flags().IntVar(&opts.revisionHistoryLimit,"revision-history-limit",argoappv1.RevisionHistoryLimit,"How many items to keep in revision history")
command.Flags().BoolVar(&opts.helmPassCredentials,"helm-pass-credentials",false,"Pass credentials to all domain")
command.Flags().StringArrayVar(&opts.helmSets,"helm-set",[]string{},"Helm set values on the command line (can be repeated to set several values: --helm-set key1=val1 --helm-set key2=val2)")
command.Flags().StringArrayVar(&opts.helmSetStrings,"helm-set-string",[]string{},"Helm set STRING values on the command line (can be repeated to set several values: --helm-set-string key1=val1 --helm-set-string key2=val2)")
command.Flags().StringArrayVar(&opts.helmSetFiles,"helm-set-file",[]string{},"Helm set values from respective files specified via the command line (can be repeated to set several values: --helm-set-file key1=path1 --helm-set-file key2=path2)")
command.Flags().StringVar(&opts.syncPolicy,"sync-policy","","Set the sync policy (one of: none, automated (aliases of automated: auto, automatic))")
command.Flags().StringArrayVar(&opts.syncOptions,"sync-option",[]string{},"Add or remove a sync option, e.g add `Prune=false`. Remove using `!` prefix, e.g. `!Prune=false`")
command.Flags().BoolVar(&opts.autoPrune,"auto-prune",false,"Set automatic pruning when sync is automated")
command.Flags().BoolVar(&opts.selfHeal,"self-heal",false,"Set self healing when sync is automated")
command.Flags().BoolVar(&opts.allowEmpty,"allow-empty",false,"Set allow zero live resources when sync is automated")
command.Flags().BoolVar(&opts.Validate,"validate",true,"Validation of repo and cluster")
command.Flags().StringArrayVar(&opts.kustomizeCommonLabels,"kustomize-common-label",[]string{},"Set common labels in Kustomize")
command.Flags().StringArrayVar(&opts.kustomizeCommonAnnotations,"kustomize-common-annotation",[]string{},"Set common labels in Kustomize")
command.Flags().BoolVar(&opts.kustomizeForceCommonLabels,"kustomize-force-common-label",false,"Force common labels in Kustomize")
command.Flags().BoolVar(&opts.kustomizeForceCommonAnnotations,"kustomize-force-common-annotation",false,"Force common annotations in Kustomize")
command.Flags().StringVar(&opts.directoryExclude,"directory-exclude","","Set glob expression used to exclude files from application source path")
command.Flags().StringVar(&opts.directoryInclude,"directory-include","","Set glob expression used to include files from application source path")
command.Flags().Int64Var(&opts.retryLimit,"sync-retry-limit",0,"Max number of allowed sync retries")
command.Flags().DurationVar(&opts.retryBackoffDuration,"sync-retry-backoff-duration",argoappv1.DefaultSyncRetryDuration,"Sync retry backoff base duration. Input needs to be a duration (e.g. 2m, 1h)")
command.Flags().DurationVar(&opts.retryBackoffMaxDuration,"sync-retry-backoff-max-duration",argoappv1.DefaultSyncRetryMaxDuration,"Max sync retry backoff duration. Input needs to be a duration (e.g. 2m, 1h)")
command.Flags().Int64Var(&opts.retryBackoffFactor,"sync-retry-backoff-factor",argoappv1.DefaultSyncRetryFactor,"Factor multiplies the base duration after each failed sync retry")
command.Flags().BoolVar(&opts.InCluster,"in-cluster",false,"Indicates Argo CD resides inside this cluster and should connect using the internal k8s hostname (kubernetes.default.svc)")
command.Flags().StringVar(&opts.AwsClusterName,"aws-cluster-name","","AWS Cluster name if set then aws cli eks token command will be used to access cluster")
command.Flags().StringVar(&opts.AwsRoleArn,"aws-role-arn","","Optional AWS role arn. If set then AWS IAM Authenticator assumes a role to perform cluster operations instead of the default AWS credential provider chain.")
command.Flags().StringArrayVar(&opts.Namespaces,"namespace",nil,"List of namespaces which are allowed to manage")
command.Flags().BoolVar(&opts.ClusterResources,"cluster-resources",false,"Indicates if cluster level resources should be managed. The setting is used only if list of managed namespaces is not empty.")
command.Flags().StringVar(&opts.Name,"name","","Overwrite the cluster name")
command.Flags().StringVar(&opts.Project,"project","","project of the cluster")
command.Flags().Int64Var(&opts.Shard,"shard",-1,"Cluster shard number; inferred from hostname if not set")
command.Flags().StringVar(&opts.ExecProviderCommand,"exec-command","","Command to run to provide client credentials to the cluster. You may need to build a custom ArgoCD image to ensure the command is available at runtime.")
command.Flags().StringArrayVar(&opts.ExecProviderArgs,"exec-command-args",nil,"Arguments to supply to the --exec-command executable")
command.Flags().StringToStringVar(&opts.ExecProviderEnv,"exec-command-env",nil,"Environment vars to set when running the --exec-command executable")
command.Flags().StringVar(&opts.ExecProviderAPIVersion,"exec-command-api-version","","Preferred input version of the ExecInfo for the --exec-command executable")
command.Flags().StringVar(&opts.ExecProviderInstallHint,"exec-command-install-hint","","Text shown to the user when the --exec-command executable doesn't seem to be present")
command.Flags().BoolVar(&opts.orphanedResourcesWarn,"orphaned-resources-warn",false,"Specifies if applications should have a warning condition when orphaned resources detected")
command.Flags().StringArrayVar(&opts.allowedClusterResources,"allow-cluster-resource",[]string{},"List of allowed cluster level resources")
command.Flags().StringArrayVar(&opts.deniedClusterResources,"deny-cluster-resource",[]string{},"List of denied cluster level resources")
command.Flags().StringArrayVar(&opts.allowedNamespacedResources,"allow-namespaced-resource",[]string{},"List of allowed namespaced resources")
command.Flags().StringArrayVar(&opts.deniedNamespacedResources,"deny-namespaced-resource",[]string{},"List of denied namespaced resources")
command.Flags().StringVar(&opts.Repo.Type,"type",common.DefaultRepoType,"type of the repository, \"git\" or \"helm\"")
command.Flags().StringVar(&opts.Repo.Name,"name","","name of the repository, mandatory for repositories of type helm")
command.Flags().StringVar(&opts.Repo.Project,"project","","project of the repository")
command.Flags().StringVar(&opts.Repo.Username,"username","","username to the repository")
command.Flags().StringVar(&opts.Repo.Password,"password","","password to the repository")
command.Flags().StringVar(&opts.SshPrivateKeyPath,"ssh-private-key-path","","path to the private ssh key (e.g. ~/.ssh/id_rsa)")
command.Flags().StringVar(&opts.TlsClientCertPath,"tls-client-cert-path","","path to the TLS client cert (must be PEM format)")
command.Flags().StringVar(&opts.TlsClientCertKeyPath,"tls-client-cert-key-path","","path to the TLS client cert's key path (must be PEM format)")
command.Flags().BoolVar(&opts.InsecureIgnoreHostKey,"insecure-ignore-host-key",false,"disables SSH strict host key checking (deprecated, use --insecure-skip-server-verification instead)")
command.Flags().BoolVar(&opts.InsecureSkipServerVerification,"insecure-skip-server-verification",false,"disables server certificate and host key checks")
command.Flags().BoolVar(&opts.EnableLfs,"enable-lfs",false,"enable git-lfs (Large File Support) on this repository")
command.Flags().Int64Var(&opts.GithubAppId,"github-app-id",0,"id of the GitHub Application")
command.Flags().Int64Var(&opts.GithubAppInstallationId,"github-app-installation-id",0,"installation id of the GitHub Application")
command.Flags().StringVar(&opts.GithubAppPrivateKeyPath,"github-app-private-key-path","","private key of the GitHub Application")
command.Flags().StringVar(&opts.GitHubAppEnterpriseBaseURL,"github-app-enterprise-base-url","","base url to use when using GitHub Enterprise (e.g. https://ghe.example.com/api/v3")
command.Flags().StringVar(&opts.Proxy,"proxy","","use proxy to access repository")
Some files were not shown because too many files have changed in this diff
Show More
Reference in New Issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.