SREWorks云原生数智运维工程实践-Kubernetes资源编排之二:Helm篇(中)

简介: SREWorks云原生数智运维工程实践-

三、 Helm的优点

 

生命周期管理:可以实现对组件实例的查询、安装、卸载、升级、回滚

方便的命令行:对于简单变量,可以在部署的同时指定对应的参数,方便部署

插件和工具生态:作为CNCF项目Helm已经变成了K8S基础生态的一部分,各种各样的外部系统都会对它进行默认支持,CICD工具集成方面有得天独厚的优势;同时用户能够从社区中获取丰富的专业知识和共享的Chart包

确保Secret安全性:一些敏感数据在Kubernetes中会存储为文本文件,作为Helm模版和值的一部分,而helm-secrets插件为关键信息提供秘密管理和保护,将相关值进行加密

Chart调试功能:Helm提供了一些命令让用户在安装前测试资源的正确性,检查Chart是否正确生成,例如helm lint;helm install —dry-run — debug等

 

四、 Helm的缺点

 

应用定制受限于预置变量:Chart是一种模板,Chart的用户仅能通过对values的控制来定制组件的部署行为,模板中没有提供变量的位置,是无法在下游直接进行变更。

YAML文件的无序部署在YAML文件变多之后,尤其在Operator-CRD场景下,YAML下发常常需要存在一定的先后顺序。helm中利用一个叫crd目录来进行优先下发来避免问题。但实际工程实践中,对于顺序的要求会更复杂。

应用安装状态感知:对于Helm而言,将所有Chart中的模版推到Kubernetes之后,它的install过程就结束了,它并不关心yaml中配置的各个组件在Kubernetes中是否能有效运行,而这恰恰是用户最关心的部分,因此使用Helm安装可能会出现用户无法感知的异常

 

五、 SREWorks对Helm的能力补充

 

1. 部署SREWorks时的Helm安装进度反馈

 

SREWorks平台自身的安装也是通过Helm包来实现的,常常会有一些SREWorks的用户以为helm install执行完就安装完了。事实上这个时候安装才刚刚开始。我们希望用户在这个过程中能够感知到具体的安装进度和异常反馈,于是我们在helm install执行完后提醒用户该功能将于v1.3版本上线):

 

 

Please execute following command in terminal to trace the install progress:

 

kubectl logs job.batch/sreworks-progress-check -nsreworks -f

 

After install finished (5-10mins) open the following URL in your browser:

 

   http://xxxx/#/

 

   account: admin

   password: *****

 

 

在这个sreworks-progress-check的job中,我们实现了对SREWorks安装进度全跟踪。

 

image.png

 

我们编写了进度查询和错误诊断脚本,将其包装成SREWorks的一个Job和其他所有组件一起同步部署,这样用户就能在终端实时查看安装进度,并能在异常出现时及时进行排查。

 

进度查询

 

image.png

错误诊断

 

image.png

 

2. SREWorks中的Helm组件状态统一管理

 

鉴于Helm并不跟踪各个组件的部署状态,在SREWorks中,我们复用AppManager已有的Groovy脚本托管能力,自己编写了一个小Groovy脚本,目的在于等待终态+获取数据。

 

代码如下:

 

 

getStatus(request) {

    def client = getKubeClient(kubeconfig from parameters)

    def service = client.services().inNamespace(namespace).withName(name).get()

    def response = new JSONObject()

    if (service.get("loadbalancer", "ingress", 0, "ip") not empty) {

        response.put("spec.metadata.annotations.vvpSlb", service.get("loadbalancer", "ingress", 0, "ip"))

        return Status.builder().response(response).status("SUCCESS").build();

    } else {

        return Status.builder().status("RUNNING").build();

    }

}

 

 

上述流程完成了Helm的安装、终态等待及数据获取。

 

上述getStatus()函数除了部署过程会刷5s/次;部署完之后也会一直刷,不过频率逐步降低到5min/次。作为状态感知的数据来源。

 

3. SREWorks中的Helm组件顺序部署

 

前面也提到过Helm的YAML文件无序下发针对大型工程而言,会有一定的影响。SREWorks的Appmanager基于OAM模型实现了workflow能力,能够支持多个Helm组件按照DAG图的顺序部署。

 


