wayne

module
v1.0.1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Nov 22, 2018 License: Apache-2.0

README

Wayne

Build Statue Build Tag License

English | 中文

Wayne is a universal, web-based Kubernetes multi-cluster management platform. It reduces service access costs by visualizing Kubernetes object template editing. With a complete permission management system and adapting to multi-tenant scenarios, it is a publish platform suitable for enterprise-level clusters.

Wayne has been serving 360 search on a large scale, carrying most of the online services, stably managing nearly a thousand applications, tens of thousands of containers, running for more than two years, withstood the test of production.

Why Named Wayne:Most of the projects developed by the team of 360 ​​Search Private Cloud are named after DC comics, and Wayne is no exception. "Wayne" is the name of the famous superhero, Batman Bruce Wayne.

Dashboard UI workloads page

Features

  • Permissions management based on RBAC (Role based access control): Users are associated with departments and projects through roles, and department roles allow operations department resources, and project roles allow operation of project resources, which is more suitable for multi-tenant scenarios.
  • Simplified the process of kubernetes object creation: Provides a basic Kubernetes object configuration file addition method, while supporting advanced mode to directly edit Json/Yaml files to create Kubernetes objects.
  • LDAP/OAuth 2.0/DB Multiple login mode support: Integrate enterprise-level LDAP login and DB login mode, and also enable OAuth2 login.
  • Support multi-cluster, multi-tenancy: You can manage multiple Kubernetes clusters at the same time, and add specific configurations to each other, making it easier for multi-cluster and multi-tenant management.
  • Provide a complete auditing module: Wayne provides a complete auditing module (really named audit) for each operation, tracking for operational history, and support for user-defined webhook.
  • Provide APIKey-based open interface calls: Users can apply for related APIKeys and manage their own departments and projects. Operation and maintenance personnel can also apply for global APIKey for global management of specific resources.
  • Keep a complete release history: Users can easily find any historical release, easily roll back, and update Kubernetes resources based on a specific historical version.
  • Complete resource reporting: Users can easily access reports and charts of resource usage and historical online frequency (days) and other basic data.
  • Provide a Web shell based on strict permission checking: Users can enter the published Pod through the Web shell to operate, with full permission verification.
  • Provide an in-site notification system: facilitates administrators to push clusters, service notifications, and troubleshooting reports.

Architecture

The whole system adopts the separation of front and back ends, in which the front end uses Angular framework for data interaction and display, and the Ace editor is used for Kubernetes resource template editing. The backend uses the Beego framework for data interface processing, Client-go to interact with Kubernetes, and data for MySQL storage. Dashboard UI workloads page

Component

  • Web UI:Provide complete business development and platform operation and maintenance experience.
  • Worker:Extend a range of message queue-based features, such as auditing components such as Audit and Webhooks.

Dependence

  • Golang 1.9+(installation manual)
  • Docker 17.05+ (installation manual)
  • Bee (installation manual)(Be sure to use the link version, don't use the official version of beego, there are some customizations.)
  • Node.js 8+ and npm 5+ (installation with nvm)
  • MySQL 5.6+ (Most of the data is in MySQL.)
  • RabbitMQ (Optionally, you need to deploy if you need to extend auditing features such as operational auditing and Webhooks.)

Quickly Start

  • Create configuration file
$ cd /tmp && touch dev.conf
  • Start MySQL(Optional)

If you don't have a MySQL service available, you can quickly create it with docker-compose:

$ docker-compose up mysql
  • Write database related configuration (Please modify to the actual address of the database.)
DBName = wayne
# MySQL address,if MySQL is started via docker-compose,
# Cannot be accessed directly through 127.0.0.1 under Mac OS.Please change to actual IP.
DBTns = tcp(127.0.0.1:3306)
DBUser = root
DBPasswd = root
  • Run start command
$ docker run --rm  -e GOPATH=/go -v /tmp/dev.conf:/opt/wayne/conf/dev.conf -p 8080:8080 360cloud/wayne /opt/wayne/backend apiserver

With the above command, you can access the local Wayne from http://127.0.0.1:8080/admin, the default administrator account admin:admin.

Note: After Wayne is started, you need to configure information such as cluster and Namespace for normal use. See details Cluster Configuration

Document

Roadmap

  • i18n
  • Support for migration of existing projects in kubernetes
  • Support for migration from Helm
  • Support for importing objects from Yaml/Json with one click
  • Support for other objects such as HPA
  • Improve operation and maintenance Kubernetes cluster function, providing complete Kubectl function
  • Support for more complete reporting and open API system

Contributors

Directories

Path Synopsis
src
backend/controllers/openapi
Package openapi Wayne OpenAPI Document wayne 开放 API (以下简称 openapi)是一组便于开发者调试、第三方工具开发和 CI/CD 的开放数据接口。
Package openapi Wayne OpenAPI Document wayne 开放 API (以下简称 openapi)是一组便于开发者调试、第三方工具开发和 CI/CD 的开放数据接口。
backend/routers
@APIVersion 1.0.0 @Title Wayne API @Description List接口查询技巧:<br> 1.按照字段排序:增加sortby查询参数。
@APIVersion 1.0.0 @Title Wayne API @Description List接口查询技巧:<br> 1.按照字段排序:增加sortby查询参数。
backend/util/snaker
Package snaker provides methods to convert CamelCase names to snake_case and back.
Package snaker provides methods to convert CamelCase names to snake_case and back.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL