K8S-Helm

Helm:Kubernetes 应用管理的利器

在 Kubernetes 生态系统中,应用部署和管理曾是一件繁琐的事情。开发者需要手动编写大量 YAML 配置文件,涉及 Deployment、Service 等众多资源对象,且在多环境部署和版本管理时面临诸多挑战。而 Helm 的出现,为这些问题提供了完美的解决方案。

Helm 核心概念

Helm 作为 Kubernetes 的包管理工具,有三个核心概念:

  • Chart:Helm 的软件包,采用 TAR 格式,包含一组定义 Kubernetes 资源相关的 YAML 文件,且有特定的目录结构。
  • Release :使用 helm install 命令在 Kubernetes 集群中部署的 Chart 称为 Release。
  • Repository:本质是一个 Web 服务器,保存一系列 Chart 软件包供用户下载,并提供清单文件供查询,Helm 可管理多个不同 Repository。

此外,Helm 包含客户端工具 helm 和服务端 Tiller(Helm v3 中已移除 Tiller,简化了架构)。客户端负责 Chart 的创建、打包等操作,服务端则处理请求并与 Kubernetes 交互完成应用部署等功能。

Helm 工作原理

  1. Chart Install 过程:Helm 解析 Chart 结构信息,将其与 Values 信息传递给 Tiller,Tiller 生成 Release 并发送给 Kubernetes 以完成部署。
  2. Chart Update 过程:Helm 解析更新的 Chart 信息,传递给 Tiller,Tiller 生成新 Release 并更新对应 Release 的历史,再发送给 Kubernetes 完成升级。
  3. Chart Rollback 过程:Helm 将需回滚的 Release 名称传递给 Tiller,Tiller 查找该 Release 历史,获取上一版本并发送给 Kubernetes 完成回滚。

Helm 部署步骤

  1. 安装 Helm 客户端

    复制代码
    mkdir helm
    wget https://get.helm.sh/helm-v3.14.0-linux-amd64.tar.gz
    tar -zxvf helm-v3.14.0-linux-amd64.tar.gz
    cd linux-amd64/
    cp helm /usr/local/bin/
    echo "source <(helm completion bash)" >> ~/.bashrc
    source ~/.bashrc
  2. 配置 Chart 库

    • 搜索官方 Helm hub chart 库:helm search hub nginx

    • 添加第三方 Chart 库:

      复制代码
      helm repo add aliyun  https://kubernetes.oss-cn-hangzhou.aliyuncs.com/charts 
      helm repo add bitnami https://charts.bitnami.com/bitnami
    • 查看 Chart 库:helm repo list

    • 从仓库查找指定 chart:helm search repo nginx

常用 Helm 命令

命令字 作用
create 使用给定的名称创建新图表
install 安装图表
upgrade 升级发布
rollback 将发布回滚到先前版本
uninstall 卸载发布
list 列出发布
history 获取发布历史记录
repo 添加、列出、删除、更新和索引图表存储库
search 在图表中搜索关键字

Helm Chart 详解

目录结构

通过 helm create 命令可创建一个新的 chart 包,其典型目录结构如下:

复制代码
nginx/
├── charts  # 依赖其他包的 charts 文件
├── Chart.yaml # 该 chart 的描述文件,包括版本等信息
├── templates  # 存放 k8s 模板文件目录
│   ├── deployment.yaml # 创建 k8s 资源的 yaml 模板
│   ├── _helpers.tpl # 可被其他模板引用的文件
│   ├── hpa.yaml # 弹性扩缩容配置
│   ├── ingress.yaml # ingress 配置
│   ├── NOTES.txt # 安装后展示给用户的说明
│   ├── serviceaccount.yaml # 服务账号配置
│   ├── service.yaml # Service 模板
│   └── tests # 测试模块
│       └── test-connection.yaml
└── values.yaml # 给模板文件使用的变量

Chart.yaml

包含 chart 的基本信息,如 API 版本、名称、版本、描述、依赖等,是 chart 的重要描述文件。

Helm 部署案例:部署 Nginx 应用

  1. 拉取 Nginx chart 并解压:

    复制代码
    helm pull bitnami/nginx --version 15.3.5
    tar xf nginx-15.3.5.tgz 
    cd nginx
  2. 修改 values.yaml 配置(如服务类型等)。

  3. 安装 chart:

    复制代码
    helm install nginx-server .
  4. 查看部署结果:

    • 查看 deployments:kubectl get deployments.apps
    • 查看 pods:kubectl get pod
    • 查看 services:kubectl get svc
  5. 测试访问:通过 service 的 ClusterIP 进行 curl 测试。

升级与回滚

  1. 修改配置文件(如调整副本数)。
  2. 执行升级:helm upgrade nginx-server .
  3. 查看升级历史:helm history nginx-server
  4. 回滚到指定版本:helm rollback nginx-server 1
  5. 卸载应用:helm uninstall nginx-server

Helm 极大地简化了 Kubernetes 应用的部署、升级、回滚等管理操作,提高了开发和运维效率,是 Kubernetes 生态中不可或缺的工具。通过 Helm,开发者可以更专注于应用本身,而无需过多关注复杂的 Kubernetes 资源配置细节。

相关推荐
Fortune_yangyang17 小时前
Kubernetes 操作管理
云原生·容器·kubernetes
AllFiles17 小时前
Kubernetes PVC 扩容全流程实战:从原理到操作详解
后端·kubernetes
放寒假脚后跟v19 小时前
Pod 的 YAML 文件中 exitCode 字段的具体含义、不同取值代表的场景
运维·云原生·容器·kubernetes·k8s
东方佑19 小时前
使用Docker Compose一键部署OnlyOffice:完整指南与配置解析
运维·docker·容器
原神启动119 小时前
K8S(五)—— YAML文件解析
java·容器·kubernetes
lin张19 小时前
k8s(二)项目生命周期管理、发布策略与声明式资源管理
云原生·容器·kubernetes
赵文宇(温玉)19 小时前
Docker的价值、特点、创新与关键技术
运维·docker·容器
Zsr102320 小时前
K8S安装指南与核心操作命令汇总
云原生·容器·kubernetes
孤岛悬城21 小时前
53 k8s基础与安装
云原生·容器·kubernetes
Coder码匠21 小时前
Docker Compose 部署 Spring Boot 应用完全指南
spring boot·docker·容器