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

 

相關文章
相關標籤/搜索