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
复制代码

 

posted @   逆风飞翔的博客  阅读(33)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
点击右上角即可分享
微信分享提示