Kubernetes 多集群管理平台-wayne简介

Wayne (https://github.com/Qihoo360/wayne)是一个通用的、基于 Web 的 Kubernetes 多集群管理平台,由360公司的工程师开发。经过可视化 Kubernetes 对象模板编辑的方式,下降业务接入成本, 拥有完整的权限管理系统,适应多租户场景,是一款适合企业级集群使用的发布平台前端

Wayne已大规模服务于360搜索,承载了内部绝大部分业务,稳定管理了近千个业务,上万个容器,运行了两年多时间,经受住了生产的考验。mysql

命名起源:360 搜索私有云团队多数项目命名都来源于 DC 漫画的角色,Wayne 也不例外,Wayne 是声名显赫的超级英雄蝙蝠侠 Bruce Wayne 的名字。git

 

Features

  • 基于 RBAC(Role based access control)的权限管理:用户经过角色与部门和项目关联,拥有部门角色容许操做部门资源,拥有项目角色容许操做项目资源,更加适合多租户场景。
  • 简化 Kubernetes 对象建立:提供基础 Kubernetes 对象配置文件添加方式,同时支持高级模式直接编辑 Json/Yaml文件建立 Kubernetes 对象。
  • LDAP/OAuth 2.0/DB 多种登陆模式支持:集成企业级 LDAP 登陆及 DB 登陆模式,同时还能够实现 OAuth2 登陆。
  • 支持多集群、多租户:能够同时管理多个 Kubernetes 集群,并针对性添加特定配置,更方便的多集群、多租户管理。
  • 提供完整审计模块:每次操做都会有完整的审计功能,追踪用于操做历史,同时支持用户自定义 webhook。
  • 提供基于 APIKey 的开放接口调用:用户可自主申请相关 APIKey 并管理本身的部门和项目,运维人员也能够申请全局 APIKey 进行特定资源的全局管理。
  • 保留完整的发布历史:用户能够便捷的找到任何一次历史发布,并可轻松进行回滚,以及基于特定历史版本更新 Kubernetes 资源。
  • 具有完善的资源报表:用户能够轻松获取各项目的资源使用占比和历史上线频次(天级)以及其余基础数据的报表和图表。
  • 提供基于严密权限校验的 Web shell:用户能够经过 Web shell 的形式进入发布的 Pod 进行操做,自带完整的权限校验。
  • 提供站内通知系统:方便管理员推送集群、业务通知和故障处理报告等。

架构设计

总体采用先后端分离的方案,其中前端采用 Angular 框架进行数据交互和展现,使用Ace编辑器进行 Kubernetes 资源模版编辑。后端采用 Beego 框架作数据接口处理,使用 Client-go 与 Kubernetes 进行交互,数据使用 MySQL 存储。github

 

组件

  • Web UI: 提供完整的业务开发和平台运维功能体验。
  • Worker: 扩展一系列基于消息队列的功能,例如 Audit 和 Webhooks 等审计组件。

项目依赖

快速启动

  • 克隆代码仓库
$ go get github.com/Qihoo360/wayne
  • 启动MySQL(可选)

若您没有可用的 MySQL 服务,能够经过 docker-compose 快速建立:golang

$ docker-compose up -d mysql
  • 建立配置文件
$ cd src/backend/conf && touch dev.conf
  • 写入数据库相关配置(请修改成数据库实际地址)
DBName = wayne
# MySQL链接配置,默认是mysql(MySQL服务名称).
# 若是使用docker-compose启动MySQL,同时你没有改变mysql的服务名称,那么保留默认配置便可。
# 你也能够经过执行"docker network inspect wayne_default"(若是没有使用docker-compose
# 的默认网络,须要将“wayne_default”替换为实际使用的网络名称)来得到mysql容器IP,而后将
# “mysql”替换为其容器IP。当你使用自定义运行环境时,使用容器IP会更加灵活。例如:
# "DBTns = tcp(172.17.0.2:3306)"
DBTns = tcp(mysql:3306)
DBUser = root
DBPasswd = root
  • 启动Wayne服务

进入Wayne根目录,执行web

$ docker-compose up -d wayne

经过上述命令,您能够从经过 http://127.0.0.1:8080/admin 访问本地 Wayne, 默认管理员帐号 admin:admin。sql

注意:项目启动后还须要配置集群和Namespace等信息才可正常使用。详见 集群配置docker

文档

Roadmap

  • 国际化
  • 支持 Kubernetes 已有项目迁移
  • 支持从 Helm 迁移
  • 支持一键从 Yaml/Json 导入对象
  • 支持 HPA 等其余对象
  • 完善运维 Kubernetes 集群功能,提供完整的 Kubectl 功能
  • 支持更完整的报表和开放 API 系统

 

更多参考:shell

 

相关文章
相关标签/搜索