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