Compare commits

...

10 Commits

Author SHA1 Message Date
Alexander Matyushentsev
2d029488ab Update manifests to v1.4.0 2020-01-17 21:32:51 -08:00
Alexander Matyushentsev
3771486c14 feat: upgrade dex to v2.21.0 (#2985) 2020-01-15 14:07:44 -08:00
Alexander Matyushentsev
97922f0439 fix: sync apps panel fails with 'No App Selected' message if name contains '.' (#2983) 2020-01-15 14:07:39 -08:00
Alexander Matyushentsev
141ef96a44 docs: add notifications.md with recommandation about notifications (#2979)
* docs: add demo argocd/grafana links

* docs: add notifications.md with recommandation about notifications
2020-01-15 14:07:34 -08:00
Paul Brit
92824215f8 docs: Fix a broken link to Helm Hooks (#2970) 2020-01-15 14:07:30 -08:00
Alexander Matyushentsev
f74640d95c fix: fix nil pointer dereference in CreateRepositoryCredentials method (#2975) 2020-01-15 14:07:27 -08:00
Alexander Matyushentsev
5c0ebb59d2 fix: remove 'total' suffix from gauge prom metric (#2976) 2020-01-15 14:07:23 -08:00
Alexander Matyushentsev
6d65d01757 fix: fix rendering CRD acronym (#2978) 2020-01-15 14:07:20 -08:00
Alexander Matyushentsev
36bbc29891 docs: v1.3 and v1.4 changelog (#2952) 2020-01-15 14:07:17 -08:00
Alexander Matyushentsev
5af52f6698 Update manifests to v1.4.0-rc1 2020-01-13 09:03:55 -08:00
21 changed files with 320 additions and 389 deletions

View File

@@ -1,14 +1,159 @@
# Changelog
## v1.3.0-rc2 (2019-10-23)
## v1.4.0 (Not Released)
- Issue #2339 - Controller should compare with latest git revision if app has changed (#2543)
- Unknown child app should not affect app health (#2544)
- Redact secrets in dex logs (#2538)
- Allows Helm parameters that contains arrays or maps. (#2525)
- Set cookie policy to SameSite=lax and httpOnly (#2498)
The v1.4.0 is a stability release that brings multiple bug fixes, security, performance enhancements, and multiple usability improvements.
## v1.3.0-rc1 (2019-10-16)
#### New Features
#### Security
A number of security enhancements and features have been implemented (thanks to [@jannfis](https://github.com/jannfis) for driving it! ):
* **Repository Credential Templates Management UI/CLI**. Now you can use Argo CD CLI or UI to configure
[credentials template](https://argoproj.github.io/argo-cd/user-guide/private-repositories/#credential-templates) for multiple repositories!
* **X-Frame-Options header on serving static assets**. The X-Frame-Options prevents third party sites to trick users into interacting with the application.
* **Tighten AppProject RBAC enforcement**. We've improved the enforcement of access rules specified in the
[application project](https://argoproj.github.io/argo-cd/operator-manual/declarative-setup/#projects) configuration.
#### Namespace Isolation
With the namespace isolation feature, you are no longer have to give full read-only cluster access to the Argo CD. Instead, you can give access only to selected namespaces with-in
the cluster:
```bash
argocd cluster add <mycluster> --namespace <mynamespace1> --namespace <mynamespace2>
```
This feature is useful if you don't have full cluster access but still want to use Argo CD to manage some cluster namespaces. The feature also improves performance if Argo CD is
used to manage a few namespaces of a large cluster.
#### Reconciliation Performance
The Argo CD no longer fork/exec `kubectl` to apply resource changes in the target cluster or convert resource manifest to the required manifest version. This reduces
CPU and Memory usage of large Argo CD instances.
#### Resources Health based Hook Status
The existing Argo CD [resource hooks](https://argoproj.github.io/argo-cd/user-guide/resource_hooks/) feature allows running custom logic during the syncing process. You can mark
any Kubernetes resource as a hook and Argo CD assess hook status if resource is a `Pod`, `Job` or `Argo Workflow`. In the v1.4.0 release Argo CD is going to leverage resource
[health assessment](https://argoproj.github.io/argo-cd/operator-manual/health/) to get sync hook status. This allows using any custom CRD as a sync hook and leverage custom health
check logic.
#### Manifest Generation
* **Track Helm Charts By Semantic Version**. You've been able to track charts hosted in Git repositories using branches to tags. This is now possible for Helm charts. You no longer
need to choose the exact version, such as v1.4.0 ,instead you can use a semantic version constraint such as v1.4.* and the latest version that matches will be installed.
* **Build Environment Variables**. Feature allows config management tool to get access to app details during manifest generation via
[environment variables](https://argoproj.github.io/argo-cd/user-guide/build-environment/).
* **Git submodules**. Argo CD is going to automatically fetch sub-modules if your repository has `.gitmodules` directory.
#### UI and CLI
* **Improved Resource Tree View**. The Application details page got even prettier. The resource view was tuned to fit more resources into the screen, include more information about
each resource and don't lose usability at the same time.
* **New Account Management CLI Command**. The CLI allows to check which actions are allowed for your account: `argocd account can-i sync applications '*'`
#### Maintenance Tools
The team put more effort into building tools that help to maintain Argo CD itself:
* **Bulk Project Editing**. The `argocd-util` allows to add and remove permissions defined in multiple project roles using one command.
* **More Prometheus Metrics**. A set of additional metrics that contains useful information managed clusters is exposed by application controller.
More documentation and tools are coming in patch releases.
#### Breaking Changes
The Argo CD deletes all **in-flight** hooks if you terminate running sync operation. The hook state assessment change implemented in this release the Argo CD enables detection of
an in-flight state for all Kubernetes resources including `Deployment`, `PVC`, `StatefulSet`, `ReplicaSet` etc. So if you terminate the sync operation that has, for example,
`StatefulSet` hook that is `Progressing` it will be deleted. The long-running jobs are not supposed to be used as a sync hook and you should consider using
[Sync Waves](https://argoproj.github.io/argo-cd/user-guide/sync-waves/) instead.
#### Enhancements
* 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)
* feat: Add support for ssh-with-port repo url (#2866) (#2948)
* feat: Add Time to ApplicationCondition. (#2417)
* feat: Adds `argocd auth can-i` command. Close #2255
* feat: Adds revision history limit. Closes #2790 (#2818)
* feat: Adds support for ARGO_CD_[TARGET_REVISION|REVISION] and pass to Custom Tool/Helm/Jsonnet
* feat: Adds support for Helm charts to be a semver range. Closes #2552 (#2606)
* feat: Adds tracing to key external invocations. (#2811)
* feat: argocd-util should allow editing project policies in bulk (#2615)
* feat: Displays controllerrevsion's revision in the UI. Closes #2306 (#2702)
* feat: Issue #2559 - Add gauge Prometheus metric which represents the number of pending manifest requests. (#2658)
* feat: Make ConvertToVersion maybe 1090% faster on average (#2820)
* feat: namespace isolation (#2839)
* feat: removes redundant mutex usage in controller cache and adds cluster cache metrics (#2898)
* feat: Set X-Frame-Options on serving static assets (#2706) (#2711)
* feat: Simplify using Argo CD without users/SSO/UI (#2688)
* feat: Template Out Data Source in Grafana Dashboard (#2859)
* feat: Updates UI icons. Closes #2625 and #2757 (#2653)
* feat: use editor arguments in InteractiveEditor (#2833)
* feat: Use kubectl apply library instead of forking binary (#2861)
* feat: use resource health for hook status evaluation (#2938)
#### Bug Fixes
- fix: Adds support for /api/v1/account* via HTTP. Fixes #2664 (#2701)
- fix: Allow '@'-character in SSH usernames when connecting a repository (#2612)
- fix: Allow dot in project policy. Closes #2724 (#2755)
- fix: Allow you to sync local Helm apps. Fixes #2741 (#2747)
- fix: Allows Helm parameters that contains arrays or maps. (#2525)
- fix: application-controller doesn't deal with rm/add same cluster gracefully (x509 unknown) (#2389)
- fix: diff local ignore kustomize build options (#2942)
- fix: Ensures that Helm charts are correctly resolved before sync. Fixes #2758 (#2760)
- fix: Fix 'Open application' link when using basehref (#2729)
- fix: fix a bug with cluster add when token secret is not first in list. (#2744)
- fix: fix bug where manifests are not cached. Fixes #2770 (#2771)
- fix: Fixes bug whereby retry does not work for CLI. Fixes #2767 (#2768)
- fix: git contention leads applications into Unknown state (#2877)
- fix: Issue #1944 - Gracefully handle missing cached app state (#2464)
- fix: Issue #2668 - Delete a specified context (#2669)
- fix: Issue #2683 - Make sure app update don't fail due to concurrent modification (#2852)
- fix: Issue #2721 Optimize helm repo querying (#2816)
- fix: Issue #2853 - Improve application env variables/labels editing (#2856)
- fix: Issue 2848 - Application Deployment history panel shows incorrect info for recent releases (#2849)
- fix: Make BeforeHookCreation the default. Fixes #2754 (#2759)
- fix: No error on `argocd app create` in CLI if `--revision` is omitted #2665
- fix: Only delete resources during app delete cascade if permitted to (fixes #2693) (#2695)
- fix: prevent user from seeing/deleting resources not permitted in project (#2908) (#2910)
- fix: self-heal should retry syncing an application after specified delay
- fix: stop logging dex config secrets #(2904) (#2937)
- fix: stop using jsondiffpatch on clientside to render resource difference (#2869)
- fix: Target Revision truncated #2736
- fix: UI should re-trigger SSO login if SSO JWT token expires (#2891)
- fix: update argocd-util import was not working properly (#2939)
#### Contributors
* [@abhishekjiitr](https://github.com/abhishekjiitr)
* [@adamjohnson01](https://github.com/adamjohnson01)
* [@alexec](https://github.com/alexec)
* [@alexmt](https://github.com/alexmt)
* [@binoue](https://github.com/binoue)
* [@cabrinha](https://github.com/cabrinha)
* [@cbanek](https://github.com/cbanek)
* [@dgoodwin](https://github.com/dgoodwin)
* [@jannfis](https://github.com/jannfis)
* [@jessesuen](https://github.com/jessesuen)
* [@masa213f](https://github.com/masa213f)
* [@whs](https://github.com/whs)
## v1.3.4 (2019-12-05)
- #2819 Fixes logging of tracing option in CLI
## v1.3.3 (2019-12-05)
- #2721 High CPU utilisation (5 cores) and spammy logs
## v1.3.2 (2019-12-03)
- #2797 Fix directory traversal edge case and enhance tests
## v1.3.1 (2019-12-02)
- #2664 update account password from API resulted 404
- #2724 Can't use `DNS-1123` compliant app name when creating project role
- #2726 App list does not show chart for Helm app
- #2741 argocd local sync cannot parse kubernetes version
- #2754 BeforeHookCreation should be the default hook
- #2767 Fix bug whereby retry does not work for CLI
- #2770 Always cache miss for manifests
- #1345 argocd-application-controller: can not retrieve list of objects using index : Index with name namespace does not exist
## v1.3.0 (2019-11-13)
#### New Features
@@ -22,7 +167,9 @@ 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 enable 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 namepspace that is not mananged by Argo CD.
https://youtu.be/9ZoTevVQf5I
##### Sync Windows
@@ -30,137 +177,106 @@ There may be instances when you want to control the times during which an Argo C
#### Enhancements
* Issue #2396 argocd list command should have filter options like by pr… (#2421)
* Adds support for Helm 1st-class. Closes #1145 (#1865)
* Issue #1167 - Implement orphan resources support (#2103)
* Helm hooks. Closes #355 (#2069)
* Adds support for a literal YAML block of Helm values. Closes #1930 (#2057)
* Adds support for hook-delete-policy: BeforeHookCreation. Closes #2036 (#2048)
* Adds support for setting Helm string parameters via CLI. Closes #2078 (#2109)
* [UI] Add application labels to Applications list and Applications details page (#1099)
* Helm repository as first class Argo CD Application source (#1145)
* Ability to generate a warn/alert when a namespace deviates from the expected state (#1167)
* Improve diff support for resource requests/limits (#1615)
* HTTP API should allow JWT to be passed via Authorization header (#1642)
* Ability to create & upsert projects from spec (#1852)
* Support for in-line block from helm chart values (#1930)
* Request OIDC groups claim if groups scope is not supported (#1956)
* Add a maintenance window for Applications with automated syncing (#1995)
* Support `argocd.argoproj.io/hook-delete-policy: BeforeHookCreation` (#2036)
* Support setting Helm string parameters using CLI/UI (#2078)
* Config management plugin environment variable UI/CLI support (#2203)
* Helm: auto-detect URLs (#2260)
* Helm: UI improvements (#2261)
* Support `helm template --kube-version ` (#2275)
* Use community icons for resources (#2277)
* Make `group` optional for `ignoreDifferences` config (#2298)
* Update Helm docs (#2315)
* Add cluster information into Splunk (#2354)
* argocd list command should have filter options like by project (#2396)
* Add target/current revision to status badge (#2445)
* Update tooling to use Kustomize v3 (#2487)
* Update root `Dockerfile` to use the `hack/install.sh` (#2488)
* Support and document using HPA for repo-server (#2559)
* Upgrade Helm (#2587)
* UI fixes for "Sync Apps" panel. (#2604)
* Upgrade kustomize from v3.1.0 to v3.2.1 (#2609)
* Map helm lifecycle hooks to ArgoCD pre/post/sync hooks (#355)
* [UI] Enhance app creation page with Helm parameters overrides (#1059)
#### Bug Fixes
- Issue #2484 - Impossible to edit chart name using App details page (#2485)
- Issue #2185 - Manual sync don't trigger hooks (#2477)
- Issue #2453 - Application controller sometimes accidentally removes duplicated/excluded resource warning condition (#2454)
- Issue #1944 - Gracefully handle missing cached app state (#2464)
- Issue #2321 - Hook deletion should not fail if error message is not found (#2458)
- Issue #2448 - Custom resource actions cannot be executed from the UI (#2449)
- Issue #2339 - Make sure controller uses latest git version if app reconciliation result expired (#2346)
- Issue #2290 - Fix nil pointer dereference in application controller (#2291)
- Issue #2245 - Intermittent "git ls-remote" request failures should not fail app reconciliation (#2281)
- Issue #2022 - Support limiting number of concurrent kubectl fork/execs (#2264)
- Fix degraded proxy support for http(s) git repository (#2243) (#2249)
- Issue #2198 - Print empty string instead of Unknown in 'argocd app sync' output (#2223)
- Fix for displaying hooks in app diff view. Fixes #2215 (#2218)
- Issue #2212 - Correctly handle trailing slash in configured URL while creating redirect URL (#2214)
- Deals with race condition when deleting resource. Closes #2141 (#2200)
- Issue #2192 - SyncError app condition disappears during app reconciliation (#2193)
- Adds test for updating immutable field, adds UI button to allow force from UI. See #2150 (#2155)
- Issue #2174 - Fix git repo url parsing on application list view (#2175)
- Issue #2146 - Fix nil pointer dereference error during app reconciliation (#2170)
- Issue #2114 - Fix history api fallback implementation to support app names with dots (#2168)
- Issue #2060 - Endpoint incorrectly considered top level managed resource (#2129)
- Fixed truncation of group in UI. Closes #2006 (#2128)
- Allow adding certs for hostnames ending on a dot (fixes #2116) (#2120)
- Escape square brackets in pattern matching hostnames (fixes #2099) (#2113)
#### Other
- Fix possible path traversal attack when supporting Helm `values.yaml` (#2452)
- Fix UI crash on application list page (#2490)
- add support for --additional-headers cli flag (#2467)
- Allow collapse/expand helm values text (#2469)
- Update base image to Debian buster (#2431)
- Error with new `actions run` suggestion (#2434)
- Detach ArgoCD from specific workflow API (#2428)
- Add application labels to Applications list and Applications details page (#2430)
- Fix JS error on application creation page if no plugins configured (#2432)
- Add missing externalURL for networking.k8s.io Ingress type (#2390)
- App status panel shows metadata of current revision in git instead of most recent reconciled revision (#2419)
- Adds support for plugin params. (#2406)
- Granular RBAC Support for actions (#2110)
- Added Kustomize, Helm, and Kubectl to `argocd version` (#2329)
- Stop unnecessary re-loading clusters on every app list page re-render (#2411)
- Add project level maintenance windows for applications (#2380)
- Make argo-cd docker images openshift friendly (#2362)
- Add dest-server and dest-namespace field to reconciliation logs (#2388)
- Add custom action example to argocd-cm.yaml (#2375)
- Try out community icons. (#2349)
- Make `group` optional for `ignoreDifferences` setting (#2335)
- Adds support for Github Enterprise URLs (#2344)
- Add argocd project as variable to grafana dashboard (#2336)
- Fix missing envs when updating application of content management plugin type (#2331)
- util/localconfig: prefer HOME env var over os/user (#2326)
- Auto-detect Helm repos + support Helm basic auth + fix bugs (#2309)
- Add cache-control HTTP header to badge response (#2328)
- Document flags/env variables useful for performance tuning (#2312)
- Re-enable caching when listing apps. (#2295)
- Fixes bug in `argocd repo list` and tidy up UI (#2307)
- Add restart action to Deployment/StatefulSet/DaemonSet (#2300)
- Clean-up the kube-version from Helm so that we can support GKE. (#2304)
- Fixes issue diffing secrets (#2271)
- Add --self-heal flag to argocd cli (#2296)
- Support --kube-version. (#2276)
- Fix building error when following CONTRIBUTING.md (#2278)
- Adding information to make local execution more accessible (#2279)
- API clients may use the HTTP Authorization header for auth. (#2262)
- Fix TestAutoSyncSelfHealEnabled test flakiness (#2282)
- Change Helm repo URLs to argoproj/argo-cd/master (#2266)
- Fix/grafana datasources (#2229)
- If there is only one wave and no pre/post hooks, we should be synced.… (#2217)
- Create projects from manifests (#2202)
- Fix JS crash in EditablePanel component (#2222)
- Use same /24 network for testing immutable field update (#2213)
- Add path to externalURLs (#2208)
- support OIDC claims request (#1957)
- Better detection for authorization_code OIDC response type (#2164)
- Allow list actions to return yaml or json (#1805)
- Adds a floating action button with help and chat links to every page.… (#2125)
- Temporary disable Git LFS test to unblock release (#2172)
- Determine the manifest version from the VERSION file when on release branch (#2166)
- Enhances cookie warning with actual length to help users fix their co… (#2134)
- Fixed routing issue for periods (#2162)
- Added more health filters in UI (#2160)
- Added 'SyncFail' to possible HookTypes in UI (#2153)
- Indicate that `SyncFail` hooks are on v1.2+ (#2149)
- Adds checks around valid paths for apps (#2133)
- Minor CLI bug fixes (#2132)
- Adds support for a literal YAML block of Helm values. Closes #1930 (#2057)
- Fixed truncation of group in UI. Closes #2006 (#2128)
- Redact secrets using "+" rather than "*" as this is base 64 compatiba… (#2119)
#### Contributors
* Aalok Ahluwalia <!-- num=1 -->
* Adam Johnson <!-- num=4 -->
* Alex Collins <!-- num=62 -->
* Alexander Matyushentsev <!-- num=58 -->
* Andrew Waters <!-- num=2 -->
* Ben Doyle <!-- num=1 -->
* Chris Jones <!-- num=1 -->
* Fred Dubois <!-- num=1 -->
* Gregor Krmelj <!-- num=2 -->
* Gustav Paul <!-- num=2 -->
* Isaac Gaskin <!-- num=1 -->
* Jesse Suen <!-- num=1 -->
* John Reese <!-- num=1 -->
* Mitz Amano <!-- num=1 -->
* Olivier Boukili <!-- num=1 -->
* Olivier Lemasle <!-- num=1 -->
* Rayyis <!-- num=1 -->
* Rodolphe Prin <!-- num=1 -->
* Ryota <!-- num=2 -->
* Seiya Muramatsu <!-- num=1 -->
* Simon Behar <!-- num=11 -->
* Sverre Boschman <!-- num=1 -->
* Tom Wieczorek <!-- num=3 -->
* Yujun Zhang <!-- num=4 -->
* Zoltán Reegn <!-- num=1 -->
* agabet <!-- num=1 -->
* dthomson25 <!-- num=2 -->
* jannfis <!-- num=8 -->
* ssbtn <!-- num=2 -->
- failed parsing on parameters with comma (#1660)
- Statefuleset 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)
- Multiple parallel app syncs causes OOM (#2022)
- Unknown error when setting params with argocd app set on helm app (#2046)
- Endpoint is no longer shown as a child of services (#2060)
- SSH known hosts entry cannot be deleted if contains shell pattern in name (#2099)
- Application 404s on names with periods (#2114)
- Adding certs for hostnames ending with a dot (.) is not possible (#2116)
- Fix `TestHookDeleteBeforeCreation` (#2141)
- v1.2.0-rc1 nil pointer dereference when syncing (#2146)
- Replacing services failure (#2150)
- 1.2.0-rc1 - Authentication Required error in Repo Server (#2152)
- v1.2.0-rc1 Applications List View doesn't work (#2174)
- Manual sync does not trigger Presync hooks (#2185)
- SyncError app condition disappears during app reconciliation (#2192)
- argocd app wait\sync prints 'Unknown' for resources without health (#2198)
- 1.2.0-rc2 Warning during secret diffing (#2206)
- SSO redirect url is incorrect if configured Argo CD URL has trailing slash (#2212)
- Application summary diff page shows hooks (#2215)
- An app with a single resource and Sync hook remains progressing (#2216)
- CONTRIBUTING documentation outdated (#2231)
- v1.2.0-rc2 does not retrieve http(s) based git repository behind the proxy (#2243)
- Intermittent "git ls-remote" request failures should not fail app reconciliation (#2245)
- Result of ListApps operation for Git repo is cached incorrectly (#2263)
- ListApps does not utilize cache (#2287)
- Controller panics due to nil pointer error (#2290)
- The Helm --kube-version support does not work on GKE: (#2303)
- Fixes bug that prevents you creating repos via UI/CLI. (#2308)
- The 'helm.repositories' settings is dropped without migration path (#2316)
- Badge response does not contain cache control header (#2317)
- Inconsistent sync result from UI and CLI (#2321)
- Failed edit application with plugin type requiring environment (#2330)
- AutoSync doesn't work anymore (#2339)
- End-to-End tests not working with Kubernetes v1.16 (#2371)
- 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)
- 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)
- Application controller sometimes accidentally removes duplicated/excluded resource warning condition (#2453)
- Logic that checks sync windows state in the cli is incorrect (#2455)
- UI don't allow to create window with `* * * * *` schedule (#2475)
- Helm Hook is executed twice if annotated with both pre-install and pre-upgrade annotations (#2480)
- Impossible to edit chart name using App details page (#2484)
- ArgoCD does not provide CSRF protection (#2496)
- ArgoCD failing to install CRDs in master from Helm Charts (#2497)
- Timestamp in Helm package file name causes error in Application with Helm source (#2549)
- Attempting to create a repo with password but not username panics (#2567)
- UI incorrectly mark resources as `Required Pruning` (#2577)
- argocd app diff prints only first difference (#2616)
- Bump min client cache version (#2619)
- Cluster list page fails if any cluster is not reachable (#2620)
- Repository type should be mandatory for repo add command in CLI (#2622)
- Repo server executes unnecessary ls-remotes (#2626)
- Application list page incorrectly filter apps by label selector (#2633)
- Custom actions are disabled in Argo CD UI (#2635)
- Failure of `argocd version` in the self-building container image (#2645)
- Application list page is not updated automatically anymore (#2655)
- Login regression issues (#2659)
- Regression: Cannot return Kustomize version for 3.1.0 (#2662)
- API server does not allow creating role with action `action/*` (#2670)
- Application controller `kubectl-parallelism-limit` flag is broken (#2673)
- Annoying toolbar flickering (#2691)
## v1.2.4 (2019-10-23)

View File

@@ -1,6 +1,6 @@
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.14.0 serve /dex.yaml"
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.21.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}"
ui: sh -c 'cd ui && ${ARGOCD_E2E_YARN_CMD:-yarn} start'

View File

@@ -72,6 +72,7 @@ Organizations below are **officially** using Argo CD. Please send a PR with your
## Documentation
To learn more about Argo CD [go to the complete documentation](https://argoproj.github.io/argo-cd/).
Check live demo at https://cd.apps.argoproj.io/.
## Community Blogs and Presentations

View File

@@ -100,7 +100,7 @@ func NewMetricsServer(addr string, appLister applister.ApplicationLister, health
}, []string{"command"})
registry.MustRegister(kubectlExecCounter)
kubectlExecPendingGauge := prometheus.NewGaugeVec(prometheus.GaugeOpts{
Name: "argocd_kubectl_exec_pending_total",
Name: "argocd_kubectl_exec_pending",
Help: "Number of pending kubectl executions",
}, []string{"command"})
registry.MustRegister(kubectlExecPendingGauge)

View File

@@ -65,6 +65,7 @@ spec:
## Dashboards
You can find an example Grafana dashboard [here](https://github.com/argoproj/argo-cd/blob/master/examples/dashboard.json)
You can find an example Grafana dashboard [here](https://github.com/argoproj/argo-cd/blob/master/examples/dashboard.json) or check demo instance
[dashboard](https://grafana.apps.argoproj.io).
![dashboard](../assets/dashboard.jpg)

View File

@@ -0,0 +1,14 @@
# Notifications
The notifications support is not bundled into the Argo CD itself. Instead of reinventing the wheel and implementing opinionated notifications system Argo CD leverages integrations
with the third-party notification system. Following integrations are recommended:
* To monitor Argo CD performance or health state of managed applications use [Prometheus Metrics](./metrics.md) in combination with [Grafana](https://grafana.com/),
[Alertmanager](https://prometheus.io/docs/alerting/alertmanager/).
* To notify the end-users of Argo CD about events like application upgrades, user errors in application definition, etc use one of the following projects:
* [ArgoCD Notifications](https://github.com/argoproj-labs/argocd-notifications) - Argo CD specific notification system that continuously monitors Argo CD applications
and aims to integrate with various notification services such as Slack, SMTP, Telegram, Discord, etc.
* [Argo Kube Notifier](https://github.com/argoproj-labs/argo-kube-notifier) - generic Kubernetes resource controller that allows monitoring any Kubernetes resource and sends a
notification when the configured rule is met.
* [Kube Watch](https://github.com/bitnami-labs/kubewatch) - a Kubernetes watcher that could publishes notification to Slack/hipchat/mattermost/flock channels. It watches the
cluster for resource changes and notifies them through webhooks.

View File

@@ -86,7 +86,7 @@ Unsupported hooks are ignored. In Argo CD, hooks are created by using `kubectl a
* Annotate `pre-install` and `post-install` with `hook-weight: "-1"`. This will make sure it runs to success before any upgrade hooks.
* Annotate `pre-upgrade` and `post-upgrade` with `hook-delete-policy: before-hook-creation` to make sure it runs on every sync.
Read more about [Argo hooks](resource_hooks.md) and [Helm hooks](https://github.com/kubernetes/helm/blob/master/docs/charts_hooks.md).
Read more about [Argo hooks](resource_hooks.md) and [Helm hooks](https://github.com/helm/helm/blob/dev-v2/docs/charts_hooks.md).
## Random Data
@@ -118,7 +118,7 @@ argocd app set redis -p password=abc123
> v1.4
Helm apps have access to the [standard build environment](build-environment.md) via substitution as parameters.
Helm apps have access to the [standard build environment](build-environment.md) via substitution as parameters.
E.g. via the CLI:

View File

@@ -26,7 +26,7 @@ spec:
name: static-files
containers:
- name: dex
image: quay.io/dexidp/dex:v2.14.0
image: quay.io/dexidp/dex:v2.21.0
imagePullPolicy: Always
command: [/shared/argocd-util, rundex]
ports:

View File

@@ -12,4 +12,4 @@ bases:
images:
- name: argoproj/argocd
newName: argoproj/argocd
newTag: latest
newTag: v1.4.0

View File

@@ -18,4 +18,4 @@ bases:
images:
- name: argoproj/argocd
newName: argoproj/argocd
newTag: latest
newTag: v1.4.0

View File

@@ -2428,7 +2428,7 @@ spec:
- argocd-redis-ha-announce-2:26379
- --sentinelmaster
- argocd
image: argoproj/argocd:latest
image: argoproj/argocd:v1.4.0
imagePullPolicy: Always
livenessProbe:
httpGet:
@@ -2468,7 +2468,7 @@ spec:
- command:
- /shared/argocd-util
- rundex
image: quay.io/dexidp/dex:v2.14.0
image: quay.io/dexidp/dex:v2.21.0
imagePullPolicy: Always
name: dex
ports:
@@ -2482,7 +2482,7 @@ spec:
- cp
- /usr/local/bin/argocd-util
- /shared
image: argoproj/argocd:latest
image: argoproj/argocd:v1.4.0
imagePullPolicy: Always
name: copyutil
volumeMounts:
@@ -2538,7 +2538,7 @@ spec:
- argocd-redis-ha-announce-2:26379
- --sentinelmaster
- argocd
image: argoproj/argocd:latest
image: argoproj/argocd:v1.4.0
imagePullPolicy: Always
livenessProbe:
initialDelaySeconds: 5
@@ -2612,7 +2612,7 @@ spec:
- argocd-redis-ha-announce-2:26379
- --sentinelmaster
- argocd
image: argoproj/argocd:latest
image: argoproj/argocd:v1.4.0
imagePullPolicy: Always
livenessProbe:
httpGet:

View File

@@ -2343,7 +2343,7 @@ spec:
- argocd-redis-ha-announce-2:26379
- --sentinelmaster
- argocd
image: argoproj/argocd:latest
image: argoproj/argocd:v1.4.0
imagePullPolicy: Always
livenessProbe:
httpGet:
@@ -2383,7 +2383,7 @@ spec:
- command:
- /shared/argocd-util
- rundex
image: quay.io/dexidp/dex:v2.14.0
image: quay.io/dexidp/dex:v2.21.0
imagePullPolicy: Always
name: dex
ports:
@@ -2397,7 +2397,7 @@ spec:
- cp
- /usr/local/bin/argocd-util
- /shared
image: argoproj/argocd:latest
image: argoproj/argocd:v1.4.0
imagePullPolicy: Always
name: copyutil
volumeMounts:
@@ -2453,7 +2453,7 @@ spec:
- argocd-redis-ha-announce-2:26379
- --sentinelmaster
- argocd
image: argoproj/argocd:latest
image: argoproj/argocd:v1.4.0
imagePullPolicy: Always
livenessProbe:
initialDelaySeconds: 5
@@ -2527,7 +2527,7 @@ spec:
- argocd-redis-ha-announce-2:26379
- --sentinelmaster
- argocd
image: argoproj/argocd:latest
image: argoproj/argocd:v1.4.0
imagePullPolicy: Always
livenessProbe:
httpGet:

View File

@@ -2192,7 +2192,7 @@ spec:
- "20"
- --operation-processors
- "10"
image: argoproj/argocd:latest
image: argoproj/argocd:v1.4.0
imagePullPolicy: Always
livenessProbe:
httpGet:
@@ -2232,7 +2232,7 @@ spec:
- command:
- /shared/argocd-util
- rundex
image: quay.io/dexidp/dex:v2.14.0
image: quay.io/dexidp/dex:v2.21.0
imagePullPolicy: Always
name: dex
ports:
@@ -2246,7 +2246,7 @@ spec:
- cp
- /usr/local/bin/argocd-util
- /shared
image: argoproj/argocd:latest
image: argoproj/argocd:v1.4.0
imagePullPolicy: Always
name: copyutil
volumeMounts:
@@ -2310,7 +2310,7 @@ spec:
- argocd-repo-server
- --redis
- argocd-redis:6379
image: argoproj/argocd:latest
image: argoproj/argocd:v1.4.0
imagePullPolicy: Always
livenessProbe:
initialDelaySeconds: 5
@@ -2361,7 +2361,7 @@ spec:
- argocd-server
- --staticassets
- /shared/app
image: argoproj/argocd:latest
image: argoproj/argocd:v1.4.0
imagePullPolicy: Always
livenessProbe:
httpGet:

View File

@@ -2107,7 +2107,7 @@ spec:
- "20"
- --operation-processors
- "10"
image: argoproj/argocd:latest
image: argoproj/argocd:v1.4.0
imagePullPolicy: Always
livenessProbe:
httpGet:
@@ -2147,7 +2147,7 @@ spec:
- command:
- /shared/argocd-util
- rundex
image: quay.io/dexidp/dex:v2.14.0
image: quay.io/dexidp/dex:v2.21.0
imagePullPolicy: Always
name: dex
ports:
@@ -2161,7 +2161,7 @@ spec:
- cp
- /usr/local/bin/argocd-util
- /shared
image: argoproj/argocd:latest
image: argoproj/argocd:v1.4.0
imagePullPolicy: Always
name: copyutil
volumeMounts:
@@ -2225,7 +2225,7 @@ spec:
- argocd-repo-server
- --redis
- argocd-redis:6379
image: argoproj/argocd:latest
image: argoproj/argocd:v1.4.0
imagePullPolicy: Always
livenessProbe:
initialDelaySeconds: 5
@@ -2276,7 +2276,7 @@ spec:
- argocd-server
- --staticassets
- /shared/app
image: argoproj/argocd:latest
image: argoproj/argocd:v1.4.0
imagePullPolicy: Always
livenessProbe:
httpGet:

View File

@@ -42,6 +42,7 @@ nav:
- operator-manual/health.md
- operator-manual/custom_tools.md
- operator-manual/metrics.md
- operator-manual/notifications.md
- User Guide:
- user-guide/index.md
- user-guide/application_sources.md

View File

@@ -75,7 +75,7 @@ func (s *Server) CreateRepositoryCredentials(ctx context.Context, q *repocredspk
return nil, status.Errorf(codes.InvalidArgument, "must specify URL")
}
creds, err := s.db.CreateRepositoryCredentials(ctx, r)
_, err := s.db.CreateRepositoryCredentials(ctx, r)
if status.Convert(err).Code() == codes.AlreadyExists {
// act idempotent if existing spec matches new spec
existing, getErr := s.db.GetRepositoryCredentials(ctx, r.URL)
@@ -84,14 +84,14 @@ func (s *Server) CreateRepositoryCredentials(ctx context.Context, q *repocredspk
}
if reflect.DeepEqual(existing, r) {
creds, err = existing, nil
err = nil
} else if q.Upsert {
return s.UpdateRepositoryCredentials(ctx, &repocredspkg.RepoCredsUpdateRequest{Creds: r})
} else {
return nil, status.Errorf(codes.InvalidArgument, "existing repository credentials spec is different; use upsert flag to force update")
}
}
return &appsv1.RepoCreds{URL: creds.URL}, err
return &appsv1.RepoCreds{URL: r.URL}, err
}
// UpdateRepositoryCredentials updates a repository credential set

View File

@@ -181,7 +181,7 @@ export class App extends React.Component<{}, {popupProps: PopupProps; error: Err
<DataLoader load={() => versionInfo}>
{msg => (
<Tooltip content={msg.Version}>
<span>{msg.Version}</span>
<span style={{whiteSpace: 'nowrap'}}>{msg.Version}</span>
</Tooltip>
)}
</DataLoader>

View File

@@ -1,158 +0,0 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP
exports[`Application 1`] = `
<i
className="icon argo-icon-application"
title="Application"
/>
`;
exports[`ConfigMap 1`] = `
<img
alt="ConfigMap"
src="assets/images/resources/cm.svg"
style={
Object {
"height": "32px",
"padding": "2px",
"width": "40px",
}
}
/>
`;
exports[`FourWords 1`] = `
<div
style={
Object {
"display": "inline-block",
"height": "32px",
"padding": "2px 4px",
"width": "40px",
}
}
>
<i
className="icon fa fa-circle"
title="FourWordsFooBar"
/>
<div
style={
Object {
"color": "white",
"fontSize": "0.6em",
"left": "10px",
"margin": "auto",
"position": "absolute",
"textAlign": "center",
"top": "14px",
"width": "40px",
}
}
>
FWFB
</div>
</div>
`;
exports[`OneWord 1`] = `
<div
style={
Object {
"display": "inline-block",
"height": "32px",
"padding": "2px 4px",
"width": "40px",
}
}
>
<i
className="icon fa fa-circle"
title="OneWord"
/>
<div
style={
Object {
"color": "white",
"fontSize": "1em",
"left": "10px",
"margin": "auto",
"position": "absolute",
"textAlign": "center",
"top": "10px",
"width": "40px",
}
}
>
OW
</div>
</div>
`;
exports[`ThreeWords 1`] = `
<div
style={
Object {
"display": "inline-block",
"height": "32px",
"padding": "2px 4px",
"width": "40px",
}
}
>
<i
className="icon fa fa-circle"
title="ThreeWordsFoo"
/>
<div
style={
Object {
"color": "white",
"fontSize": "0.6em",
"left": "10px",
"margin": "auto",
"position": "absolute",
"textAlign": "center",
"top": "14px",
"width": "40px",
}
}
>
TWF
</div>
</div>
`;
exports[`TwoWords 1`] = `
<div
style={
Object {
"display": "inline-block",
"height": "32px",
"padding": "2px 4px",
"width": "40px",
}
}
>
<i
className="icon fa fa-circle"
title="TwoWords"
/>
<div
style={
Object {
"color": "white",
"fontSize": "1em",
"left": "10px",
"margin": "auto",
"position": "absolute",
"textAlign": "center",
"top": "10px",
"width": "40px",
}
}
>
TW
</div>
</div>
`;

View File

@@ -15,7 +15,7 @@ interface Progress {
export const ApplicationsSyncPanel = ({show, apps, hide}: {show: boolean; apps: models.Application[]; hide: () => void}) => {
const [form, setForm] = React.useState<FormApi>(null);
const [progress, setProgress] = React.useState<Progress>(null);
const getSelectedApps = (params: any) => apps.filter(app => params['app/' + app.metadata.name]);
const getSelectedApps = (params: any) => apps.filter((_, i) => params['app/' + i]);
return (
<Consumer>
{ctx => (
@@ -83,20 +83,17 @@ export const ApplicationsSyncPanel = ({show, apps, hide}: {show: boolean; apps:
</label>
</div>
<label>
Apps (<a onClick={() => apps.forEach(app => formApi.setValue('app/' + app.metadata.name, true))}>all</a>/
<a
onClick={() =>
apps.forEach(app => formApi.setValue('app/' + app.metadata.name, app.status.sync.status === models.SyncStatuses.OutOfSync))
}>
Apps (<a onClick={() => apps.forEach((_, i) => formApi.setValue('app/' + i, true))}>all</a>/
<a onClick={() => apps.forEach((app, i) => formApi.setValue('app/' + i, app.status.sync.status === models.SyncStatuses.OutOfSync))}>
out of sync
</a>
/<a onClick={() => apps.forEach(app => formApi.setValue('app/' + app.metadata.name, false))}>none</a>
/<a onClick={() => apps.forEach((_, i) => formApi.setValue('app/' + i, false))}>none</a>
):
</label>
<div style={{paddingLeft: '1em'}}>
{apps.map(app => (
{apps.map((app, i) => (
<label key={app.metadata.name}>
<Checkbox field={`app/${app.metadata.name}`} />
<Checkbox field={`app/${i}`} />
&nbsp;
{app.metadata.name}
&nbsp;

View File

@@ -1,39 +0,0 @@
import * as React from 'react';
import * as renderer from 'react-test-renderer';
import {ResourceIcon} from './resource-icon';
test('ConfigMap', () => {
const tree = renderer.create(<ResourceIcon kind='ConfigMap' />).toJSON();
expect(tree).toMatchSnapshot();
});
test('Application', () => {
const tree = renderer.create(<ResourceIcon kind='Application' />).toJSON();
expect(tree).toMatchSnapshot();
});
test('OneWord', () => {
const tree = renderer.create(<ResourceIcon kind='OneWord' />).toJSON();
expect(tree).toMatchSnapshot();
});
test('TwoWords', () => {
const tree = renderer.create(<ResourceIcon kind='TwoWords' />).toJSON();
expect(tree).toMatchSnapshot();
});
test('ThreeWords', () => {
const tree = renderer.create(<ResourceIcon kind='ThreeWordsFoo'/>).toJSON();
expect(tree).toMatchSnapshot();
});
test('FourWords', () => {
const tree = renderer.create(<ResourceIcon kind='FourWordsFooBar'/>).toJSON();
expect(tree).toMatchSnapshot();
});

View File

@@ -11,22 +11,20 @@ export const ResourceIcon = ({kind}: {kind: string}) => {
}
const initials = kind.replace(/[a-z]/g, '');
const n = initials.length;
const style: React.CSSProperties = {
display: 'inline-block',
verticalAlign: 'middle',
padding: '2px 4px',
width: '32px',
height: '32px',
borderRadius: '50%',
backgroundColor: '#8FA4B1',
textAlign: 'center',
lineHeight: '30px'
};
return (
<div style={{display: 'inline-block', padding: '2px 4px', width: '40px', height: '32px'}}>
<i title={kind} className='icon fa fa-circle' />
<div
style={{
position: 'absolute',
left: '10px',
top: `${n <= 2 ? 10 : 14}px`,
width: '40px',
margin: 'auto',
color: 'white',
textAlign: 'center',
fontSize: `${n <= 2 ? 1 : 0.6}em`
}}>
{initials}
</div>
<div style={style}>
<span style={{color: 'white', fontSize: `${n <= 2 ? 1 : 0.6}em`}}>{initials}</span>
</div>
);
};