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 |
|
gcloud |
Apache-2.0 |
https://github.com/google-cloud-sdk/google-cloud-sdk |
git |
GPLv2 |
|
helm |
Apache-2.0 |
|
jq |
MIT |
|
kubectl |
Apache-2.0 |
|
wget |
GPLv3 |
|
yq |
MIT |
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 |
|
cloudevents/sdk-go |
Apache-2.0 |
|
docker-credential-helpers |
MIT |
https://github.com/docker/docker-credential-helpers |
go-autorest |
Apache-2.0 |
|
go-github |
BSD-3-Clause |
|
go-homedir |
MIT |
|
go-lang |
BSD |
|
go-version |
MPL-2.0 |
|
k8s.io/api |
Apache-2.0 |
|
k8s.io/helm |
Apache-2.0 |
|
k8s.io/utils |
Apache-2.0 |
|
uuid |
BSD-3-Clause |
|
viper |
MIT |
|
websocket |
BSD-2-Clause |
|
yaml.v2 |
Apache-2.0 |
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 |
|
barista-components |
Apache-2.0 |
|
ngrx |
MIT |
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:
-
Slack: https://keptn.slack.com/
-
Issue tracker: https://github.com/keptn/keptn/issues
-
Keptn Community: https://github.com/keptn/community
Website: https://keptn.sh/
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:
-
Twitter: https://twitter.com/keptnproject
Existing sponsorship: Dynatrace
Adopters: * Dynatrace
Community size:
68 stars
7 contributors
15 forks