Kubernetes 应用包管理器 Helm
为什么需要Helm
由于Kubernetes缺少对发布的应用版本管理和控制,使得部署的应
用维护和更新等面临诸多的挑战,主要面临以下问题:
• 如何将这些服务作为一个整体管理?
• 这些资源文件如何高效复用?
• 不支持应用级别的版本管理
Helm介绍
Helm是一个Kubernetes的包管理工具,就像Linux下的包管理器,如yum/apt等,可以很方便的将之前打包好的yaml文件部署到kubernetes上。
Helm有3个重要概念:
• helm:一个命令行客户端工具,主要用于Kubernetes应用chart的创建、打包、发布和管理。
• Chart:应用描述,一系列用于描述 k8s 资源相关文件的集合。
• Release:基于Chart的部署实体,一个 chart 被 Helm 运行后将会生成对应的一个 release;将在k8s中创建出真实运行的资源对象。
Helm 安装 charts 到 Kubernetes 集群中,每次安装都会创建一个新的 release。你可以在 Helm 的 chart repositories 中寻找新的 chart。
Helm客户端
使用helm很简单,你只需要下载一个二进制客户端包即可,会通过kubeconfig配置(通常
$HOME/.kube/config)来连接Kubernetes。
项目地址:https://github.com/helm/helm
下载Helm客户端:
wget https://get.helm.sh/helm-v3.4.2-linux-amd64.tar.gz
tar zxvf helm-v3.4.2-linux-amd64.tar.gz
mv linux-amd64/helm /usr/bin/
安装的charts
$ helm repo add bitnami https://charts.bitnami.com/bitnami 查看可以被添加的charts列表: [root@master1 ~]# helm search repo bitnami NAME CHART VERSION APP VERSION DESCRIPTION bitnami/airflow 14.0.14 2.5.1 Apache Airflow is a tool to express and execute... bitnami/apache 9.2.18 2.4.56 Apache HTTP Server is an open-source HTTP serve... bitnami/appsmith 0.1.18 1.9.12 Appsmith is an open source platform for buildin... bitnami/argo-cd 4.4.15 2.6.5 Argo CD is a continuous delivery tool for Kuber... bitnami/argo-workflows 5.1.11 3.4.5 Argo Workflows is meant to orchestrate Kubernet... bitnami/aspnet-core 4.0.8 7.0.4 ASP.NET Core is an open-source framework for we... bitnami/cassandra 10.1.0 4.1.0 Apache Cassandra is an open source distributed ... bitnami/cert-manager 0.9.2 1.11.0 cert-manager is a Kubernetes add-on to automate... bitnami/clickhouse 3.1.1 23.2.4 ClickHouse is an open-source column-oriented OL... bitnami/common 2.2.4 2.2.4 A Library Helm Chart for grouping common logic ... bitnami/concourse 2.0.5 7.9.1 Concourse is an automation system written in Go...
查看chart的基本信息
helm show chart bitnami/mysql
获取chart的所有信息
helm show all bitnami/mysq
查看chart的基本信息
helm show chart bitnami/mysql
获取chart的所有信息
helm show all bitnami/mysql
helm uninstall 的时候提供 --keep-history 选项, Helm将会保存版本历史。 您可以通过命令查看该版本的信息
$ helm status mysql-1612624192
Helm常用命令
命令 描述 completion 命令补全,source <(helm completion bash) create 创建一个chart并指定名字 dependency 管理chart依赖 get 下载一个release。可用子命令:all、hooks、manifest、notes、values history 获取release历史 install 安装一个chart list 列出release package 将chart目录打包到chart存档文件中 pull 从远程仓库中下载chart并解压到本地 # helm pull stable/mysql --untar repo 添加,列出,移除,更新和索引chart仓库。可用子命令:add、index、list、 remove、update rollback 从之前版本回滚 search 根据关键字搜索chart。可用子命令:hub、repo show 查看chart详细信息。可用子命令:all、chart、readme、values status 显示已命名版本的状态 template 本地呈现模板 uninstall 卸载一个release upgrade 更新一个release version 查看helm客户端版本
Helm基本使用
Helm管理应用生命周期: • helm create 创建Chart示例 • helm install 部署 • helm upgrade 更新 • helm rollback 回滚 • helm uninstall 卸载
Helm基本使用:创建Chart示列
创建chart:
helm create mychart #默认示列中部署的是一个nginx服务
打包chart:
helm package mychart
- charts:目录里面存放这个chart依赖的所有子chart。
- Chart.yaml:用于描述这个Chart的基本信息,包括名字、描述信息以及版本等。
- values.yaml:用于存储templates目录中模板文件中用到变量的值。
- Templates:目录里面存放所有yaml模板文件
- NOTES.txt:用于介绍Chart帮助信息,helm install部署后展示给用户。例如:如何使用这个Chart、列出缺省的设置等。
- _helpers.tpl:放置模板的地方,可以在整个chart中重复使用。
Helm基本使用:部署
部署Chart:
helm install web mychart
查看Release:
helm list -n default
查看部署的Pod:
kubectl get pods,svc
Helm基本使用:升级
使用Chart升级应用有两种方法: • --values,-f:指定YAML文件覆盖值 • --set:在命令行上指定覆盖值 注:如果一起使用,--set优先级高 例如将nginx服务升级到1.17版本: 第一种方式: # vi values.yaml #任意路径 image: tag: "1.17“ helm upgrade -f values.yaml web mychart 第二种方式: helm upgrade --set image.tag=1.17 web mychart
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!