奇虎360開源基於Kubernetes管理平臺 Wayne_Kubernetes中文社群
近日奇虎 360 宣佈正式開源 Wayne ,這是一個由 360 搜尋雲平臺團隊開發的通用的、基於 Web 的 Kubernetes 多叢集一站式視覺化管理平臺。內建了豐富多樣的功能,滿足企業的通用需求,同時外掛化的方式可以方便整合定製化功能。目前 Wayne 已大規模服務於 360 搜尋,承載了內部絕大部分業務,穩定管理了近千個業務,上萬個容器,運行了兩年多時間,經受住了生產的考驗。
GitHub:https://github.com/Qihoo360/wayne
簡介
Wayne是一個Kubernetes的視覺化管理平臺,通過直觀的頁面操作便可完成Kubernetes中資源的建立、部署等操作。
採用微核心架構,通過外掛化的方式將不同功能儘量的分離,更利於各種定製化功能的擴充套件。
在此基礎上,融入了部門、專案的概念,通過RBAC的方式細化了資源控制的許可權,適合建立企業內部的私有云平臺。
功能特性
- 視覺化操作:提供直觀、簡便的方式操作Kubernetes叢集,減小學習成本,快速上線業務。
- 多樣的編輯模式:支援圖形化編輯,也支援Json、Yaml兩種高階定製化編輯模式。
- 微核心架構:採用可擴充套件的外掛化方式開發,定製化選擇特性功能,更方便的整合符合企業需求的新功能。
- 多叢集管理:可以同時管理多個Kubernetes叢集,更方便地管理多個叢集。
- 豐富的許可權管理:將資源抽象化為部門、專案級別,角色的許可權可以更細化的控制,適用於多部門、多專案的統一集中管理。
- 多種登入模式:支援企業級LDAP登入、支援OAuth2登入,支援資料庫登入多種模式。
- 完備的審計:所有操作都會有完整的審計功能,方便追蹤操作歷史。
- 開放平臺:支援APIKey開放平臺,使用者可自主申請相關APIKey並管理自己的專案。
- 多層次監控:提供多級別的監控統計資訊,實時關注叢集的執行狀態。
元件
- 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 等,則需部署)
架構
專案整體採用前後端分離的方案實現。
- 前端採用Angular框架進行資料互動和展示,使用Ace編輯器進行Kubernetes資源模版編輯。
- 後端採用Beego框架做資料介面處理,持久層採用MySQL儲存,使用client-go與Kubernetes進行互動。
使用Kubernetes部署
生產環境中推薦使用 kubernetes 部署
克隆程式碼倉庫
$ git clone https://github.com/Qihoo360/wayne
安裝依賴環境(可選)
Wayne 依賴 MySQL 和 RabbitMQ,其中 MySQL 是必須的服務,使用者儲存系統的各種資料,RabbitMQ 是可選的,主要使用者擴充套件審計功能使用。
$ kubectl apply -f hack/kubernetes/dependency
資料未進行持久化,生產環境一定要做資料持久化,避免資料丟失
配置configmap
在 hack/kubernetes/wayne/configmap.yaml中按照配置文件配置好相關的資訊(例如資料庫連結等資訊)
如果使用的是hack/kubernetes/dependency中啟動的MySQL 和 RabbitMQ 服務,可以暫時不修改配置檔案。預設配置檔案中通過叢集內部域名訪問MySQL 和 RabbitMQ。
啟動Wayne
$ kubectl apply -f hack/kubernetes/wayne
現在可以通過下面地址訪問:
$ http://yourip:NodePort
由於前後端使用 JWT Token 通訊,生產環境一定要重新生成 RSA 檔案,確保安全。生成 rsa 加密對命令如下:
$ ssh-keygen -t rsa -b 2048 -f jwtRS256.key
$ # Don't add passphrase
$ openssl rsa -in jwtRS256.key -pubout -outform PEM -out jwtRS256.key.pub
配置叢集
參考叢集配置配置好 Kubernetes 叢集訪問資訊。
配置 Namespace 可訪問叢集
必須配置Namespace可訪問叢集才可在前臺建立相關的資源。