argocd

package module
v0.3.1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Apr 24, 2018 License: Apache-2.0 Imports: 2 Imported by: 239

README

Argo CD - GitOps Continuous Delivery for Kubernetes

What is Argo CD?

Argo CD is a declarative, continuous delivery service based on ksonnet for Kubernetes.

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.

How it works

Argo CD uses git repositories as the source of truth for defining the desired application state as well as the target deployment environments. Kubernetes manifests are specified as ksonnet applications. Argo CD automates the deployment of the desired application states in the specified target environments.

Argo CD Architecture

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.

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 out-of-sync. Argo CD reports & visualizes the differences as well as 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 target state
  • Web and CLI based visualization of applications and differences between live vs. target state
  • Rollback/Roll-anywhere to any application state committed in the git repository

What is ksonnet?

  • Jsonnet, the basis for ksonnet, is a domain specific configuration language, which provides extreme flexibility for composing and manipulating JSON/YAML specifications.
  • Ksonnet goes one step further by applying Jsonnet principles to Kubernetes manifests. It provides an opinionated file & directory structure to organize applications into reusable components, parameters, and environments. Environments can be hierarchical, which promotes both re-use and granular customization of application and environment specifications.

Why ksonnet?

Application configuration management is a hard problem and grows rapidly in complexity as you deploy more applications, against more and more environments. Current templating systems, such as Jinja, and Golang templating, are unnatural ways to maintain kubernetes manifests, and are not well suited to capture subtle configuration differences between environments. Its ability to compose and re-use application and environment configurations is also very limited.

Imagine we have a single guestbook application deployed in following environments:

Environment K8s Version Application Image DB Connection String Environment Vars Sidecars
minikube 1.10.0 jesse/guestbook:latest sql://locahost/db DEBUG=true
dev 1.9.0 app/guestbook:latest sql://dev-test/db DEBUG=true
staging 1.8.0 app/guestbook:e3c0263 sql://staging/db istio,dnsmasq
us-west-1 1.8.0 app/guestbook:abc1234 sql://prod/db FOO_FEATURE=true istio,dnsmasq
us-west-2 1.8.0 app/guestbook:abc1234 sql://prod/db istio,dnsmasq
us-east-1 1.9.0 app/guestbook:abc1234 sql://prod/db BAR_FEATURE=true istio,dnsmasq

Ksonnet:

  • Enables composition and re-use of common YAML specifications
  • Allows overrides, additions, and subtractions of YAML sub-components specific to each environment
  • Guarantees proper generation of K8s manifests suitable for the corresponding Kubernetes API version
  • Provides kubernetes-specific jsonnet libraries to enable concise definition of kubernetes manifests

Development Status

  • Argo CD is in early development

Roadmap

  • PreSync, PostSync, OutOfSync hooks
  • Customized application actions as Argo workflows
  • Blue/Green & canary upgrades
  • SSO Integration
  • GitHub & Docker webhooks

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type Version

type Version struct {
	Version      string
	BuildDate    string
	GitCommit    string
	GitTag       string
	GitTreeState string
	GoVersion    string
	Compiler     string
	Platform     string
}

Version contains Argo version information

func GetVersion

func GetVersion() Version

GetVersion returns the version information

func (Version) String

func (v Version) String() string

Directories

Path Synopsis
cmd
mocks
Code generated by mockery v1.0.0
Code generated by mockery v1.0.0
pkg
apis/application/v1alpha1
Package v1alpha1 is the v1alpha1 version of the API.
Package v1alpha1 is the v1alpha1 version of the API.
client/clientset/versioned
This package has the automatically generated clientset.
This package has the automatically generated clientset.
client/clientset/versioned/fake
This package has the automatically generated fake clientset.
This package has the automatically generated fake clientset.
client/clientset/versioned/scheme
This package contains the scheme of the automatically generated clientset.
This package contains the scheme of the automatically generated clientset.
client/clientset/versioned/typed/application/v1alpha1
This package has the automatically generated typed clients.
This package has the automatically generated typed clients.
client/clientset/versioned/typed/application/v1alpha1/fake
Package fake has the automatically generated clients.
Package fake has the automatically generated clients.
repository
Package repository is a generated protocol buffer package.
Package repository is a generated protocol buffer package.
application
Package application is a generated protocol buffer package.
Package application is a generated protocol buffer package.
cluster
Package cluster is a generated protocol buffer package.
Package cluster is a generated protocol buffer package.
cluster/mocks
Code generated by mockery v1.0.0
Code generated by mockery v1.0.0
repository
Package repository is a generated protocol buffer package.
Package repository is a generated protocol buffer package.
repository/mocks
Code generated by mockery v1.0.0
Code generated by mockery v1.0.0
session
Package session is a generated protocol buffer package.
Package session is a generated protocol buffer package.
session/mocks
Code generated by mockery v1.0.0 Code generated by mockery v1.0.0
Code generated by mockery v1.0.0 Code generated by mockery v1.0.0
version
Package version is a generated protocol buffer package.
Package version is a generated protocol buffer package.
e2e
cli
git
git/mocks
Code generated by mockery v1.0.0
Code generated by mockery v1.0.0
tls

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL