Declarative Continuous Deployment for Kubernetes
Find a file
Andrew Merenbach 5dbbd0a76f
Support UI cluster creation (#469)
* Add kubeconfig string to ClusterCreateRequest

* Update generated files

* Copy and adapt cluster management logic into db

* Add service account deletion to db

* Return errors from new DB methods

* Adapt InstallClusterManagerRBAC for db

* Update errors in db

* Return error if it occurs from db

* Integrate code to (un)install cluster manager

* Use invalid argument instead of failed precondition

* Set bearer token if error is nil

* Rm cluster RBAC install from CLI

* Rm cluster mgmt install from e2e

* Rm common/install.go

* Move install components into server/cluster, thanks @jessesuen

* Rm unneeded ctx arg

* Restore common/installer.go

* Replace all quoted percent-s with percent-q

* Refactor common/installer.go with error returns

* Return errors rather than exiting fatally

* Return proper number of args

* Slim down cluster methods again

* Simplify, simplify, simplify

* Return gRPC error if RBAC could not be installed

* Issue log entries, not print statements

* Fix log import

* Update generated files

* Refactor

* Major cleanup

* Unmarshal context now

* Put claims check after bearer token insertion

* Initial work to use Kubernetes manifest to create a cluster

* Pass context name now

* Wire up prototype

* Add missing parameter for e2e test

* Just read file directly

* Change how we read cluster server

* Support more attributes from localconfig

* Update generated files

* Support incluster flag

* Comment out unused field for now

* Rm previous NewCluster function

* Unmarshal kube config successfully

* Handle insecure clusters, too

* Use existing logic to get config, thanks @jessesuen

* Revert cluster.go to master version

* Update invocations of RBAC installation

* Fix e2e invocation

* Don't remove management account, thanks @jessesuen

* Fix missing error check in e2e test

* Fix missing clientset arg in e2e fixture

* Create kubeclientset for kubeconfig, thanks @jessesuen
2018-08-06 11:27:48 -07:00
.argo-ci Support helm charts and yaml directories as an application source (#432) 2018-07-24 16:37:12 -07:00
cmd Support UI cluster creation (#469) 2018-08-06 11:27:48 -07:00
common Support UI cluster creation (#469) 2018-08-06 11:27:48 -07:00
controller Expand RBAC role to be able to create application events. Fix username claims extraction. (#479) 2018-07-31 11:15:44 -07:00
docs Update manifests and install instructions for v0.7.1 (#496) 2018-08-03 13:39:00 -07:00
errors Support persistence of repos as secrets 2018-02-21 03:01:43 -08:00
examples/guestbook Add progressing deadline to test app to fix e2e tets slowness 2018-06-12 08:54:47 -07:00
hack Create update-manifests.sh script to support manifest generation for personal images (#477) 2018-07-30 16:13:54 -07:00
manifests Update manifests and install instructions for v0.7.1 (#496) 2018-08-03 13:39:00 -07:00
pkg Issue #476 - AppProjectSpec SourceRepos mislabeled (#490) 2018-08-02 20:59:05 +03:00
reposerver Issue #474 - ListApps API does not scale (#494) 2018-08-03 20:10:38 +03:00
server Support UI cluster creation (#469) 2018-08-06 11:27:48 -07:00
test Support UI cluster creation (#469) 2018-08-06 11:27:48 -07:00
util Support UI cluster creation (#469) 2018-08-06 11:27:48 -07:00
workflows Add workflow for blue-green deployments (#148) 2018-05-03 09:52:46 -07:00
.dockerignore Bump version file to 0.3.0. Add release target and cli-linux/darwin targets 2018-04-23 00:34:08 -07:00
.gitignore Initial project structure 2018-02-14 16:56:17 -08:00
CHANGELOG.md Update manifests and install instructions for v0.7.1 (#496) 2018-08-03 13:39:00 -07:00
CONTRIBUTING.md Create update-manifests.sh script to support manifest generation for personal images (#477) 2018-07-30 16:13:54 -07:00
Dockerfile-argocd Support helm charts and yaml directories as an application source (#432) 2018-07-24 16:37:12 -07:00
Dockerfile-ci-builder Support helm charts and yaml directories as an application source (#432) 2018-07-24 16:37:12 -07:00
gometalinter.json Improve CI build stability 2018-05-07 12:44:14 -07:00
Gopkg.lock Support helm charts and yaml directories as an application source (#432) 2018-07-24 16:37:12 -07:00
Gopkg.toml Support for PreSync, Sync, PostSync resource hooks (#350) 2018-07-07 00:54:06 -07:00
LICENSE Fix LICENSE copyright text 2018-06-21 01:03:50 -07:00
Makefile Create update-manifests.sh script to support manifest generation for personal images (#477) 2018-07-30 16:13:54 -07:00
OWNERS Added OWNERS file 2018-05-02 18:24:50 -07:00
Procfile Switch repo-server to use in-memory cache in lieu of redis. Periodically dump stats (#413) 2018-07-16 10:20:16 -07:00
README.md Create update-manifests.sh script to support manifest generation for personal images (#477) 2018-07-30 16:13:54 -07:00
VERSION Expand RBAC role to be able to create application events. Fix username claims extraction. (#479) 2018-07-31 11:15:44 -07:00
version.go Add ksonnet version to version endpoint (#433) 2018-07-20 09:13:16 -07:00

Argo CD - Declarative Continuous Delivery for Kubernetes

What is Argo CD?

Argo CD is a declarative, GitOps continuous delivery tool for Kubernetes.

Argo CD UI

Why Argo CD?

Application definitions, configurations, and environments should be declarative and version controlled. Application deployment and lifecycle management should be automated, auditable, and easy to understand.

Getting Started

Follow our getting started guide. Further documentation is provided for additional features.

How it works

Argo CD follows the GitOps pattern of using git repositories as the source of truth for defining the desired application state. Kubernetes manifests can be specified in several ways:

  • ksonnet applications
  • helm charts
  • Simple directory of YAML/json manifests

Argo CD automates the deployment of the desired application states in the specified target environments. Application deployments can track updates to branches, tags, or pinned to a specific version of manifests at a git commit. See tracking strategies for additional details about the different tracking strategies available.

Architecture

Argo CD Architecture

Argo CD is implemented as a kubernetes controller which continuously monitors running applications and compares the current, live state against the desired target state (as specified in the git repo). A deployed application whose live state deviates from the target state is considered OutOfSync. Argo CD reports & visualizes the differences, while providing facilities to automatically or manually sync the live state back to the desired target state. Any modifications made to the desired target state in the git repo can be automatically applied and reflected in the specified target environments.

For additional details, see architecture overview.

Features

  • Automated deployment of applications to specified target environments
  • Continuous monitoring of deployed applications
  • Automated or manual syncing of applications to its desired state
  • Web and CLI based visualization of applications and differences between live vs. desired state
  • Rollback/Roll-anywhere to any application state committed in the git repository
  • Health assessment statuses on all components of the application
  • SSO Integration (OIDC, OAuth2, LDAP, SAML 2.0, GitLab, Microsoft, LinkedIn)
  • Webhook Integration (GitHub, BitBucket, GitLab)
  • PreSync, Sync, PostSync hooks to support complex application rollouts (e.g.blue/green & canary upgrades)
  • Audit trails for application events and API calls
  • Parameter overrides for overriding ksonnet/helm parameters in git

Development Status

  • Argo CD is being used in production to deploy SaaS services at Intuit

Roadmap

  • Auto-sync toggle to directly apply git state changes to live state
  • Service account/access key management for CI pipelines
  • Support for additional config management tools (Kustomize?)
  • Revamped UI, and feature parity with CLI
  • Customizable application actions