阿里開源的一站式運維SaaS應用套件和云原生運維開發平臺 - SREWorks
SREWorks 是阿里巴巴大數據 SRE 團隊云原生運維平臺,沉淀了團隊近 10 年經過內部業務錘煉的 SRE 工程實踐,秉承“數據化、智能化”運維思想,幫助運維行業更多的從業者采用“數智”思想做好高效運維。專注于以應用為中心的一站式“云原生”、“數智化”運維 SaaS 管理套件。提供企業的應用&資源管理及運維開發兩大核心能力,幫助企業實現云原生應用&資源的交付運維。
- 對于運維:提供標準化“交、監、管、控、營、服”SaaS 管理場景,企業可快速搭建“數智”運維支撐體系,能靈活定制實現復雜應用運維管控。
- 對于研發:提供一套基礎開箱即用的云原生應用配置和交付能力平臺,平臺自動集成運維服務。
SREWorks 是什么?
谷歌在 2003 年提出了一種崗位叫做 SRE (Site Reliability Engineer,站點可靠性工程師),它是軟件工程師和系統管理員的結合,重視運維人員的開發能力,要求運維日常瑣事在 50% 以內,另外 50% 精力開發自動化工具減少人力需求。
SREWorks 作為阿里云大數據 SRE 團隊對 SRE 理念的工程實踐,專注于以應用為中心的一站式“云原生”、“數智化”運維 SaaS 管理套件,提供企業應用&資源管理及運維開發兩大核心能力,幫助企業實現云原生應用&資源的交付運維。
阿里云大數據 SRE 團隊天然靠近大數據和 AI,對大數據&AI 技術非常熟悉,且具有隨取隨用的大數據&AI 算力資源,一直努力踐行“數據化”、“智能化”的運維理念,行業里的 DataOps(數據化運維)最早由該團隊提出。SREWorks 中有一套端到端的 DataOps 閉環工程化實踐,包括標準的運維數倉、數據運維平臺、運營中心等。
傳統 IT 運維領域已經有大量優秀的開源運維平臺,反觀云原生場景,目前還缺乏一些體系化的運維解決方案。隨著云原生時代大趨勢的到來,阿里云大數據 SRE 團隊將 SREWorks 運維平臺開源,希望為運維工程師們提供開箱即用的運維平臺。
SREWorks 有什么優勢?
回歸到運維領域的需求,無論上層產品和業務形態怎么變化,運維本質上解決的還是“質量、成本、效率、安全”相關需求。SREWorks 用一個運維 SaaS 應用界面來支撐上述需求,同時以“數智”思想為內核驅動 SaaS 能力,具體包括交付、監測、管理、控制、運營、服務六部分。
安裝
首先需要有一個大于等于 1.20 版本的 Kubernetes 集群。
- 分布式部署: 建議至少 3 臺節點(配置為 4 核 CPU,16G 內存),存儲需要 300G 以上空間,90 個 Pod 以上配額。
- 單機部署: 建議至少 8 核/32G 內存/300G 硬盤。
這里我們使用 Helm 的方式來安裝 SREWorks。
采用 Ingress 方式訪問
SREWorks 的部署必須指定 ingress 的域名,阿里云 ACK 集群的域名在【基本信息】中可以找到,例如 http://*.ceea604.cn-huhehaote.alicontainer.com ,* 部分用戶可以自行填寫,比如 http://sreworks.c34a60e3c93854680b590b0d5a190310a.cn-zhangjiakou.alicontainer.com ,在安裝時傳入 appmanager.home.url 參數即可。
首先下載 sreworks 代碼到本地。
$ git clone http://github.com/alibaba/sreworks.git -b v1.2 sreworks
$ cd sreworks/chart/sreworks-chart
然后使用下面的命令一鍵安裝即可。
# 安裝SREWorks
$ helm upgrade --install sreworks ./ \
--kubeconfig="****" \
--create-namespace --namespace sreworks \
--set appmanager.home.url="https://your-website.***.com" \
--set global.storageClass="alicloud-disk-available" \
--set appmanagerbase.openebs.enabled=false
采用 NodePort 方式訪問
在云廠商購買虛機,運行 NodePort 模式需要注意被訪問節點(NODE_IP)的網絡安全組或防火墻,打開該端口(30767)的公網被訪問限制。
同樣先下載 sreworks 代碼到本地。
$ git clone http://github.com/alibaba/sreworks.git -b v1.2 sreworks
$ cd sreworks/chart/sreworks-chart
然后使用下面的命令安裝 sreworks,替換 NODE_IP 為某個節點的 IP。
$ helm upgrade --install sreworks ./ \
--kubeconfig="****" \
--create-namespace --namespace sreworks \
--set global.accessMode="nodePort" \
--set appmanager.home.url="http://NODE_IP:30767"
注意: 默認的 storageClass: sreworks-hostpath 是由 OpenEBS 的 LocalPV 方案實現的,僅能用于開發測試環境,如需用于生產,建議使用符合 Kubernetes 要求的持久化存儲,如 GlusterFS、Ceph 等分布式存儲,或云服務上上的塊存儲。
Kubesphere 單機快速部署
- Kubesphere All-in-one 集群部署參考 https://kubesphere.io/zh/docs/quick-start/all-in-one-on-linux/。
- 數智版部署單機資源不小于 8 核/32G 內存/300G 硬盤。
# 下載并安裝kk工具
curl -sfL https://get-kk.kubesphere.io | VERSION=v2.0.0 sh -
# 通過kk工具部署k8s集群
./kk create cluster --with-kubernetes v1.21.5 --with-kubesphere v3.2.1
# 下載sreworks到本地
git clone http://github.com/alibaba/sreworks.git -b v1.2 sreworks
cd sreworks/chart/sreworks-chart
# 安裝SREWorks
# 替換NODE_IP為某個節點的瀏覽器可訪問IP
helm upgrade --install sreworks ./ \
--create-namespace --namespace sreworks \
--set global.accessMode="nodePort" \
--set appmanager.home.url="http://NODE_IP:30767" \
--set global.storageClass="local" \
--set appmanagerbase.openebs.enabled=false
驗證安裝
在瀏覽器中輸入上個步驟的域名或者 IP,如果能夠看到頁面,說明已經安裝完成(大約需等待 5 分鐘左右),注冊并開始使用 SREWorks。默認賬號為 admin,默認密碼為 12345678。
卸載
請務必遵循下面順序執行,否則可能會導致各種 crd 變成臟數據殘留在集群!
$ helm uninstall sreworks -nsreworks
$ kubectl delete namespace sreworks
實踐
接下來我們在 SREWorks 中,從 0 到 1 建立一個 Flink 云原生應用定義,發布 Flink 應用到市場,并交付部署 Flink 應用的完整過程。
1、新建 Flink 應用
登錄 SREWorks 后,進入“交付/應用管理-應用開發”頁面,點擊“新建云原生應用”,在滑出的表單中輸入 Flink 應用定義相關信息,完成 Flink 應用模板定義。
在應用開發模板列表下,點擊應用定義名稱,進入應用開發頁面。
2、添加 Flink 應用組件
進入 Flink 應用模板后,在應用組件中添加“Helm”組件類型,將 Flink 中的 VVP 組件添加進來。
3、Flink 應用構建
在完成組件添加后,可以在“應用構建”頁面進行一鍵構建,當前一鍵構建會自動計算版本,創建構建任務后,在構建列表中可查看剛剛提交的構建任務。
構建完成后,即可在構建列表中展示當前構建的應用及組件構建狀態,同時可以在操作中一鍵部署測試和上架市場。
4、Flink 應用測試部署
應用測試實例支持多套部署,并會自動生成全局唯一的實例名,規則為“應用名-uid”。該實例被部署在同名的 namespace 下。
用戶可自行對應用進行測試,測試通過后,可選擇一鍵發布到市場的操作將應用版本發布到市場中。
5、Flink 應用發布上架
通過構建列表中指定構建任務的“上架市場”操作完成應用到市場的發布。
6、Flink 應用部署
在市場中可以指定應用一鍵部署,當前默認部署應用的最新版本。
7、Flink 應用實例管理
應用實例列表展示當前部署在 prod 的企業應用生產實例,并提供升級、回滾、卸載操作。
Git 倉庫:https://github.com/alibaba/SREWorks。