Skip to content

Latest commit

 

History

History
197 lines (146 loc) · 8.62 KB

keptn.adoc

File metadata and controls

197 lines (146 loc) · 8.62 KB

Keptn CNCF Incubator Project Proposal

Name of Project: keptn

Description:

Keptn is a control plane for continuous delivery and operations providing a declarative approach towards day 1 to day n operations of cloud-native applications.

Keptn is built based on the framework used internally at Dynatrace which allows us to run hundreds of production cluster without a dedicated operations team in a fully automated "NoOps" approach.

Keptn solves the problem that traditional release pipelines are stitched together by point-to-point integrations between a number of tools. The average pipeline and operations automation toolchain consists of at least 7+ tools that are integrated. The current approach of building toolchains comes with a number of problems:

  • Integrations are hard to maintain as they are spread across the entire infrastructure

  • Onboarding a new service results in a lot of manual work for pipeline and operations automation definition

  • Most toolchains today make it hard to define enterprise-wide best practices for application delivery that can simply be applied across different applications.

Keptn solves these problems by providing a configurable control plane to define day 1 to day n operations. The design is inspired by SDN stacks:

  • The application stack defines how the delivery and operations process should work using a shipyard file. Shipyard files define stages, release strategies, testing strategies, etc.

  • Keptn then provides a control plane that manages a GitOps repository for the stages defined in the shipyard file as well as managing Kubernetes namespaces and yaml files for services. Additionally, keptn uses a set of well-defined lifecycle events for each potential event that services can subscribe to. All events are defined as cloud events.

  • The integration layer used knative services to connect the Keptn control plane to all required tools to manage application delivery and operations. The configuration which tools to use is defined in a keptn uniform file.

The approach of keptn has a number of advantages over traditional delivery pipelines and operation automation stacks:

  • The behavior of a delivery and automation workflow can be easily changed and is managed in a central place.

  • Using shipyard and uniform files the "how" is decoupled from the "what" which enables greater flexibility in defining operational procedures.

  • The declarative approach allows to even change automation at runtime without any need for manual reconfiguration or touching tool integrations.

In the current version keptn focused on three major use cases for day 1 and day 2 operations:

  • Declarative multistage delivery pipelines with automated quality gates. Uniform files allow creating any multi-stage pipeline including defining the deployment strategy (e.g. direct, blue/green) and definition of testing strategy for propagation.

  • Deployment-based self-healing by automatically rolling back blue/green deployment in case of problems without the need for manual intervention.

  • Event-driven runbook automation for auto-remediation and self-healing at the application level.

You can read more about the high-level goals of keptn in this blog post

Statement on alignment with CNCF mission:

The Keptn project provides an easy and standardized way to deliver and operate cloud-native applications. Kubernetes has massively simplified this process from a platform perspective. Keptn provides the same simplicity at the application level using a declarative approach to delivery and operations.

Keptn also builds on top of exiting CNCF projects:

  • Kubernetes is used as the core runtime and deployment platform

  • Istio and Envoy are used for traffic routing and deployment strategies (blue/green, canary)

  • Prometheus is used as a monitoring source

  • Helm is used for deployment definition

  • CloudEvents are the basis for all application lifecycle-related events

Roadmap:

  • May 2019 - v 0.2.5. Latest version of Keptn providing all core functionality to support key use cases. First version of keptn’s bridge UI.

  • September 2019 - v 0.3.0. Improved version of keptn’s brige UI. Infrastructure fully upgraded to latest version of knative. Removal of Third Party tooling dependency (Jenkins, …​). Keptn operator. Improved uniform support with first version of uniform hub.

  • December 2019 - v 0.4.0. Support for multi-cluster deployment. Improved supporte across multiple Kubernetes distributions.

  • June 2020 - planned v 1.0 release. This is the planned releases date for the first version that has been hardened after multiple production deployments in different settings.

Sponsors from TOC:

No sponsors yet.

Preferred maturity level: Sandbox

License: Apache 2.0

Source control: GitHub https://github.com/keptn

External Dependencies:

Keptn uses several tools in the background (either as helpers for tutorials, or as core components):

Software

License

Project Page

curl

MIT/X

https://curl.haxx.se/

gcloud

Apache-2.0

https://github.com/google-cloud-sdk/google-cloud-sdk

git

GPLv2

https://git-scm.com/

helm

Apache-2.0

https://helm.sh/

jq

MIT

https://stedolan.github.io/jq/

kubectl

Apache-2.0

https://github.com/kubernetes/kubernetes

wget

GPLv3

https://github.com/mirror/wget

yq

MIT

https://mikefarah.github.io/yq/

In addition, Keptn is split into multiple Microservices within the https://github.com/keptn/keptn repository. Each of these microservices can have various dependencies.

Primary external dependencies of Go projects are listed below:

Software

License

Project Page

cobra

MIT

https://github.com/spf13/cobra

cloudevents/sdk-go

Apache-2.0

https://github.com/cloudevents/sdk-go

docker-credential-helpers

MIT

https://github.com/docker/docker-credential-helpers

go-autorest

Apache-2.0

https://github.com/Azure/go-autorest/autorest

go-github

BSD-3-Clause

https://github.com/google/go-github

go-homedir

MIT

https://github.com/mitchellh/go-homedir

go-lang

BSD

https://github.com/golang/go

go-version

MPL-2.0

https://github.com/hashicorp/go-version

k8s.io/api

Apache-2.0

https://github.com/kubernetes/api

k8s.io/helm

Apache-2.0

https://github.com/kubernetes/helm

k8s.io/utils

Apache-2.0

https://github.com/kubernetes/utils

uuid

BSD-3-Clause

https://github.com/google/uuid

viper

MIT

https://github.com/spf13/viper

websocket

BSD-2-Clause

https://github.com/gorilla/websocket

yaml.v2

Apache-2.0

https://github.com/go-yaml/yaml

Furthermore, Keptn’s Bridge is implemented using Angular and TypeScript.

Primary external dependencies of Keptn’s Bridge are listed below:

Software

License

Project Page

angular

MIT

https://github.com/angular/angular

barista-components

Apache-2.0

https://github.com/dynatrace-oss/barista

ngrx

MIT

https://github.com/ngrx

Please see keptn/bridge/package.json[https://github.com/keptn/keptn/blob/0.6.1/bridge/package.json] for full details.

Maintainers:

  • Alois Reitbauer (Dynatrace)

  • Christian Kreuzberger (Dynatrace)

Infrastructure requests (CI / CNCF Cluster): none

Communication Channels:

Release methodology and mechanics:

keptn uses semantic versioning for releases. Releases are announced using GitHub. We aim at releasing updates every sprint (two weeks) while following a quarterly release cycle for major features.

Social media accounts:

Existing sponsorship: Dynatrace

Adopters: * Dynatrace

Community size:

68 stars

7 contributors

15 forks