Skip to content

Commit 451f0a1

Browse files
ryanzhang-ossRyan Zhang
andauthored
docs: add the governance and other improvements (#8)
Signed-off-by: Ryan Zhang <[email protected]> Co-authored-by: Ryan Zhang <[email protected]>
1 parent 25ce9e3 commit 451f0a1

File tree

5 files changed

+184
-89
lines changed

5 files changed

+184
-89
lines changed

GOVERNANCE.md

Lines changed: 161 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,161 @@
1+
# KubeFleet Project Governance
2+
3+
The KubeFleet project is dedicated to solving the challenges stemming from running and managing cloud native applications
4+
on multi-clusters environment which includes multi-cloud and hybrid-cloud.
5+
This governance explains how the project is run.
6+
7+
- [Values](#values)
8+
- [Maintainers](#maintainers)
9+
- [Becoming a Maintainer](#becoming-a-maintainer)
10+
- [Meetings](#meetings)
11+
- [CNCF Resources](#cncf-resources)
12+
- [Code of Conduct Enforcement](#code-of-conduct)
13+
- [Security Response Team](#security-response-team)
14+
- [Voting](#voting)
15+
- [Modifications](#modifying-this-charter)
16+
17+
## Values
18+
19+
The KubeFleet and its leadership embrace the following values:
20+
21+
* Openness: Communication and decision-making happens in the open and is discoverable for future
22+
reference. As much as possible, all discussions and work take place in public
23+
forums and open repositories.
24+
25+
* Fairness: All stakeholders have the opportunity to provide feedback and submit
26+
contributions, which will be considered on their merits.
27+
28+
* Community over Product or Company: Sustaining and growing our community takes
29+
priority over shipping code or sponsors' organizational goals. Each
30+
contributor participates in the project as an individual.
31+
32+
* Inclusivity: We innovate through different perspectives and skill sets, which
33+
can only be accomplished in a welcoming and respectful environment.
34+
35+
* Participation: Responsibilities within the project are earned through
36+
participation, and there is a clear path up the contributor ladder into leadership
37+
positions.
38+
39+
## Maintainers
40+
41+
KubeFleet Maintainers have write access to the [project GitHub repository](https://github.com/kubefleet-dev/kubefleet).
42+
They can merge their own patches or patches from others. The current maintainers
43+
can be found in [MAINTAINERS.md](./MAINTAINERS.md). Maintainers collectively manage the project's
44+
resources and contributors.
45+
46+
This privilege is granted with some expectation of responsibility: maintainers
47+
are people who care about the KubeFleet project and want to help it grow and
48+
improve. A maintainer is not just someone who can make changes, but someone who
49+
has demonstrated their ability to collaborate with the team, get the most
50+
knowledgeable people to review code and docs, contribute high-quality code, and
51+
follow through to fix issues (in code or tests).
52+
53+
A maintainer is a contributor to the project's success and a citizen helping
54+
the project succeed.
55+
56+
The collective team of all Maintainers is known as the Maintainer Council, which
57+
is the governing body for the project.
58+
59+
### Becoming a Maintainer
60+
61+
To become a Maintainer you should be able to demonstrate the following:
62+
* commitment to the project:
63+
* participate in discussions, contributions, code and documentation reviews for 3 months or more,
64+
* perform reviews for 5 non-trivial pull requests,
65+
* contribute 5 non-trivial pull requests and have them merged,
66+
* ability to write quality code and/or documentation,
67+
* ability to collaborate with the team,
68+
* understanding of how the team works (policies, processes for testing and code review, etc),
69+
* understanding of the project's code base and coding and documentation style.
70+
71+
A new Maintainer MUST be proposed by an existing maintainer by sending a message to the
72+
[developer mailing list](https://groups.google.com/g/kubefleet-dev). A simple majority vote of existing Maintainers
73+
approves the application. Maintainers nominations will be evaluated without prejudice
74+
to employer or demographics.
75+
76+
Maintainers who are selected will be granted the necessary GitHub rights,
77+
and invited to the [private maintainer mailing list](https://groups.google.com/g/kubefleet-dev-private).
78+
79+
### Bootstrapping Maintainers
80+
81+
To bootstrap the process, 3 maintainers are defined in the initial PR adding
82+
this to the repository that have been working in this project for the past three years.
83+
84+
85+
### Size of the Maintainers
86+
87+
We will keep the total number of maintainers to be equal or less than seven to make sure that all maintainers are actively contributing to the project's success.
88+
89+
### Removing a Maintainer
90+
91+
Maintainers may resign at any time if they feel that they will not be able to
92+
continue fulfilling their project duties.
93+
94+
Maintainers may also be removed after being inactive, failure to fulfill their
95+
Maintainer responsibilities, violating the Code of Conduct, or other reasons.
96+
Inactivity is defined as a period of very low or no activity in the project
97+
for 6 months or more, with no definite schedule to return to full Maintainer
98+
activity.
99+
100+
A Maintainer may be removed at any time by a 2/3 vote of the remaining maintainers.
101+
102+
Depending on the reason for removal, a Maintainer may be converted to Emeritus
103+
status. Emeritus Maintainers will still be consulted on some project matters,
104+
and can be rapidly returned to Maintainer status if their availability changes.
105+
106+
## Meetings
107+
108+
Time zones permitting, Maintainers are expected to participate in the public
109+
developer meeting, which occurs weekly. The meeting is open to all community.
110+
111+
Maintainers will also have closed meetings in order to discuss security reports
112+
or Code of Conduct violations. Such meetings should be scheduled by any
113+
Maintainer on receipt of a security issue or CoC report. All current Maintainers
114+
must be invited to such closed meetings, except for any Maintainer who is
115+
accused of a CoC violation.
116+
117+
## CNCF Resources
118+
119+
Any Maintainer may suggest a request for CNCF resources, either in the
120+
[mailing list](https://groups.google.com/g/kubefleet-dev), or during a
121+
meeting. A simple majority of Maintainers approves the request. The Maintainers
122+
may also choose to delegate working with the CNCF to non-Maintainer community
123+
members, who will then be added to the [CNCF's Maintainer List](https://github.com/cncf/foundation/blob/main/project-maintainers.csv)
124+
for that purpose.
125+
126+
## Code of Conduct
127+
128+
[Code of Conduct](./CODE_OF_CONDUCT.md)
129+
violations by community members will be discussed and resolved
130+
on the [private Maintainer mailing list](https://groups.google.com/g/kubefleet-dev-private). If a Maintainer is directly involved
131+
in the report, the Maintainers will instead designate two Maintainers to work
132+
with the CNCF Code of Conduct Committee in resolving it.
133+
134+
## Security Response Team
135+
136+
The Maintainers will appoint a Security Response Team to handle security reports.
137+
This committee may simply consist of the Maintainer Council themselves. If this
138+
responsibility is delegated, the Maintainers will appoint a team of at least two
139+
contributors to handle it. The Maintainers will review who is assigned to this
140+
at least once a year.
141+
142+
The Security Response Team is responsible for handling all reports of security
143+
holes and breaches according to the [security policy](SECURITY.md).
144+
145+
## Voting
146+
147+
While most business in KubeFleet is conducted by "[lazy consensus](https://community.apache.org/committers/lazyConsensus.html)",
148+
periodically the Maintainers may need to vote on specific actions or changes.
149+
A vote can be taken on [the developer mailing list](https://groups.google.com/g/kubefleet-dev) or
150+
[the private Maintainer mailing list](https://groups.google.com/g/kubefleet-dev-private) for security or conduct matters.
151+
Votes may also be taken at [the developer meeting](#meetings).. Any Maintainer may
152+
demand a vote be taken.
153+
154+
Most votes require a simple majority of all Maintainers to succeed, except where
155+
otherwise noted. Two-thirds majority votes mean at least two-thirds of all
156+
existing maintainers.
157+
158+
## Modifying this Charter
159+
160+
Changes to this Governance and its supporting documents MUST be approved by
161+
a 2/3 vote of the Maintainers.

MAINTAINERS.md

Lines changed: 5 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,7 @@
11
# The KubeFleet Maintainers
22

3-
| Maintainer | GitHub Username |
4-
|--------------------------|-----------------------------------------------------|
5-
| Ryan Zhang | [@ryanzhang-oss](https://github.com/ryanzhang-oss) |
6-
| Liqian Luo | [@circy9](https://github.com/circy9) |
7-
| Zhiying Lin | [@zhiying-lin](https://github.com/zhiying-lin) |
8-
| Chen Yu | [@michaelawyu](https://github.com/michaelawyu) |
9-
| Arvind Thirumurugan | [@arvindthiru](https://github.com/Arvindthiru) |
10-
| Wantong Jiang | [@jwtty](https://github.com/jwtty) |
11-
| Britania Rodriguez Reyes | [@britaniar](https://github.com/britaniar) |
3+
| Maintainer | Organization | GitHub Username |
4+
|-------------|--------------|-------------------------------------------------------|
5+
| Ryan Zhang | Microsoft | [@ryanzhang-oss](https://github.com/ryanzhang-oss) |
6+
| Zhiying Lin | Microsoft | [@zhiying-lin](https://github.com/zhiying-lin) |
7+
| Chen Yu | Microsoft | [@michaelawyu](https://github.com/michaelawyu) |

README.md

Lines changed: 12 additions & 78 deletions
Original file line numberDiff line numberDiff line change
@@ -4,85 +4,13 @@
44
[![Go Report Card][2]][3]
55
![Build Status][4]
66
![GitHub go.mod Go version][5]
7-
[![codecov][6]][7]
7+
[![Slack](https://img.shields.io/badge/slack-join-brightgreen)](https://slack.cncf.io)
88

9-
KubeFleet is an open source solution that works on any Kubernetes cluster. We are a Cloud Native Computing Foundation sandbox project that is working towards the vision where we will eventually be able to treat each Kubernetes cluster as [cattle](https://cloudscaling.com/blog/cloud-computing/the-history-of-pets-vs-cattle/).
9+
![cncf_logo](screenshots/cncf-logo.png)
1010

11-
* Join/Leave is a feature that allows a member cluster to join and leave a fleet by registering a custom resource on the fleet's control plane (the hub cluster).
12-
* Workload Orchestration is a feature that allows users to create resources on the hub cluster and then selectively propagate these resources to desired member clusters in the fleet.
11+
KubeFleet is a sandbox project of the [Cloud Native Computing Foundation](https://cncf.io/) (CNCF) that works on any Kubernetes cluster.
12+
We are working towards the vision where we will eventually be able to treat each Kubernetes cluster as a [cattle](https://cloudscaling.com/blog/cloud-computing/the-history-of-pets-vs-cattle/).
1313

14-
## Concepts
15-
16-
**Fleet:** A multi cluster solution that users use to manage Kubernetes clusters.
17-
18-
**Hub cluster:** A Kubernetes cluster that hosts the control plane of the fleet.
19-
20-
**Member cluster:** A Kubernetes cluster that is part of the fleet.
21-
22-
**Fleet-system Namespace:** A reserved namespace in all clusters for running Fleet networking controllers and putting internal resources.
23-
24-
## Quick Start
25-
26-
This section provides a tutorial which explains how to setup and make use of the capabilities provided by fleet
27-
28-
### Prerequisites
29-
30-
- [Docker](https://docs.docker.com/get-docker/)
31-
- [Helm](https://github.com/helm/helm#install)
32-
- [Go](https://golang.org/)
33-
- [kubectl](https://kubernetes.io/docs/tasks/tools/install-kubectl/)
34-
- [kind](https://kind.sigs.k8s.io/)
35-
36-
## Steps to run agents on Kind clusters
37-
38-
export this variable which specifies the number of member clusters that will be created.
39-
40-
```shell
41-
export MEMBER_CLUSTER_COUNT=1
42-
```
43-
44-
from the root directory of the repo run the following command, by default a hub cluster gets created which is the control plane for fleet (**The makefile uses kindest/node:v1.31.0**)
45-
46-
```shell
47-
make setup-clusters
48-
```
49-
50-
then switch context to the hub cluster,
51-
52-
```shell
53-
kubectl config use-context kind-hub
54-
```
55-
56-
create a member cluster CR on the hub cluster which allows the member cluster created on the setup step to join the fleet,
57-
58-
```
59-
apiVersion: cluster.kubernetes-fleet.io/v1beta1
60-
kind: MemberCluster
61-
metadata:
62-
name: kind-cluster-1
63-
spec:
64-
identity:
65-
name: fleet-member-agent-cluster-1
66-
kind: ServiceAccount
67-
namespace: fleet-system
68-
apiGroup: ""
69-
```
70-
71-
get the membercluster to see if it has joined the fleet,
72-
73-
```shell
74-
kubectl get memberclusters -A
75-
```
76-
77-
output is supposed to look like,
78-
79-
```shell
80-
NAME JOINED AGE
81-
kind-cluster-1 True 25m
82-
```
83-
84-
Now we can go ahead and use the workload orchestration capabilities offered by fleet, please start with the [concept](https://github.com/Azure/fleet/tree/main/docs/concepts/README.md) to
85-
understand the details of various features offered by fleet.
8614

8715
## Code of Conduct
8816

@@ -95,13 +23,19 @@ The [contribution guide](CONTRIBUTING.md) covers everything you need to know abo
9523
## Support
9624
For more information, see [SUPPORT.md](SUPPORT.md).
9725

26+
## Contact
27+
28+
If you have questions, feel free to reach out to us in the following ways:
29+
30+
- [mailing list](https://groups.google.com/g/kubefleet-dev)
31+
- [slack](https://cloud-native.slack.com/archives/C08KR7589R8) | [Join](https://slack.cncf.io/)
32+
33+
9834
[1]: https://img.shields.io/github/v/release/Azure/fleet
9935
[2]: https://goreportcard.com/badge/go.goms.io/fleet
10036
[3]: https://goreportcard.com/report/go.goms.io/fleet
10137
[4]: https://codecov.io/gh/Azure/fleet/branch/main/graph/badge.svg?token=D3mtbzACjC
10238
[5]: https://img.shields.io/github/go-mod/go-version/Azure/fleet
103-
[6]: https://opensource.microsoft.com/codeofconduct/
104-
[7]: https://opensource.microsoft.com/codeofconduct/faq
10539

10640
Copyright The KubeFleet Authors.
10741
The Linux Foundation® (TLF) has registered trademarks and uses trademarks. For a list of TLF trademarks, see [Trademark Usage](https://www.linuxfoundation.org/trademark-usage/).

ROADMAP.md

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,12 +13,13 @@
1313
## Support scheduling for namespaced resources (heterogeneous namespace)
1414
- Support independent scheduling policy for namespaced resources
1515
- e.g. The application admin can pick one workload in a namespace to cluster A while the other workload in the same namespace to cluster B.
16+
17+
## Support Job dispatching
18+
- Support the use case to use the fleet as a super computer to run hyper scale applications
1619

1720
## Dynamic scheduling
1821
- De-scheduler for the fleet
1922
- The de-scheduler would move the workload to the right cluster if the cluster is not the best fit for the workload anymore.
20-
- Cordon a cluster
21-
- The fleet admin can cordon a cluster to move all the workloads off the cluster.
2223
- Rebalance the workload
2324
- The application admin can rebalance the workload to make sure the workload is spread evenly across the clusters.
2425

@@ -34,3 +35,6 @@
3435
## Support Spread mode for workload
3536
- The application admin can specify a spread mode for their workload.
3637
- The move between clusters would follow the max-unavailable/min-available pods rule.
38+
39+
## Support identity federation
40+
- The member agent can assume the identity of the operator on the hub cluster and not using admin privilege when applying the resources.

screenshots/cncf-logo.png

4.57 KB
Loading

0 commit comments

Comments
 (0)