阿里开源的云原生运维开发平台 - 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