Skip to content

Commit 74123d0

Browse files
committed
Initialization
0 parents  commit 74123d0

File tree

6,543 files changed

+2404302
-0
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

6,543 files changed

+2404302
-0
lines changed

.dockerignore

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
_dev/
2+
_build/
3+
src/frontend/node_modules

.gitignore

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
## Local copies of dependencies that should stay on developers' local machines
2+
node_modules/
3+
bower_components/
4+
*.tmp
5+
## Build and test artifacts
6+
.go_workspace/
7+
.sass-cache/
8+
.tmp/
9+
coverage/
10+
dist/
11+
.tools/
12+
13+
## OS files
14+
# Mac OS
15+
.DS_Store
16+
17+
## Vs Code
18+
.vscode/
19+
20+
## IDE specific files
21+
# IntelliJ
22+
.idea/
23+
*.iml
24+
# Vi temporary files
25+
*.swp
26+
27+
## Project
28+
.env
29+
src/backend/conf/dev.conf
30+
_dev/
31+
_build/
32+
_bus/
33+
src/backend/static
34+
src/backend/routers/commentsRouter__*
35+
src/backend/backend
36+
src/backend/lastupdate.tmp
37+
src/backend/views/index.html
38+
39+
## Doc
40+
src/backend/swagger/swagger.json
41+
src/backend/swagger/swagger.yml
42+
43+
##script
44+
src/frontend/src/app/js-rename.js
45+
/src/backend/openapi.swagger.json

.gitmodules

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
[submodule "src/backend/plugins"]
2+
path = src/backend/plugins
3+
url = [email protected]:Qihoo360/wayne-backend-plugins.git
4+
[submodule "src/frontend/lib"]
5+
path = src/frontend/lib
6+
url = [email protected]:Qihoo360/wayne-frontend-plugins.git

.travis.yml

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
sudo: required
2+
3+
services:
4+
- docker
5+
6+
script:
7+
- make

CHANGELOG.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
2+

Dockerfile

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
# requiring Docker 17.05 or higher on the daemon and client
2+
# see https://docs.docker.com/develop/develop-images/multistage-build/
3+
# BUILD COMMAND :
4+
# docker --build-arg RELEASE_VERSION=v1.0.0 -t infra/wayne:v1.0.0 .
5+
6+
# build ui
7+
FROM 360cloud/wayne-ui-builder:v1.0.0 as frontend
8+
9+
ARG RAVEN_DSN
10+
11+
COPY src/frontend /workspace
12+
13+
RUN sed -i "s~__ravenDsn__~${RAVEN_DSN}~g" /workspace/src/environments/environment.prod.ts
14+
15+
RUN cd /workspace && \
16+
npm config set registry https://registry.npm.taobao.org && \
17+
npm install && \
18+
npm run build
19+
20+
# build server
21+
FROM 360cloud/wayne-server-builder:v1.0.0 as backend
22+
23+
COPY src/vendor /go/src/github.com/Qihoo360/wayne/src/vendor
24+
25+
COPY src/backend /go/src/github.com/Qihoo360/wayne/src/backend
26+
27+
RUN rm -rf /go/src/github.com/Qihoo360/wayne/src/backend/static
28+
29+
COPY --from=frontend /workspace/dist/ /go/src/github.com/Qihoo360/wayne/src/backend/static/
30+
31+
COPY --from=frontend /workspace/dist/index.html /go/src/github.com/Qihoo360/wayne/src/backend/views/
32+
33+
RUN cd /go/src/github.com/Qihoo360/wayne/src/backend && bee generate docs && bee pack -o /_build
34+
35+
# build release image
36+
FROM centos:7
37+
38+
RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
39+
40+
COPY --from=backend /_build/backend.tar.gz /opt/wayne/
41+
42+
WORKDIR /opt/wayne/
43+
44+
RUN tar -xzvf backend.tar.gz
45+
46+
CMD ["./backend"]

