1. 程式人生 > >奇虎360開源基於Kubernetes管理平臺 Wayne_Kubernetes中文社群

奇虎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可訪問叢集才可在前臺建立相關的資源。