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

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


作者:凌可彭兰舒)、雪尧郭耀星

 

这是我们的《Kubernetes资源编排系列》的第二篇——Helm篇,在上篇《Kubernetes资源编排系列之一Pod YAML篇》中,我们见识到了Pod YAML的强大能力,在k8s的集群中,所见之处皆是YAML。YAML多了之后,大家就希望有一种方案能将海量的YAML管理起来。于是本篇我们来介绍一下Helm。

 

一、 Helm是什么?

 

Helm是Kubernetes生态系统中的一个软件包管理工具,类似于类似于Ubuntu中的apt、CentOS中的yum等。它可以被用于自动创建、打包、配置和部署应用程序和服务到Kubernetes集群。

 

Kubernetes为用户提供了自动部署、扩展和管理容器化应用程序的能力,然而用户部署在Kubernetes集群上的应用可能会非常复杂,一个典型的应用(以SREWorks为例)通常会有一系列对象进行内部交互来使得程序正常运转。

 

首先我们需要Deployment用于部署我们想要运行的pods,例如Mysql数据库;StorageClass用于动态分配存储卷;Persistent Volume(PV)用于储存数据库;Service用于指定pod的访问策略使得外部可以访问pod的服务;Job用于执行任务保证指定数量的pods部署成功……

 

image.png 

 

在Helm出现之前,每个对象都需要一个单独的yaml文件来配置,然后通过kubeclt apply逐一创建这些对象。如果需要对其中的一些内容进行更改,必须找到对应的yaml文件并在其中找到对应的属性;而如果想要升级其中的一些组件,也要仔细地编辑多个文件,防止错误和遗漏;当要删除这个应用程序时,也要手动删除其对应的所有组件……

 

Kubernetes并不是从“应用程序”的层面来管理集群中的各个组件,它只是将用户提交上去的yaml保存在集群中并各自运行,实际上它并不知道用户声明的各个对象,例如Job、Service、StorageClass、Deployment等,是同一个应用程序下不同的组成成分。

 

当应用较为复杂的时候,要记住变量的位置并人工执行操作是一件冗余且复杂的事,并且会给多人协作开发应用增加难度。

 

在这样的基础上,Helm应运而生,为开发人员提供了模块化的应用管理工具,降低了Kubernetes用户的工作量和工作复杂度。

 

二、 Helm是怎么做的

 

Helm将上述对象都看作一个程序包内的部分,当我们想要对程序执行操作的时候,不需要告诉helm我们要对哪个对象进行变更,只用传入程序名称,Helm会帮助我们对程序下的每个对象执行相应的操作。

 

这个包含了一组yaml文件的程序包,就叫做Helm Chart。Chart是一个描述Kubernetes相关资源的文件集合,它的格式如下:

 

 

└── sreworks-chart/

      ├── Chart.yaml    # 文件包含了对该chart的描述

      ├── values.yaml   # 文件包含了导入模版中的chart的默认值,会在用户执行helm install或helm upgrade时被覆盖

      ├── charts/       # 目录包含依赖的其他chart

      ├── templates/    # 目录包括了模板文件

      └── ...

 

 

开发时通常不会将name硬编码在资源中,用户可以通过插入发布名称来生成name字段。

 

所以我们的job.yaml就变为了:

 

 

apiVersion: v1

kind: Job

metadata:

  name: {{ .Release.Name }}-init-job

 

 

模板命令{{.Release.Name}}将发布名称注入了模板。值作为一个命名空间对象传给了模板,用点(.)分隔每个命名空间的元素。

 

在执行helm install命令时,模版渲染引擎会将括在{{和}}之间的模版命令替换为values.yaml中定义的值或用户通过--set设置的值,并将渲染后的文件发送到templates/目录中,然后收集结果并发送给Kubernetes。

 

可以通过helm命令对chart执行相应的操作:

 

 

// 安装

$ helm install sreworks . -n sreworks

 

// 升级

$ helm upgrade sreworks . -n sreworks

 

// 回滚

$ helm rollback sreworks -n sreworks

 

// 卸载

$ helm uninstall sreworks -n sreworks

 

 

还能用Helm创建自己的charts,也可以从Helm仓库中下载。

 

社区的Helm Chart仓库位于Artifact Hub,可以下载其他人上传的chart到本地使用,也可以将自己制作的chart上传到仓库中。同时Helm也支持创建并运行私有仓库,供个人和组织内部使用。

 



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

热门文章

最新文章

推荐镜像

更多