阶段十一:容器编排技术之K8s的Helm3包管理
Helm
背景介绍
在 Kubernetes 环境中,部署和管理应用程序时,常常会面临一系列复杂的挑战。
Yaml 文件堆积如山
一个复杂的应用通常依赖多个 Kubernetes 资源对象,而每个对象都需要通过 YAML 文件来定义。比如
- Deployment:用于定义应用程序的 Pod 副本数量、容器镜像版本等参数
- Service:负责为 Pod 提供稳定的网络入口,使外部客户端能够访问应用服务
- ConfigMap:专门用于存储应用程序的配置信息
- Secret:加密敏感配置信息,比如口令、证书、令牌;
随着应用复杂度的增加,可能就会涉及上百个 YAML 文件。如何管理,成了一项艰巨的任务。
更新/回退容易漏改
当需要对应用进行更新时,往往需要同时修改多个 YAML 文件。稍有疏忽,漏改、乱序等问题时常发生。
同样,在应用出现问题需要回滚时,由于涉及众多 YAML 文件,要准确还原到之前的正确状态,难度极大。
Helm 的解决方案
Helm 作为 Kubernetes 的包管理器,正是为了解决上述这些问题而诞生的。
它允许将这些众多的 YAML 文件作为一个整体进行管理,这个整体被称为 Helm Chart。
更新应用时,只需在 Helm Chart 中对相关参数进行修改,Helm 就能自动、准确地更新。
概念介绍
官方地址: https://helm.sh/

Helm(舵柄; 舵轮) 是 Kubernetes 的包管理工具 ,类似 Linux 系统里的 yum、apt。
它能把打包好的 YAML 文件轻松部署到 Kubernetes 上。
- 发布使用方便
- 对应用发布者来说,Helm 可打包应用,管理依赖与版本,再发布到软件仓库。
- 对使用者而言,不用懂 Kubernetes 的 YAML 语法,也无需编写部署文件,用 Helm 下载并安装即可。
- 支持版本控制
- Helm 还具备在 Kubernetes 上部署、删除、升级和回滚应用的强大功能 。
Helm 所包含的组件有
1. Helm 客户端:提供命令行工具,用于在终端执行如helm install部署、helm upgrade升级等操作。 2. Chart:是 Helm 管理应用部署的基本单元,由一组描述 Kubernetes 资源的 YAML 文件组成。 3. Chart 仓库:类似软件应用商店,用于存储和分发 Chart,包括公共仓库(如 Artifact Hub)和私有仓库。 4. 模板引擎 Template:内置在 Helm 中,支持使用 Go 模板语法,能根据参数动态生成 K8s 资源文件。 5. 发布管理 Release:Helm 用 “发布(Release)” 管理 Chart 部署实例,每个发布有唯一名称,可记录版本、配置参数等信息。
安装部署
- 1 版本选型
参考文档:https://helm.sh/zh/docs/intro/quickstart/

我们所部署的K8s集群版本是 1.30.11。查看对应的 Helm版本,是3.17。

- 2 部署安装
下载地址:https://github.com/kubernetes/helm/releases
如果下载不下来,在【02-软件】目录下,我们也提供了离线包。
# 下载版本
[root@master1 ~]# curl -LO https://get.helm.sh/helm-v3.17.0-linux-amd64.tar.gz
# 解压
[root@master1 ~]# tar xf helm-v3.17.0-linux-amd64.tar.gz
# 移动到可执行文件下
[root@master1 ~]# mv ./linux-amd64/helm /usr/local/bin/helm
# 验证版本
[root@master1 ~]# helm version
version.BuildInfo{Version:"v3.4.1", GitCommit:"c4e74854886b2efe3321e185578e6db9be0a6e29", GitTreeState:"clean", GoVersion:"go1.14.11"}命令作用:
- 访问
https://get.helm.sh/helm-v3.17.0-linux-amd64.tar.gz;curl默认把响应写到终端,wget默认下载到文件。可据 HTTP 状态、响应内容或下载结果判断服务是否可访问。
- 按选项打包或解包归档文件;
-c表示创建归档,-x表示解包,-f后面指定归档文件名。
执行结果:
- 成功后会显示服务器响应或按选项写入文件;HTTP 状态和响应内容可用于验证服务。
- 成功后会生成归档文件或把归档内容解压到目标目录;用
tar -tf 归档文件可查看归档内容。
- 成功后应以该命令实际输出、生成的文件或目标服务状态为准;失败时先阅读终端报错,再核对命令参数和运行环境。
关键参数:
注意事项:
**注意事项:**
**注意事项:**命令说明:
| 关键参数 | 说明 |
|---|---|
-a | 显示全部对象,而非只显示默认范围。 |
修改values.yaml中的image.tag为"1.16-alpine",然后执行:
**注意事项:**
注意事项:
**注意事项:**注意事项:
**注意事项:**
注意事项:
**注意事项:**注意事项:
**注意事项:**注意事项:
**注意事项:**
注意事项:
**注意事项:**注意事项:
**注意事项:**注意事项:
**注意事项:**
expose:
tls:
secret:
ingress:
hosts:
annotations:
clusterIP:
ports:
nodePort:
ports:
http:
https:
loadBalancer:
ports:
persistence:
persistentVolumeClaim:
registry:
chartmuseum:
jobservice:
jobLog:
database:
redis:
trivy:
imageChartStorage:
filesystem:
internalTLS:
ipFamily:
ipv6:
ipv4:
updateStrategy:
proxy:
httpProxy:
httpsProxy:
components:
metrics:
trace:
cache:
containerSecurityContext:
seccompProfile:
capabilities:
drop:
nginx:
image:
portal:
image:
core:
image:
jobservice:
image:
registry:
registry:
image:
controller:
image:
trivy:
image:
database:
internal:
image:
redis:
internal:
image:
exporter:
image:注意事项:
#部署
#升级
#卸载
**注意事项:**
注意事项:
**注意事项:**
注意事项: