详解k8s集群包管理helm(超详细)
文章目录

安装与基本使用
helm:一个命令行客户端工具,主要用于Kubernetes应用chart的创建、打包、发布和管理
涉及一些主要概念:
- Chart:应用描述,一系列用于描述 k8s 资源相关文件的集合
- Release:基于Chart的部署实体,一个 Chart 被 Helm 运行后将会生成对应的一个 release;将在k8s中创建出真实运行的资源对象
- Repository:主要就是用来存放和共享 Chart 使用,相当于是 GitHub,不过这里主要是供 Kubernetes 使用。
注意: v2版需要初始化一个Server组件
仓库:
- 主仓库: helm repo add bitnami https://charts.bitnami.com/bitnami
- 国内: https://kubernetes.oss-cn-hangzhou.aliyuncs.com/charts
- 其它根据应用发布地址,如 https://fission.github.io/fission-charts/
- web hub: https://artifacthub.io/packages/search?kind=0
snap安装helm
snap install helm
Helm常用命令
命令 | 描述 |
---|---|
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 Chart
helm的核心就是模板,即模板化的k8s mainfests文件,本质是一个Go的template模板,在模板基础上增加自定义的元数据、扩展的库和一些类似编程的工作流程(如条件语句,管道)
root@master1:~/k8s/helm# helm create nginx
Creating nginx
root@master1:~/k8s/helm# tree .
.
└── nginx
├── charts
├── Chart.yaml
├── templates
│ ├── deployment.yaml
│ ├── _helpers.tpl
│ ├── hpa.yaml
│ ├── ingress.yaml
│ ├── NOTES.txt
│ ├── serviceaccount.yaml
│ ├── service.yaml
│ └── tests
│ └── test-connection.yaml
└── values.yaml #定义变量
这是一个使用Helm创建的Nginx应用程序的目录结构。下面是每个文件的作用:
charts/
:该目录用于存放Nginx应用程序所依赖的其他Helm Charts。
Chart.yaml
:该文件包含了Nginx应用程序的元数据信息,包括应用程序名称、版本信息、描述等。
templates/
:该目录存放了Ngin