Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

init community collaboration and development docs #2

Closed
wants to merge 2 commits into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
26 changes: 26 additions & 0 deletions CLA.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
# KubeSphere Contributor License Agreement

This KubeSphere Contributor License Agreement (CLA) applies to any contribution you make to any KubeSphere open source projects. If you are representing your employing organization to sign this agreement, please warrant that you have the authority to grant the agreement.

## Definitions

- "we", "our" and "us" means KubeSphere.
- "You" and "your" means you or the organization you are on behalf of.
- "Contribution" shall mean any original work of authorship, including any modifications or additions to an existing work, that is intentionally submitted by you or the organization you represent to KubeSphere for inclusion in, or documentation of, any of the products owned or managed by KubeSphere.

## Grant of Copyright License

All rights of your Contribution submitted to KubeSphere in any manner are granted to KubeSphere and recipients of software distributed by KubeSphere. You waive any rights that my affect our ownership of the copyright and grant to us a perpetual, worldwide, transferable, non-exclusive, no-charge, royalty-free, irrevocable, and sublicensable license to use, reproduce, prepare derivative works of, publicly display, publicly perform, sublicense, and distribute Contributions and any derivative works.

## Grant of Patent License

With respect to any patents you own or that you can license without payment to any third party, you grant to us and to any recipient of software distributed by us, a perpetual, worldwide, transferable, non-exclusive, no-charge, royalty-free, irrevocable patent license to make, have make, use, sell, offer to sell, import, and otherwise transfer the Contribution in whole or in part, alone or included in any product under any patent you own, or license from a third party, that is necessarily infringed by the Contribution or by combination of the Contribution with any Work.

## Your Representations and Warranties

You represent and warrant that:

- You represent that each of Your Contributions is Your original
creation that you can legally grant the rights set out in this agreement.
- the Contribution you submit and licenses you granted does not and will not, infringe the rights of any third party.
- you are not aware of any pending or threatened claims, suits, actions, or charges pertaining to the contributions. You also warrant to notify KubeSphere immediately if you become aware of any such actual or potential claims, suits, actions, allegations or charges.
19 changes: 17 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,2 +1,17 @@
# community
KubeSphere Community
# KubeSphere Community

Welcome to the KubeSphere community!

If you are looking for information on how to join us, you are in the right place. Read on to find out how you can get involved, contribute to KubeSphere code and documentation, propose new features, and stay in touch with the latest KubeSphere community news. Let's get started!

## Contribution rules

Before you start contributing, read our [Code of Conduct](code-of-conduct.md) and learn about our community working model to understand the way KubeSphere community works. Get familiar with the contributing rules, recommended [Git workflow](./developer-guide/guides/Development-workflow), and issues workflow we use in KubeSphere so you can apply them later in practice as an active contributor.

## Special Interest Group

Through SIGs, the KubeSphere community members collaborate and contribute to topics of long-term interest for KubeSphere and its community. Generally, SIGs can be either vertically focused on particular components and features, and can span multiple functional and technical domains. There are some SIGs in KubeSphere community, see [KubeSphere Special Interest Group](sigs.md) for details.

## Working Group

Working Group (WG) facilitate discussions and work on short-lived, concrete topics that either result from the work of SIG groups or which the community members initiate directly. Each SIG can propose a new WG based on the detailed requirements and issues.
39 changes: 39 additions & 0 deletions SIGs.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
# KubeSphere Special Interest Groups

Most community activity is organized into Special Interest Group (SIGs).

## Why Special Interest Groups?

KubeSphere SIGs are organizations responsible for the design and implementation of large architectural aspects of the overall KubeSphere project. SIGs operate with a fair amount of autonomy within the broader scope of the project.

Generally, SIGs focus on specific technologies and features. For example, the storage SIG primarily focuses on design, integration and development for the Kubernetes-based storage within KubeSphere.

## Running a SIG

Leads are responsible for running a SIG. Running the group involves a few activities:

- **Meetings**. Prepare the agenda and run the regular SIG meetings. Ensure the meetings are recorded, and properly archived on YouTube.

- **Operation**. Operate the related Slack channel and GitHub issue, make sure the questions and proposals are answered.

- **Notes**. Ensure that meeting notes are kept up to date. Provide a link to the recorded meeting in the notes. The lead may delegate note-taking duties.

- **Roadmap**. Establish and maintain a roadmap for the SIG outlining the areas of focus for the SIG over the next 3 months.

### Be open

