mirror of https://github.com/cncf/toc.git
				
				
				
			Merge pull request #846 from FillZpp/openkruise-incubation
Proposing OpenKruise to become an Incubation project
This commit is contained in:
		
						commit
						b208da53bc
					
				|  | @ -0,0 +1,93 @@ | ||||||
|  | # OpenKruise proposal for CNCF Incubation | ||||||
|  | 
 | ||||||
|  | ## About OpenKruise | ||||||
|  | 
 | ||||||
|  | [OpenKruise](https://openkruise.io) is an extended component suite for Kubernetes, | ||||||
|  | which mainly focuses on application automations, such as deployment, upgrade, ops and availability protection. | ||||||
|  | Most features provided by OpenKruise are built primarily based on CRD extensions. | ||||||
|  | They can work in pure Kubernetes clusters without any other dependencies. | ||||||
|  | 
 | ||||||
|  | Now OpenKruise provides the following capabilities: | ||||||
|  | 
 | ||||||
|  | - **Advanced workloads**, which support not only the basic features that are similar to the upstream Workloads in Kubernetes, but also more advanced abilities such as in-place update, configurable scale/upgrade strategies, parallel operations. | ||||||
|  | - **Sidecar container management**, which defines, injects and even upgrades sidecar containers with no effect on application containers. | ||||||
|  | - **Multiple domain management**, which empowers workload to support multi-domain and elastic deployment, so that users can define the rules about how their applications should be deployed over different kinds of nodes, e.g., nodes across availability zones. | ||||||
|  | - **Enhanced operations**, such as restarting containers in-place, pre-downloading images on specific nodes, controlling containers starting priority in a Pod and distributing resources over multiple namespaces. | ||||||
|  | - **Application availability protection**, which can prevent unexpected Kubernetes resources deletion during cascading deletion and prevent application from disruption or SLA degradation in voluntary disruption scenarios. | ||||||
|  | 
 | ||||||
|  | OpenKruise was accepted as a CNCF Sandbox project on Nov 10, 2020. | ||||||
|  | 
 | ||||||
|  | * [Project Annual Review](https://github.com/cncf/toc/blob/main/reviews/2021-OpenKruise-annual.md) | ||||||
|  | * [Presentation for TAG-runtime](https://docs.google.com/presentation/d/1bzCNwjRtVJ7YMAYcsVWu_1YLCdvMfYk2uzAlQChdS5w/edit#slide=id.p1) | ||||||
|  | * [Presentation for TAG-app-delivery](https://docs.google.com/presentation/d/16lH6yXEpHcYZiErnXtJG8QR-C_4g07Jz9h_qIByRpGM/edit#slide=id.g127c7cee73c_2_75) | ||||||
|  | 
 | ||||||
|  | ## Continuous Momentum | ||||||
|  | 
 | ||||||
|  | The OpenKruise devstats page and dashboards can be found [here](https://openkruise.devstats.cncf.io/d/8/dashboards?orgId=1&refresh=15m&search=open). | ||||||
|  | 
 | ||||||
|  | * Least Release: v1.2.0 | ||||||
|  | * Num of Contributors: 50+ => *110+* | ||||||
|  | * Github Stars: 1700+ => *3200+* | ||||||
|  | * Github Forks: 220+ => *520+* | ||||||
|  | * Contributing member organizations: 30+ => *50+* | ||||||
|  | * Maintainers (including Approvers & Reviewers): 3 (1 company) => *7* (5 companies) | ||||||
|  | * Docker image Pulls: *10M+* | ||||||
|  | * Member of DingTalk group + Slack channel: 600+ -> *1300+* | ||||||
|  | 
 | ||||||
|  | ## Incubation Stage Requirements | ||||||
|  | 
 | ||||||
|  | **_Document that it is being used successfully in production by at least three independent end users which, in the TOC’s judgement, are of adequate quality and scope._** | ||||||
|  | 
 | ||||||
|  | Now there are at least 40+ adopters that have used OpenKruise in production, full list of registered adopters can be found [here](https://github.com/openkruise/kruise/issues/289). | ||||||
|  | Highlighted examples includes: | ||||||
|  | - [**Alibaba**](https://www.alibaba.com/): Using Kruise for managing all their applications and sidecars in large-scale clusters. | ||||||
|  | - [**LinkedIn**](https://www.linkedin.com/): Using CloneSet for managing large-scale workloads (in-place updates, enhanced PVC support). | ||||||
|  | - [**MeiTuan**](https://about.meituan.com/en): Using CloneSet and AdvanceStatefulSet for managing stateless and stateful apps.  | ||||||
|  | - [**Ctrip**](https://www.ctrip.com/): Using CloneSet and AdvanceStatefulSet for managing stateless and stateful apps. They need inplace and partial updates. | ||||||
|  | - [**Lyft**](https://www.lyft.com/): Using Kruise CloneSets and bin packing for selective downscaling of stateful nodes. | ||||||
|  | 
 | ||||||
|  | **_Have a healthy number of committers. A committer is defined as someone with the commit bit; i.e., someone who can accept contributions to some or all of the project._** | ||||||
|  | 
 | ||||||
|  | OpenKruise currently has [110+ different PR authors](https://openkruise.devstats.cncf.io/d/22/prs-authors-table?orgId=1) and contributions from [50+ different organizations](https://openkruise.devstats.cncf.io/d/5/companies-table?orgId=1), which includes commits from [more than 15 organizations](https://openkruise.devstats.cncf.io/d/5/companies-table?orgId=1&var-period_name=Last%20decade&var-metric=commits). | ||||||
|  | 
 | ||||||
|  | There are [17](https://github.com/orgs/openkruise/people) project members for OpenKruise, out of which seven are project maintainers from five different organizations, | ||||||
|  | and a clear [membership definition](https://github.com/openkruise/community/blob/master/community-membership.md) on how to become a member, approver, and maintainer of the project. | ||||||
|  | The maintainers list can be found [here](https://github.com/openkruise/community/blob/master/MAINTAINERS.md). | ||||||
|  | 
 | ||||||
|  | **_Demonstrate a substantial ongoing flow of commits and merged contributions._** | ||||||
|  | 
 | ||||||
|  | A short summary has been provided in the aforementioned community section. Detailed statistics can be found in the following devstats links: | ||||||
|  | - [Commit Activity](https://openkruise.devstats.cncf.io/d/74/contributions-chart?orgId=1) | ||||||
|  | - [New contributors since sandboxing](https://openkruise.devstats.cncf.io/d/52/new-contributors-table?orgId=1&from=1573369200000&to=now) | ||||||
|  | - [Issues open/closed since sandboxing](https://openkruise.devstats.cncf.io/d/12/issues-opened-closed-by-repository-group?orgId=1&from=1599721200000&to=now) | ||||||
|  | - [PRs open/closed since sandboxing](https://openkruise.devstats.cncf.io/d/12/issues-opened-closed-by-repository-group?orgId=1&from=1599721200000&to=now) | ||||||
|  | - [Contributing organizations](https://openkruise.devstats.cncf.io/d/5/companies-table?orgId=1) | ||||||
|  | 
 | ||||||
|  | **_A clear versioning scheme._** | ||||||
|  | 
 | ||||||
|  | OpenKruise uses the [semantic versioning scheme](https://semver.org/#semantic-versioning-specification-semver). | ||||||
|  | OpenKruise follows a quarterly release cadence with version numbers using format of MAJOR.MINOR.PATCH. The latest release is v1.2.0. | ||||||
|  | 
 | ||||||
|  | We have releases documented at: https://github.com/openkruise/kruise/releases | ||||||
|  | 
 | ||||||
|  | The latest 4 releases are: | ||||||
|  | 
 | ||||||
|  | * [release 1.0.0](https://github.com/openkruise/kruise/releases/tag/v1.0.0) | ||||||
|  | * [release 1.0.1](https://github.com/openkruise/kruise/releases/tag/v1.0.1) | ||||||
|  | * [release 1.1.0](https://github.com/openkruise/kruise/releases/tag/v1.1.0) | ||||||
|  | * [release 1.2.0](https://github.com/openkruise/kruise/releases/tag/v1.2.0) | ||||||
|  | * release 1.3 (WIP) | ||||||
|  | 
 | ||||||
|  | ## Future plan | ||||||
|  | 
 | ||||||
|  | We are running our project in a fairly open model so that we can react to the needs of our community promptly. In addition, we have recently introduced a [roadmap](https://github.com/openkruise/kruise/projects/2) page in github so that the community members can easily track where we are going. There are still quite a few critical and high demanding features that are under development, including but not limited to the following: | ||||||
|  | - A new CRD named PodMarker to mark pods by number, labels, nodes, probes, etc. | ||||||
|  | - Decoupled liveness probe which supports restart containers on failure with limited rate. | ||||||
|  | - Binding nodes for statefulset pods after being recreated. | ||||||
|  | - Enhanced application rollout for traffic shifting and batch upgrades. | ||||||
|  | 
 | ||||||
|  | ## Summary | ||||||
|  | 
 | ||||||
|  | We believe that OpenKruise is ready for Incubation. The project closely aligns with CNCF values on openness and fairness. It has been used in production by at least 40+ organizations and it seems to meet all of the required criteria to move to the next stage. | ||||||
|  | 
 | ||||||
|  | We're really looking forward to getting started with the process and we're keen to move as quickly as possible. We - the maintainers - will gladly make ourselves available to assist with any due diligence research, to make any presentations required and generally to assist in any way we can be helpful. | ||||||
		Loading…
	
		Reference in New Issue