forked from kubesphere/community
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #2 from kubesphere/master
update
- Loading branch information
Showing
16 changed files
with
653 additions
and
284 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,111 +1,16 @@ | ||
# How to build KubeSphere | ||
# Development Guide | ||
|
||
This document walks you through how to get started with building KubeSphere in your local environment. | ||
|
||
## Preparing the environment | ||
## QuickStart | ||
|
||
### Go | ||
See [quickstart](quickstart.md) | ||
|
||
KubeSphere development is based on [Kubernetes](https://github.com/kubernetes/kubernetes). Both of them are written in [Go](http://golang.org/). If you don't have a Go development environment, please [set it up](http://golang.org/doc/code.html) first. | ||
## Development Workflow | ||
|
||
| Kubernetes | requires Go | | ||
|----------------|-------------| | ||
| 1.13+ | >= 1.12 | | ||
See [development-workflow](development-workflow.md) | ||
|
||
> Tips: | ||
> | ||
> - Ensure your GOPATH and PATH have been configured in accordance with the Go | ||
environment instructions. | ||
> - It's recommended to install [macOS GNU tools](https://www.topbug.net/blog/2013/04/14/install-and-use-gnu-command-line-tools-in-mac-os-x) when using MacOS for development. | ||
## Pull Requests | ||
|
||
### Docker | ||
See [pull-requests](pull-requests.md) | ||
|
||
KubeSphere components are often deployed as containers in Kubernetes. If you need to rebuild the KubeSphere components in the Kubernetes cluster, you'll need to [install Docker](https://docs.docker.com/install/) in advance. | ||
|
||
### Dependency Management | ||
|
||
KubeSphere uses [Go Modules](https://github.com/golang/go/wiki/Modules) to manage dependencies in the `vendor/` tree. | ||
|
||
> Note: KubeSphere uses `go module` to manage dependencies, but the development process still relies on `GOPATH` | ||
> In the CRD development process, you need to use tools to automatically generate code. The tools used by KubeSphere still need to rely on `GOPATH`. | ||
> For Chinese contributors who are going to pull the go module, we recommend you to use [goproxy.cn](https://goproxy.cn) as the proxy. | ||
## Building KubeSphere Core on a Local OS/shell Environment | ||
|
||
### For Quick Taste Binary | ||
|
||
When you go get KubeSphere, you can choose the version you want to get: `go get kubesphere.io/kubesphere@version-you-want` | ||
|
||
For modules stored in source control repositories, the version suffix can also be a commit hash, branch identifier, or other syntax known to the source control system, as in 'go get golang.org/x/text@master'. The version suffix @latest explicitly requests the default behavior described above. | ||
|
||
> Note: Before getting KubeSphere, you need to synchronize the contents of the `replace` section of the go.mod file of the KubeSphere you want to version. | ||
```bash | ||
mkdir ks-tmp | ||
cd ks-tmp | ||
echo 'module kubesphere' > go.mod | ||
echo 'replace ( | ||
github.com/Sirupsen/logrus v1.4.1 => github.com/sirupsen/logrus v1.4.1 | ||
github.com/kiali/kiali => github.com/kubesphere/kiali v0.15.1-0.20190407071308-6b5b818211c3 | ||
github.com/kubernetes-sigs/application => github.com/kubesphere/application v0.0.0-20190518133311-b9d9eb0b5cf7 | ||
)' >> go.mod | ||
|
||
GO111MODULE=on go get kubesphere.io/kubesphere@d649e3d0bbc64bfba18816c904819e4850d021e0 | ||
GO111MODULE=on go build -o ks-apiserver kubesphere.io/kubesphere/cmd/ks-apiserver # build ks-apiserver | ||
GO111MODULE=on go build -o ks-apigateway kubesphere.io/kubesphere/cmd/ks-apigateway # build ks-apigateway | ||
GO111MODULE=on go build -o ks-controller-manager kubesphere.io/kubesphere/cmd/controller-manager # build ks-controller-manager | ||
GO111MODULE=on go build -o ks-iam kubesphere.io/kubesphere/cmd/ks-iam # build ks-iam | ||
``` | ||
|
||
### For Building KubeSphere Core Images | ||
|
||
KubeSphere components are often deployed as a container in a Kubernetes cluster, you may need to build a Docker image locally. | ||
|
||
1. Clone repo to local. | ||
|
||
```bash | ||
git clone https://github.com/kubesphere/kubesphere.git | ||
cd kubesphere | ||
``` | ||
|
||
2. Run Docker command to build image. | ||
|
||
```bash | ||
# $REPO is the docker registry to push to | ||
# $Tag is the tag name of the docker image | ||
# The full go build process will be executed in the Dockerfile, so you may need to set GOPROXY in it. | ||
docker build -f build/ks-apigateway/Dockerfile -t $REPO/ks-apigateway:$TAG . | ||
docker build -f build/ks-apiserver/Dockerfile -t $REPO/ks-apiserver:$TAG . | ||
docker build -f build/ks-iam/Dockerfile -t $REPO/ks-account:$TAG . | ||
docker build -f build/ks-controller-manager/Dockerfile -t $REPO/ks-controller-manager:$TAG . | ||
docker build -f ./pkg/db/Dockerfile -t $REPO/ks-devops:flyway-$TAG ./pkg/db/ | ||
``` | ||
|
||
### For KubeSphere Core Local Development Building | ||
|
||
1. Create a `kubesphere` work directory under `GOPATH` and clone the source code. | ||
|
||
```bash | ||
mkdir -p $GOPATH/src/kubesphere.io/ | ||
cd $GOPATH/src/kubesphere.io/ | ||
git clone https://github.com/kubesphere/kubesphere | ||
``` | ||
|
||
2. Use command `make` to build binary | ||
|
||
```bash | ||
make ks-apiserver # Build ks-apiserver binary | ||
make ks-iam # Build ks-iam binary | ||
make controller-manager # Build ks-controller-manager binary | ||
make ks-apigateway # Build ks-apigateway binary | ||
``` | ||
|
||
If you need to build a docker image, you can refer to the previous section. | ||
|
||
### Test | ||
|
||
It‘s recommended to use local Kubernetes clusters, such as [minikube](https://kubernetes.io/docs/tasks/tools/install-minikube/), or to install an single-node [all-in-one](https://github.com/kubesphere/kubesphere#all-in-one) environment (Kubernetes-based) for quick testing. | ||
|
||
> Tip: It also supports to use Docker for Desktop ships with Kubernetes as the test environment. | ||
See [How to run KubeSphere apiserver](how-to-run-kubesphere-core.md) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
112 changes: 0 additions & 112 deletions
112
developer-guide/development/how-to-run-kubesphere-core.md
This file was deleted.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.