The community design process is done in the open. SIGs should communicate primarily through the public tools, through design documents in the SIG’s folder, through GitHub issues, and GitHub PRs. Avoid private emails or messages when possible.

### Making decisions

In general, SIGs operate in a highly cooperative environment. SIGs discuss designs in the open and take input from the community at large when making technical choices. The SIG leads are ultimately responsible for setting the direction of the SIG and making the technical choices affecting the SIG.

## SIGs

The current SIGs are:

| Group | Lead | Name | Design Docs | Slack Channel | To do (GitHub Issues) | Description
|-------|-------------|-------|---------------|--------------|-------------------- | -----
| Observability | <img width="30px" src="https://avatars2.githubusercontent.com/u/18525465?s=96&v=4">| [Benjamin Huo](https://github.com/benjaminhuo) | [Design documentation](./contribution/design/sig-observability) | [#observability](https://kubesphere.slack.com/archives/CLHL8R1C7) | [Tasks & Issues](https://github.com/kubesphere/kubesphere/issues?q=is%3Aopen+is%3Aissue+label%3Aarea%2Fmonitoring+) | Logging, Monitoring, Alerting, Notification |

> Please add your information in the table above.
26 changes: 26 additions & 0 deletions cla.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
# KubeSphere Contributor License Agreement

This KubeSphere Contributor License Agreement (CLA) applies to any contribution you make to any KubeSphere open source projects. If you are representing your employing organization to sign this agreement, please warrant that you have the authority to grant the agreement.

## Definitions

- "we", "our" and "us" means KubeSphere.
- "You" and "your" means you or the organization you are on behalf of.
- "Contribution" shall mean any original work of authorship, including any modifications or additions to an existing work, that is intentionally submitted by you or the organization you represent to KubeSphere for inclusion in, or documentation of, any of the products owned or managed by KubeSphere.

## Grant of Copyright License

All rights of your Contribution submitted to KubeSphere in any manner are granted to KubeSphere and recipients of software distributed by KubeSphere. You waive any rights that my affect our ownership of the copyright and grant to us a perpetual, worldwide, transferable, non-exclusive, no-charge, royalty-free, irrevocable, and sublicensable license to use, reproduce, prepare derivative works of, publicly display, publicly perform, sublicense, and distribute Contributions and any derivative works.

## Grant of Patent License

With respect to any patents you own or that you can license without payment to any third party, you grant to us and to any recipient of software distributed by us, a perpetual, worldwide, transferable, non-exclusive, no-charge, royalty-free, irrevocable patent license to make, have make, use, sell, offer to sell, import, and otherwise transfer the Contribution in whole or in part, alone or included in any product under any patent you own, or license from a third party, that is necessarily infringed by the Contribution or by combination of the Contribution with any Work.

## Your Representations and Warranties

You represent and warrant that:

- You represent that each of Your Contributions is Your original
creation that you can legally grant the rights set out in this agreement.
- the Contribution you submit and licenses you granted does not and will not, infringe the rights of any third party.
- you are not aware of any pending or threatened claims, suits, actions, or charges pertaining to the contributions. You also warrant to notify KubeSphere immediately if you become aware of any such actual or potential claims, suits, actions, allegations or charges.
17 changes: 17 additions & 0 deletions code-of-conduct.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
# KubeSphere Code of Conduct

This document makes a reference to the rules of behavior for all contributors and maintainers in the community. All members agree to follow them to foster the growth of the community of tolerance, respect, and mutual understanding.

In the attempt to adopt the best practices from the most renowned open-source and cloud-native projects, and work closely with the Cloud Native Computing Foundation (CNCF), our community members are following the rules outlined in the [CNCF Code of Conduct](https://github.com/cncf/foundation/blob/master/code-of-conduct.md).

# Best practices of committing code

Besides following above conduct from CNCF, we also hope every contributor in this project could help us to improve the quality of code, something you should know before checking in any new code:
- As gopher, make sure you already read [the conduct of Go language](https://golang.org/conduct) and [the instruction of writting Go](https://golang.org/doc/effective_go.html).
- Fork the project under your account and make the changes you want there.
- Execute 'go fmt' for every piece of new code.
- Every pulling request(PR) would be better constructed with only one commit, this could help code reviewer to go through your code efficiently, also helpful for every follower of this project to understand what happens in this PR. If you need to make any further code change to address the comments from reviewers, which means some new commits will be generated under this PR, you need to use 'git rebase' to combine those commits together.
- Every PR should only solve one problem or provide one feature, don't put several different fixes into one PR.
- At lease two code reviewers should involve into code reviewing process.
- Please introduce new third-party packages as little as possible to reduce the vendor dependency of this project. For example, don't import a full unit converting package but only use one function from it. For this case, you'd better write that function by yourself.
- more.
3 changes: 3 additions & 0 deletions contribution/Design/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
# Design Documentation

This is the design documentation for each SIG.
3 changes: 3 additions & 0 deletions contribution/Design/sig-observability/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
# Design Documentation

This is the design documentation for each SIG.
41 changes: 41 additions & 0 deletions contribution/design-proposal-template.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
# Proposal Template for New Feature

> There are some good examples for new proposals:
> - [Proposal for OpenEBS Volume (jiva) Snapshots using extended kubernetes Snapshot APIs](https://github.com/openebs/openebs/blob/master/contribute/design/openebs-jiva-snapshot-design.md)
>- [Support extended-resource assignment to a Container](https://github.com/kubesphere/kubesphere/issues/1851)

Here is a Proposal Template for New Feature

## Background

<4-8 sentences about why this is needed>

## Proposal

<4-8 description of the proposed solution>

## User Experience

### Use Cases

<enumerated list of use cases for this feature>

<in depth description of user experience>

<*include full examples and references*>

## Implementation

<in depth description of how the feature will be implemented. In some cases this may be very simple.>

### High level overview

<draw a diagram to describe your idea, it could be an architecture diagram>

### API

<enumerated list of APIs and designs for this feature>

## Alternatives considered

<short description of alternative solutions to be considered, you can attach some references to help us understand the Alternatives>
3 changes: 3 additions & 0 deletions contribution/design/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
# Design Documentation

This is the design documentation for each SIG.
3 changes: 3 additions & 0 deletions contribution/design/sig-observability/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
# Design Documentation

This is the design documentation for each SIG.
64 changes: 64 additions & 0 deletions developer-guide/concepts-and-designs/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
# Concepts and Designs

Concepts and Designs help you to learn and understand the KubeSphere and the landscape.

## What is Kubesphere ?

- [Overview and Core concepts](overview.md). Provides a high-level description and introduction, including the problems the project solves.

- Project Goals. Provides the goals, which KubeSphere is trying to focus and provide features about them.

After you read the above documents, you should understand the KubeSphere basic goals. Now, you can choose which following parts you are interested, then dive in.

### KubeSphere Core

### KubeSphere Installer

### KubeSphere UI

TODO: UI opensource is on the way

### KubeSphere Application Management

TODO(@pengcong)

### KubeSphere Service Mesh

TODO(@zryfish)

## Porter

TODO(@magicsong)

### KubeSphere Networking

TODO

### KubeSphere DevOps

Read [DevOps Pipeline Overview](devops-pipeline-overview.md).

### KubeSphere S2I/B2I

Read [S2I/B2I Overview](s2i_b2i_overview.md)

### KubeSphere Monitoring

- [Overview](kubesphere-monitoring.md#Overview): Explains the architecture and key components behind the monitoring system.
- [Setup](kubesphere-monitoring.md#Setup): Introduces manifests related to Prometheus setup.

### KubeSphere Logging

- [Overview](kubesphere-logging.md#Overview): Explains the architecture and key components behind the logging system.
- [Log Collection and Forward](kubesphere-logging.md#Log-Collection-and-Forward): Introduces logging agent and the sidecar-based solution for collecting application logs on disk.
- [Log Store and Management](kubesphere-logging.md#Log-Store-and-Management): Introduces long-term log storage and management.
- [Log Search, Export and Visualization](kubesphere-logging.md#Log-Search,-Export-and-Visualization): Introduces log query and reporting.

### KubeSphere Altering

TODO

### KubeSphere Notification

TODO

34 changes: 34 additions & 0 deletions developer-guide/concepts-and-designs/overview.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
# Overview

KubeSphere is a multi-tenant cluster management platform which is based on Kubernetes. KubeSphere provides easy-to-use UI to reduce your learning cost for employing the container management platform and make it easier to develop, test and maintain your daily work. It's aimed to resolve the problems relating to Kubernetes’ storage, network, security and its usability.

In addition, the platform has integrated and optimized a range of functional modules which are suitable for containers. KubeSphere provides enterprises with a complete solution for development, automation operation and maintenance, microservice governance, multi-tanency management. Besides, our platform is also able to manage workload, container cluster, service and network, application orchestration as well as database mirroring and storage.

<table>
<tr>
<td width="50%" align="center"><b>KubeSphere Dashboard</b></td>
<td width="50%" align="center"><b>Project Resources</b></td>
</tr>
<tr>
<td><img src="https://pek3b.qingstor.com/kubesphere-docs/png/20190925003707.png"/></td>
<td><img src="https://pek3b.qingstor.com/kubesphere-docs/png/20190925003504.png"/></td>
</tr>
<tr>
<td width="50%" align="center"><b>CI/CD Pipeline</b></td>
<td width="50%" align="center"><b>Application Template</b></td>
</tr>
<tr>
<td><img src="https://pek3b.qingstor.com/kubesphere-docs/png/20190925000712.png"/></td>
<td><img src="https://pek3b.qingstor.com/kubesphere-docs/png/20190925231623.png"/></td>
</tr>
</table>



## Architecture



KubeSphere adopts the separation of front and back ends, also realizes a cloud native design, the back ends' service components can communicate with external systems through the REST API, see [API documentation](https://kubesphere.io/docs/v2.0/api/kubesphere) for more details. All component are included in the architecture diagram below. KubeSphere can run anywhere from on-premise datacenter to any cloud to edge. In addition, it can be deployed on any Kubernetes distribution.

![](https://pek3b.qingstor.com/kubesphere-docs/png/20190810073322.png)
Original file line number Diff line number Diff line change
@@ -0,0 +1,73 @@
# KubeSphere DevOps Pipeline Overview

KubeSphere DevOps Pipeline is aimed to meet the complex CI/CD requirements on Kubernetes.

With the KubeSphere DevOps Pipeline, you can quickly construct a complete CI/CD workflow and architecture by manipulating with the KubeSphere console.


## DevOps Pipeline Capabilities

* Build, Deploy, Launch services in Kubernetes
* Use Kubernetes dynamic agent to release the ability of Kubernetes to dynamically expand
* In SCM Pipeline and Out of SCM Pipeline
* Easy-to-use graphical pipeline editing panel
* Multi-tenant isolation


### DevOps Pipeline API

The KubeSphere DevOps Pipeline API will encapsulate the following APIs to provide a standardized REST API:

- Jenkins Core API
- Jenkins BlueOcean API
- Sonarqube API
- Other Plugins API

KubeSphere apiserver will provide multi-tenant API, pipeline API, credential API, code quality analysis API, etc.

![ks-devops-api](../../images/devops-api.png)


### Multi-tenant isolation

In the current version (v2.1.0), multi-tenancy in the DevOps part is done with the ability of the [role-strategy-plugin](https://github.com/jenkinsci/role-strategy-plugin) plugin. KubeSphere will automatically synchronize permission rules in this plugin.

In the future, KubeSphere DevOps will authentication based on [OPA](https://www.openpolicyagent.org/).

### Integration with Jenkins

KubeSphere integrates with standard Jenkins, customizing plugins and configurations.

#### Distribution of plugins

To meet the needs of users in private cloud environments, KubeSphere uses the built-in nginx as a jenkins update center. The jenkins update center is provided as a Docker image + [Helm Chart](https://github.com/kubesphere/ks-installer/tree/master/roles/ks-devops/jenkins-update-center).

#### Jenkins configuration

KubeSphere uses Docker Image, Jenkins update Center and Helm Chart to distribute Jenkins。

The list of plugins and configuration required by Jenkins will be provided by [Helm Chart](https://github.com/kubesphere/ks-installer/tree/master/roles/ks-devops/jenkins).

We use [Groovy Script](https://wiki.jenkins.io/display/JENKINS/Groovy+Hook+Script) and [JCasC](https://github.com/jenkinsci/configuration-as-code-plugin) to initialize Jenkins.


### Pipeline Builder Image And Jenkins PodTemplate

Jenkins does not include any agent configuration by default, KubeSphere provides some default agents (including docker image and podTemplate configuration).

The default agent image will be built based on the [builder base](https://github.com/kubesphere/builder-base), you can search the keyword of repository `builder xxx` in KubeSphere [github](https://github.com/kubesphere/).

### In SCM Pipeline and Out of SCM Pipeline

KubeSphere's pipeline syntax will be fully compatible with Jenkins' pipeline syntax. Jenkinsfile found in SCM will be supported with Jenkins plugin.

We will provide a plug-in SCM API, allowing users to graphically edit Jenkinsfile, Dockerfile and other configurations in SCM on KubeSphere.

### Sonarqube Integration

KubeSphere will retrieve Jenkins pipelines that have performed Sonarqube code analysis. And provide API to access analysis report.


### More

If you have more questions, you can create an issue on [github](https://github.com/kubesphere/kubesphere)
Loading