K8S Helm

简述

Helm 是 Kubernetes 的开源包管理器。它提供了提供、共享和使用为 Kubernetes 构建的软件的能力。它允许开发者定义、‌打包、‌发布和管理Kubernetes应用资源,‌类似于Linux下的apt或yum包管理器。‌Helm3的架构主要包括Helm客户端、‌Chart仓库以及Kubernetes集群,‌其中Helm客户端是用户与Helm交互的命令行工具,‌Chart仓库用于存储Helm Chart,‌而Kubernetes集群是应用部署的目标环境。‌Helm3的重要能力包括创建新的charts、‌将charts打包、‌与chart仓库交互、‌安装和卸载Kubernetes的应用以及管理使用Helm安装的charts的生命周期。‌‌
核心功能

  1. 包管理:Helm允许开发者将Kubernetes资源打包成一个Chart,并发布到仓库中。用户可以从仓库中搜索、下载和安装Chart,从而快速部署应用程序。
  2. 依赖管理:Chart可以声明对其他Chart的依赖,Helm会自动解决这些依赖关系,确保所有相关的资源都被正确部署。
  3. 版本管理:Helm支持Chart的版本控制,用户可以安装特定版本的Chart,并在需要时更新或回滚到之前的版本。
  4. 配置管理:通过values.yaml文件,用户可以自定义Chart中的配置参数,从而满足不同环境下的部署需求。
  5. 模板化:Chart中的Kubernetes资源文件可以使用Go模板语言进行编写,允许根据用户的输入动态生成最终的资源清单。

流程

  1. 安装Chart :用户通过Helm命令行工具(CLI)指定Chart仓库、Chart名称和版本,以及自定义的配置参数,Helm会解析Chart并生成相应的Kubernetes资源清单,然后提交给Kubernetes API Server进行部署。

  2. 更新Chart :当Chart有更新时,用户可以使用相同的命令更新已安装的Release,Helm会处理资源的更新和替换。

  3. 回滚Chart :如果更新后的Chart出现问题,用户可以使用Helm将Release回滚到之前的版本。

  4. 卸载Chart:当不再需要某个应用时,用户可以使用Helm卸载Chart,Helm会删除与该Chart相关的所有Kubernetes资源。

优势

  1. 简化部署流程:Helm通过封装Kubernetes资源文件和配置参数,使得应用程序的部署变得更加简单和高效。
  2. 提高可维护性:通过Chart的版本控制和依赖管理,Helm有助于保持应用程序的一致性和可维护性。
  3. 促进团队协作:Helm仓库和Chart的使用促进了开发、运维和测试团队之间的协作和共享。

架构

目标

Helm管理名为chart的Kubernetes包的工具。Helm可以做以下的事情:

  • 从头开始创建新的chart
  • 将chart打包成归档(tgz)文件
  • 与存储chart的仓库进行交互
  • 在现有的Kubernetes集群中安装和卸载chart
  • 管理与Helm一起安装的chart的发布周期
    模块
  1. chart 创建Kubernetes应用程序所必需的一组信息。
  2. config 包含了可以合并到打包的chart中的配置信息,用于创建一个可发布的对象。
  3. release 是一个与特定配置相结合的chart的运行实例。
    组件
    Helm是一个可执行文件,执行时分成两个不同的部分:
  4. Helm客户端 是终端用户的命令行客户端。负责以下内容:
  • 本地chart开发
  • 管理仓库
  • 管理发布
  • 与Helm库建立接口
    • 发送安装的chart
    • 发送升级或卸载现有发布的请求
  1. Helm库 提供执行所有Helm操作的逻辑。与Kubernetes API服务交互并提供以下功能:
  • 结合chart和配置来构建版本
  • 将chart安装到Kubernetes中,并提供后续发布对象
  • 与Kubernetes交互升级和卸载chart
    独立的Helm库封装了Helm逻辑以便不同的客户端可以使用它。

命令

命令 描述
dependency 管理 chart 依赖
get 下载一个 release。可用子命令:all、hooks、manifest、notes、values
history 获取 release 历史
install 获取 release 历史
list 列出 release
pull 从远程仓库中下载 chart 并解压到本地
repo 添加,列出,移除,更新和索引 chart 仓库。可用子命令:add、index、list、remove、update
rollback 版本回滚
search 关键字搜索 chart
show chart 详细信息。

应用

  1. 添加仓库
bash 复制代码
helm repo add bitnami https://charts.bitnami.com/bitnami
helm repo add stable http://mirror.azure.cn/kubernetes/charts
helm repo add aliyun https://kubernetes.oss-cn-hangzhou.aliyuncs.com/charts
helm repo add incubator https://charts.helm.sh/incubator
  1. 更新仓库
