mirror of https://github.com/cncf/toc.git
198 lines
8.6 KiB
Plaintext
198 lines
8.6 KiB
Plaintext
=== 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
|
|
https://medium.com/keptn/how-your-delivery-pipeline-will-become-your-next-big-legacy-code-challenge-4e520999693f?source=friends_link&sk=6bf8dcbff647e3912ca381a39035bf7a[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/[https://curl.haxx.se/]
|
|
|gcloud|Apache-2.0|https://github.com/google-cloud-sdk/google-cloud-sdk[https://github.com/google-cloud-sdk/google-cloud-sdk]
|
|
|git|GPLv2|https://git-scm.com/[https://git-scm.com/]
|
|
|helm|Apache-2.0|https://helm.sh/[https://helm.sh/]
|
|
|jq|MIT|https://stedolan.github.io/jq/[https://stedolan.github.io/jq/]
|
|
|kubectl|Apache-2.0|https://github.com/kubernetes/kubernetes[https://github.com/kubernetes/kubernetes]
|
|
|wget|GPLv3|https://github.com/mirror/wget[https://github.com/mirror/wget]
|
|
|yq|MIT|https://mikefarah.github.io/yq/[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[https://github.com/spf13/cobra]
|
|
|cloudevents/sdk-go|Apache-2.0|https://github.com/cloudevents/sdk-go[https://github.com/cloudevents/sdk-go]
|
|
|docker-credential-helpers|MIT|https://github.com/docker/docker-credential-helpers[https://github.com/docker/docker-credential-helpers]
|
|
|go-autorest|Apache-2.0|https://github.com/Azure/go-autorest/autorest[https://github.com/Azure/go-autorest/autorest]
|
|
|go-github|BSD-3-Clause|https://github.com/google/go-github[https://github.com/google/go-github]
|
|
|go-homedir|MIT|https://github.com/mitchellh/go-homedir[https://github.com/mitchellh/go-homedir]
|
|
|go-lang|BSD|https://github.com/golang/go[https://github.com/golang/go]
|
|
|go-version|MPL-2.0|https://github.com/hashicorp/go-version[https://github.com/hashicorp/go-version]
|
|
|k8s.io/api|Apache-2.0|https://github.com/kubernetes/api[https://github.com/kubernetes/api]
|
|
|k8s.io/helm|Apache-2.0|https://github.com/kubernetes/helm[https://github.com/kubernetes/helm]
|
|
|k8s.io/utils|Apache-2.0|https://github.com/kubernetes/utils[https://github.com/kubernetes/utils]
|
|
|uuid|BSD-3-Clause|https://github.com/google/uuid[https://github.com/google/uuid]
|
|
|viper|MIT|https://github.com/spf13/viper[https://github.com/spf13/viper]
|
|
|websocket|BSD-2-Clause|https://github.com/gorilla/websocket[https://github.com/gorilla/websocket]
|
|
|yaml.v2|Apache-2.0|https://github.com/go-yaml/yaml[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[https://github.com/angular/angular]
|
|
|barista-components|Apache-2.0|https://github.com/dynatrace-oss/barista[https://github.com/dynatrace-oss/barista]
|
|
|ngrx|MIT|https://github.com/ngrx[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:*
|
|
|
|
* 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 link:http://semver.org/[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
|