Makefile

Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
.PHONY: run-backend run-worker run-frontend syncdb release
2+
3+
MAKEFLAGS += --warn-undefined-variables
4+
5+
# Runtime/Dev variables (used in src/backend/conf/app.conf)
6+
-include .env
7+
export
8+
9+
# Build variables
10+
RELEASE_VERSION :=$(shell git describe --always --tags)
11+
UI_BUILD_VERSION :=v1.0.0
12+
SERVER_BUILD_VERSION :=v1.0.0
13+
14+
15+
release: build-release-image push-image
16+
17+
18+
# 运行相关
19+
run-backend:
20+
cd src/backend/ && bee run -main=./main.go -runargs="apiserver"
21+
22+
run-worker:
23+
cd src/backend/ && bee run -main=./main.go -runargs="worker -t AuditWorker -c 2"
24+
25+
run-frontend:
26+
cd src/frontend/ && npm start
27+
28+
29+
# 开发相关
30+
31+
syncdb:
32+
go run src/backend/database/syncdb.go orm syncdb
33+
34+
swagger-openapi:
35+
cd src/backend && swagger generate spec -o openapi.swagger.json
36+
# 构建相关, 需要Docker版本17.05或者更高
37+
build-release-image:
38+
@echo "version: $(RELEASE_VERSION)"
39+
docker build --no-cache --build-arg RAVEN_DSN=$(RAVEN_DSN) -t 360cloud/wayne:$(RELEASE_VERSION) .
40+
41+
push-image:
42+
docker push 360cloud/wayne:$(RELEASE_VERSION)
43+
44+
45+
## 构建后端代码的编译环境
46+
build-server-image:
47+
cd hack/build/server && docker build --no-cache \
48+
-t 360cloud/wayne-server-builder:$(SERVER_BUILD_VERSION) .
49+
50+
## 构建前端代码的编译环境
51+
build-ui-image:
52+
docker build -f hack/build/ui/Dockerfile -t 360cloud/wayne-ui-builder:$(UI_BUILD_VERSION) .
53+

README.md

