前言
K8S上的应用对象, 都是由特定的资源描述组成, 包括deployment、 service等。 都保存各自文件中或者集中写到一个配置文件。 然后“kubectl apply – f”部署。 如果应用只由一个或几个这样的服务组成, 上面部署方式足够了。 而对于一个复杂的应用, 会有很多类似上面的资源描述文件, 例如微服务架构应用, 组成应用的服务可能多达十个、几十个。 如果有更新或回滚应用的需求, 可能要修改和维护所涉及的大量资源文件, 而这种组织和管理应用的方式就显得力不从心了。 且由于缺少对发布过的应用版本管理和控制, 使Kubernetes 上的应用维护和更新等面临诸多的挑战, 主要面临以下问题:
- 如何将这些服务作为一个整体管理。
- 这些资源文件如何高效复用。
-
简介
Helm是一个Kubernetes的包管理工具(The package managerfor Kubernetes), 就像Linux下的包管理器, 如yum/apt等, 可以很方便的将之前打包好的 yaml 文件部署到 kubernetes 上。Helm有3个重要概念:
helm: 一个命令行客户端工具, 主要用于Kubernetes应用chart的创建、 打包、 发布和管理。
- Chart: 应用描述, 一系列用于描述k8s资源相关文件的集合。
Release: 基于Chart的部署实体, 一个chart被Helm运行后将会生成对应的一个release; 将在k8s中创建出真实运行的资源对象 。
Helm版本变更
2019年11月13日, Helm团队发布Helm v3的第一个稳定版本。该版本主要变化如下:
最明显的变化是Tiller的删除。
- Release名称可以在不同命名空间重用。
- 支持将Chart推送至Docker镜像仓库中。
- 使用JSONSchema验证chart values。
- 其他。
Helm常用命令
命令 | 描述 |
---|---|
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客户端版本 |