bash 复制代码
helm repo update
  1. 仓库列表
bash 复制代码
helm repo list
  1. 删除仓库
bash 复制代码
helm repo remove incubator
  1. 搜索Chart
bash 复制代码
helm search repo stable
  1. 查看Chart信息
bash 复制代码
helm show chart stable/mysql     # 查看基本信息
helm show all stable/mysql     # 获取所有信息
  1. 安装Chart
bash 复制代码
helm install my-redis bitnami/redis [-n default]  # 指定 release 名称
helm install bitnami/redis --generate-name     # 自动生成 release 名称
  1. 查看release
bash 复制代码
helm ls
helm list
helm status my-redis
  1. 删除release
bash 复制代码
helm uninstall my-redis

自定义

一、创建自定义 Helm Chart

要创建一个自定义 Helm Chart,遵循以下步骤:.

  1. 初始化Chart目录结构:
    使用 Helm CLI 工具,可以快速初始化一个新的Chart目录结构。
bash 复制代码
helm create mychart

这将创建一个名为mychart的目录,其中包含Chart.yaml文件和一些示例模板文件(如deployment.yaml, service.yaml等)。

  1. 编辑Chart.yaml:

在Chart.yaml文件中,定义Chart的名称、版本、描述、维护者信息等。

yaml 复制代码
apiVersion: v2  
appVersion: "1.0"  
description: A Helm chart for Kubernetes  
name: mychart  
type: application  
version: 0.1.0
  1. 编辑模板文件:
    在templates目录下,编辑或添加Kubernetes资源文件(YAML格式),这些文件将定义应用程序。Helm 使用Go模板语言来允许在YAML文件中插入变量和逻辑。
  2. 定义Values文件:
    在values.yaml文件中,定义可以在模板中引用的默认值。这允许用户通过修改values文件来自定义Chart的部署。
  3. 测试Chart:
    在本地或开发环境中使用helm install命令来测试Chart。
bash 复制代码
helm install my-release ./mychart
  1. 打包Chart:
    在将Chart分发或上传到Chart仓库之前,需要将其打包成一个tgz文件。
bash 复制代码
helm package ./mychart

二、使用自定义 Helm Chart

一旦有了自定义的Helm Chart,就可以按照以下步骤在Kubernetes集群中部署它:

  1. 确保Helm CLI已安装并配置:
    确认Helm CLI已经安装,并且指向了正确的Kubernetes集群。
  2. 添加Chart仓库(如果适用):
    如果Chart存储在Helm Chart仓库中,需要添加仓库并使用它来安装Chart。
  3. 安装Chart:
    使用helm install命令安装Chart。指定Chart的版本、release名称等。
bash 复制代码
helm install my-release ./mychart --values custom-values.yaml
  1. 查看和管理已部署的应用:
    使用helm list查看所有已部署的Helm release。使用kubectl命令查看和管理Kubernetes资源。
  2. 升级和回滚:
    使用helm upgrade命令来升级Chart。如果需要,可以使用helm rollback命令回滚到之前的版本。

自定义chart配合这Harbor镜像进行版本的发布。

相关推荐
全能全知者31 分钟前
docker快速安装与配置mongoDB
mongodb·docker·容器
为什么这亚子2 小时前
九、Go语言快速入门之map
运维·开发语言·后端·算法·云原生·golang·云计算
ZHOU西口4 小时前
微服务实战系列之玩转Docker(十八)
分布式·docker·云原生·架构·数据安全·etcd·rbac
牛角上的男孩5 小时前
Istio Gateway发布服务
云原生·gateway·istio
JuiceFS6 小时前
好未来:多云环境下基于 JuiceFS 建设低运维模型仓库
运维·云原生
景天科技苑7 小时前
【云原生开发】K8S多集群资源管理平台架构设计
云原生·容器·kubernetes·k8s·云原生开发·k8s管理系统
wclass-zhengge7 小时前
K8S篇(基本介绍)
云原生·容器·kubernetes
颜淡慕潇7 小时前
【K8S问题系列 |1 】Kubernetes 中 NodePort 类型的 Service 无法访问【已解决】
后端·云原生·容器·kubernetes·问题解决
川石课堂软件测试9 小时前
性能测试|docker容器下搭建JMeter+Grafana+Influxdb监控可视化平台
运维·javascript·深度学习·jmeter·docker·容器·grafana
昌sit!15 小时前
K8S node节点没有相应的pod镜像运行故障处理办法
云原生·容器·kubernetes