相关实践学习
深入解析Docker容器化技术
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。Docker是世界领先的软件容器平台。开发人员利用Docker可以消除协作编码时“在我的机器上可正常工作”的问题。运维人员利用Docker可以在隔离容器中并行运行和管理应用,获得更好的计算密度。企业利用Docker可以构建敏捷的软件交付管道,以更快的速度、更高的安全性和可靠的信誉为Linux和Windows Server应用发布新功能。 在本套课程中,我们将全面的讲解Docker技术栈,从环境安装到容器、镜像操作以及生产环境如何部署开发的微服务应用。本课程由黑马程序员提供。     相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
相关文章
|
7月前
|
运维 监控 Cloud Native
【云故事探索】NO.17:国诚投顾的云原生 Serverless 实践
国诚投顾携手阿里云,依托Serverless架构实现技术全面升级,构建高弹性、智能化技术底座,提升业务稳定性与运行效率。通过云原生API网关、微服务治理与智能监控,实现流量精细化管理与系统可观测性增强,打造安全、敏捷的智能投顾平台,助力行业数字化变革。
【云故事探索】NO.17:国诚投顾的云原生 Serverless 实践
|
7月前
|
运维 监控 Cloud Native
【云故事探索】NO.17:国诚投顾的云原生 Serverless 实践
通过与阿里云深度合作,国诚投顾完成了从传统 ECS 架构向云原生 Serverless 架构的全面转型。新的技术架构不仅解决了原有系统在稳定性、弹性、运维效率等方面的痛点,还在成本控制、API 治理、可观测性、DevOps 自动化等方面实现了全方位升级。
|
5月前
|
人工智能 Cloud Native 算法
拔俗云原生 AI 临床大数据平台:赋能医学科研的开发者实践
AI临床大数据科研平台依托阿里云、腾讯云,打通医疗数据孤岛,提供从数据治理到模型落地的全链路支持。通过联邦学习、弹性算力与安全合规技术,实现跨机构协作与高效训练,助力开发者提升科研效率,推动医学AI创新落地。(238字)
374 7
|
7月前
|
弹性计算 运维 Cloud Native
【云故事探索】NO.17:国诚投顾的云原生Serverless实践
简介: 通过与阿里云深度合作,国诚投顾完成了从传统 ECS 架构向云原生 Serverless 架构的全面转型。新的技术架构不仅解决了原有系统在稳定性、弹性、运维效率等方面的痛点,还在成本控制、API 治理、可观测性、DevOps 自动化等方面实现了全方位升级。
192 1
|
7月前
|
运维 Dubbo Cloud Native
Dubbo 云原生重构出击:更快部署、更强控制台、更智能运维
Apache Dubbo 最新升级支持云原生,提供一键部署微服务集群与全新可视化控制台,提升全生命周期管理体验,助力企业高效构建云原生应用。
801 25
|
6月前
|
存储 弹性计算 Cloud Native
云原生数据库的演进与应用实践
随着企业业务扩展,传统数据库难以应对高并发与弹性需求。云原生数据库应运而生,具备计算存储分离、弹性伸缩、高可用等核心特性,广泛应用于电商、金融、物联网等场景。阿里云PolarDB、Lindorm等产品已形成完善生态,助力企业高效处理数据。未来,AI驱动、Serverless与多云兼容将推动其进一步发展。
300 8
|
7月前
|
运维 Kubernetes Cloud Native
云原生运维也能很稳:Kubernetes 运维避坑指南
云原生运维也能很稳:Kubernetes 运维避坑指南
258 1
|
8月前
|
运维 监控 Cloud Native
从“守机器”到“写策略”——云原生架构把运维逼成了架构师
从“守机器”到“写策略”——云原生架构把运维逼成了架构师
206 1
|
8月前
|
运维 Kubernetes Cloud Native
分钟级到秒级:Yahaha 基于 OpenKruiseGame 的 UE5 游戏云原生实践
回顾《STRIDEN》项目在短短两个月内完成云原生转型的历程,它验证了一条清晰、可行的路径,即如何利用云原生技术,从根本上解决现代在线游戏所面临的运维复杂性难题。
|
存储 Cloud Native 数据处理
从嵌入式状态管理到云原生架构:Apache Flink 的演进与下一代增量计算范式
本文整理自阿里云资深技术专家、Apache Flink PMC 成员梅源在 Flink Forward Asia 新加坡 2025上的分享,深入解析 Flink 状态管理系统的发展历程,从核心设计到 Flink 2.0 存算分离架构,并展望未来基于流批一体的通用增量计算方向。
522 0
从嵌入式状态管理到云原生架构:Apache Flink 的演进与下一代增量计算范式

热门文章

最新文章

推荐镜像

更多
  • ros