Wayne:360 出品的通用的、基於 Web 的 Kubernetes 多叢集管理平臺
Wayne
Wayne 是一個通用的、基於 Web 的 ofollow,noindex" target="_blank">Kubernetes 多叢集管理平臺 。通過視覺化 Kubernetes 物件模板編輯的方式,降低業務接入成本, 擁有完整的許可權管理系統,適應多租戶場景,是一款適合企業級叢集使用的 釋出平臺 。
Wayne已大規模服務於360搜尋,承載了內部絕大部分業務,穩定管理了近千個業務,上萬個容器,運行了兩年多時間,經受住了生產的考驗。
命名起源:360 搜尋私有云團隊多數專案命名都來源於 DC 漫畫的角色,Wayne 也不例外, Wayne 是聲名顯赫的超級英雄蝙蝠俠 Bruce Wayne 的名字。
Features
- 基於 RBAC(Role based access control)的許可權管理:使用者通過角色與部門和專案關聯,擁有部門角色允許操作部門資源,擁有專案角色允許操作專案資源,更加適合多租戶場景。
- 簡化 Kubernetes 物件建立:提供基礎 Kubernetes 物件配置檔案新增方式,同時支援高階模式直接編輯 Json/Yaml檔案建立 Kubernetes 物件。
- LDAP/">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 進行互動,資料使用 SQL/">MySQL 儲存。
元件
- Web UI: 提供完整的業務開發和平臺運維功能體驗。
- Worker: 擴充套件一系列基於訊息佇列的功能,例如 Audit 和 Webhooks 等審計元件。
專案依賴
- Golang 1.9+( installation manual )
- Docker 17.05+ ( installation manual )
- Bee ( installation manual ) (請務必使用連結版本,不要使用 beego 官方版本,存在一些定製)
- Node.js 8+ and npm 5+ ( installation with nvm )
- MySQL 5.6+ (Wayne 主要資料都存在 MySQL 中)
- RabbitMQ (可選,如需擴充套件審計功能,例如操作審計和 Webhooks 等,則需部署)
快速啟動
- 建立配置檔案
cd /tmp && touch dev.conf
- 啟動MySQL(可選)
若您沒有可用的MySQL服務,可以通過docker-compose快速建立:
docker-compose up mysql
- 寫入資料庫相關配置(請修改為資料庫實際地址)
DBName = wayne # MySQL address,如果MySQL是通過docker-compose啟動的, # Mac OS 下無法直接通過127.0.0.1訪問,請修改為實際IP DBTns = tcp(127.0.0.1:3306) DBUser = root DBPasswd = root
- 執行啟動命令
$ docker run --rm-e GOPATH=/go -v /tmp/dev.conf:/opt/wayne/conf/dev.conf -p 8080:8080 360cloud/wayne /opt/wayne/backend apiserver
通過上述命令,您可以從通過 http://127.0.0.1:8080/admin 訪問本地 Wayne, 預設管理員賬號admin:admin。
注意:專案啟動後還需要配置叢集和Namespace等資訊才可正常使用。詳見 叢集配置
文件
- 請參照 Wiki
Roadmap
- 國際化
- 支援 Kubernetes 已有專案遷移
- 支援從 Helm 遷移
- 支援一鍵從 Yaml/Json 匯入物件
- 支援 HPA 等其他物件
- 完善運維 Kubernetes 叢集功能,提供完整的 Kubectl 功能
- 支援更完整的報表和開放 API 系統
貢獻者
- 請參照 貢獻者