Lines changed: 105 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,105 @@
1+
# Wayne
2+
3+
[![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](http://www.apache.org/licenses/LICENSE-2.0)
4+
5+
Wayne 是一个通用的、基于 Web 的 **[Kubernetes](https://kubernetes.io) 多集群管理平台**。通过可视化 Kubernetes 对象模板编辑的方式,降低业务接入成本,
6+
拥有完整的权限管理系统,适应多租户场景,是一款适合企业级集群使用的**发布平台**
7+
8+
Wayne 已大规模服务于 360 搜索,承载了公司绝大部分业务,稳定管理了上万个容器。
9+
10+
> 命名起源:360 搜索私有云团队多数项目命名都来源于 DC 漫画的角色,Wayne 也不例外,[Wayne](https://en.wikipedia.org/wiki/Batman#Bruce_Wayne) 是声名显赫的超级英雄蝙蝠侠 Bruce Wayne 的名字。
11+
12+
![Dashboard UI workloads page](https://raw.githubusercontent.com/wiki/Qihoo360/wayne/image/dashboard-ui.png)
13+
14+
## Features
15+
16+
- 基于 RBAC(Role based access control)的权限管理:用户通过角色与部门和项目关联,拥有部门角色允许操作部门资源,拥有项目角色允许操作项目资源,更加适合多租户场景。
17+
- 简化 Kubernetes 对象创建:提供基础 Kubernetes 对象配置文件添加方式,同时支持高级模式直接编辑 Json/Yaml文件创建 Kubernetes 对象。
18+
- LDAP/OAuth 2.0/DB 多种登录模式支持:集成企业级 LDAP 登录及 DB 登录模式,同时还可以实现 OAuth2 登录。
19+
- 支持多集群、多租户:可以同时管理多个 Kubernetes 集群,并针对性添加特定配置,更方便的多集群、多租户管理。
20+
- 提供完整审计模块:每次操作都会有完整的审计功能,追踪用于操作历史,同时支持用户自定义 webhook。
21+
- 提供基于 APIKey 的开放接口调用:用户可自主申请相关 APIKey 并管理自己的部门和项目,运维人员也可以申请全局 APIKey 进行特定资源的全局管理。
22+
- 保留完整的发布历史:用户可以便捷的找到任何一次历史发布,并可轻松进行回滚,以及基于特定历史版本更新 Kubernetes 资源。
23+
- 具备完善的资源报表:用户可以轻松获取各项目的资源使用占比和历史上线频次(天级)以及其他基础数据的报表和图表。
24+
- 提供基于严密权限校验的 Web shell:用户可以通过 Web shell 的形式进入发布的 Pod 进行操作,自带完整的权限校验。
25+
- 提供站内通知系统:方便管理员推送集群、业务通知和故障处理报告等。
26+
27+
## 架构图
28+
29+
整体采用前后端分离的方案,其中前端采用 Angular 框架进行数据交互和展示,使用Ace编辑器进行 Kubernetes 资源模版编辑。后端采用 Beego 框架做数据接口处理,使用 Client-go 与 Kubernetes 进行交互,数据使用 MySQL 存储。
30+
31+
![Dashboard UI workloads page](https://raw.githubusercontent.com/wiki/Qihoo360/wayne/image/architecture.png)
32+
33+
## 组件
34+
35+
- Web UI: 提供完整的业务开发和平台运维功能体验。
36+
- Worker: 扩展一系列基于消息队列的功能,例如 Audit 和 Webhooks 等审计组件。
37+
38+
## 项目依赖
39+
40+
- Golang 1.9+([installation manual](https://golang.org/dl/))
41+
- Docker 17.05+ ([installation manual](https://docs.docker.com/install))
42+
- Bee ([installation manual](https://github.com/wilhelmguo/bee)) (请务必使用链接版本,不要使用 beego 官方版本,存在一些定制)
43+
- Node.js 8+ and npm 5+ ([installation with nvm](https://github.com/creationix/nvm#usage))
44+
- MySQL 5.6+ (Wayne 主要数据都存在 MySQL 中)
45+
- RabbitMQ (可选,如需扩展审计功能,例如操作审计和 Webhooks 等,则需部署)
46+
47+
## 快速启动
48+
49+
- 创建配置文件
50+
51+
```bash
52+
cd /tmp && touch dev.conf
53+
```
54+
55+
- 启动MySQL(可选)
56+
57+
若您没有可用的MySQL服务,可以通过docker-compose快速创建:
58+
59+
```bash
60+
docker-compose up mysql
61+
```
62+
63+
- 写入数据库相关配置(请修改为数据库实际地址)
64+
65+
```bash
66+
DBName = wayne
67+
# MySQL address,如果MySQL是通过docker-compose启动的,
68+
# Mac OS 下无法直接通过127.0.0.1访问,请修改为实际IP
69+
DBTns = tcp(127.0.0.1:3306)
70+
DBUser = root
71+
DBPasswd = root
72+
```
73+
74+
- 运行启动命令
75+
76+
```bash
77+
$ docker run --rm -e GOPATH=/go -v /tmp/dev.conf:/opt/wayne/conf/dev.conf -p 8080:8080 360cloud/wayne /opt/wayne/backend apiserver
78+
```
79+
80+
通过上述命令,您可以从通过 http://127.0.0.1:8080/admin 访问本地 Wayne, 默认管理员账号admin:admin
81+
82+
> 注意:项目启动后还需要配置集群和Namespace等信息才可正常使用。详见 [集群配置](https://github.com/Qihoo360/wayne/wiki/Wayne-admin-cluster)
83+
84+
85+
## 文档
86+
87+
- 请参照 [Wiki](https://github.com/Qihoo360/wayne/wiki)
88+
89+
## Roadmap
90+
91+
- 国际化
92+
- 支持 Kubernetes 已有项目迁移
93+
- 支持从 Helm 迁移
94+
- 支持一键从 Yaml/Json 导入对象
95+
- 支持 HPA 等其他对象
96+
- 完善运维 Kubernetes 集群功能,提供完整的 Kubectl 功能
97+
- 支持更完整的报表和开放 API 系统
98+
99+
## 贡献者
100+
101+
- 请参照 [贡献者](https://github.com/Qihoo360/wayne/wiki/coder)
102+
103+
## License
104+
105+
[Apache License 2.0](http://www.apache.org/licenses/LICENSE-2.0)

0 commit comments

Comments
 (0)