陈同学
微服务
Accelerator
About
# Helm 入门 > [Helm](https://helm.sh/) > [Helm chart hub](https://hub.helm.sh/) 本文介绍Helm、Chart相关内容。 ## 概念 **Helm** 官方介绍: ``` The package manager for Kubernetes. Helm is the best way to find, share, and use software built for Kubernetes. ``` Helm是一个K8s包管理工具,用于管理 **charts** 包,和Ubuntu的apt、CentOS的yum、Mac上的brew作用相同。 **Chart** Chart 是用于创建K8s应用的一些列K8s资源的集合,一个chart就是一个helm包。 手工管理K8s资源非常繁琐,创建一个应用可能涉及PV、PVC、Pod、Service、Ingress等资源,通过Chart将资源整合在一起抽象为chart包,再由Helm通过chart包管理K8s对象则方便很多。 **有三点概念非常重要:** * 一个Chart就是一个Helm包,包含运行一个应用必要的资源文件; * Repository 是用于存储、分享 Chart 包的工具; * Release 指使用Chart包在K8s中运行的应用实例,一个Chart可以被多次安装,每次安装都会有不同的Release 产生,和Docker镜像、实例一致。 ## Helm3 与 Helm2 区别 > [为什么在Helm3中要移除Tiller(翻译)](https://mp.weixin.qq.com/s/lHVYZQQ0uIaooSjxu_-1Ig) Helm 3.0.0 于 [2019.11.13 宣告发布](https://helm.sh/blog/helm-3-released/),Helm3 与 Helm2 相比发生了很大变更。 * Helm2 * 使用C/S架构,由Helm Client、Tiller Server组成。 * Helm Client 是一个命令行工具,负责和Tiller 交互 * Tiller Server 内置在K8s集群中,通过K8s API Server与K8s交互 * Helm3 * 最重大的变更:**移除了Tiller**,Helm client直接通过 K8s API Server 交互 * 移除了用于托管本地Chart Repository 的 **helm serve** 命令 * Release 不再是全局资源,直接存储在namespace中 * Helm3 发布6个月后Helm2不再修复Bug,只处理安全问题 * 降低了安装、运维复杂性,提高安全性 * 需要 k8s v1.6+ 支持,k8s以前版本不支持RBAC(基于角色的访问控制) * 部分命令更名 ``` helm delete => helm uninstall helm inspect => helm show helm fetch => helm pull ``` ## 国内 Repository AppHub > [App Hub 官网](https://developer.aliyun.com/hub/#/?_k=kjsxnt) AppHub 全称 Cloud Native App Hub,简称AppHub,指**"开放云原生应用中心"**,是托管在国内公有云的公益性Chart Hub,会把Helm Hub所有charts同步到国内。 ```bash helm repo add apphub https://apphub.aliyuncs.com ``` ## Helm3 安装 从 [Helm GitHub Release](https://github.com/helm/helm/releases) 下载最新版本,此处以下载 `helm-v3.1.0-linux-amd64.tar.gz` 为例,可在master节点安装。 ```bash tar -zxvf helm-v3.1.0-linux-amd64.tar.gz mv linux-amd64/helm /usr/local/bin/helm helm help # 添加官网仓库 helm repo add stable https://kubernetes-charts.storage.googleapis.com/ # 获取最新charts helm repo update ``` 在Linux下,默认配置的一些目录为: * Cache Path:`$HOME/.cache/helm` * Configuration Path:`$HOME/.config/helm` * Data Path:`$HOME/.local/share/helm` ## 手工制做 Chart Demo 以nginx为例子演示一个demo. ```bash # 创建chart目录结构, 仅保留deployment, service, 删除其他对象 helm create nginx # 打成chart包 helm package nginx Successfully packaged chart and saved it to: /root/nginx-0.1.0.tgz ``` ```bash # 基于chart包安装 helm install nginx-0.1.0.tgz --generate-name # 查看部署好的 release helm list ```  ```bash # 调整chart版本并重新打包, 如将 Chart.yaml 中 version 调整为0.1.1 $ helm package nginx Successfully packaged chart and saved it to: /root/nginx-0.1.1.tgz # 升级 release helm upgrade nginx-0-1582344693 nginx-0.1.1.tgz # 查看 releae 历史记录 helm history nginx-0-1582344693 ``` history 如下: ``` REVISION UPDATED STATUS CHART APP VERSION DESCRIPTION 1 Sat Feb 22 12:11:34 2020 superseded nginx-0.1.0 1.16.0 Install complete 2 Sat Feb 22 12:38:09 2020 deployed nginx-0.1.1 1.16.0 Upgrade complete ``` 回滚 ```bash # 回滚到指定版本, 1 是上面的 revision $ helm rollback nginx-0-1582344693 1 Rollback was a success! Happy Helming! ``` 回滚后状态 ``` REVISION UPDATED STATUS CHART APP VERSION DESCRIPTION 1 Sat Feb 22 12:11:34 2020 superseded nginx-0.1.0 1.16.0 Install complete 2 Sat Feb 22 12:38:09 2020 superseded nginx-0.1.1 1.16.0 Upgrade complete 3 Sat Feb 22 12:40:31 2020 deployed nginx-0.1.0 1.16.0 Rollback to 1 ``` 最后查看release的状态 ```bash $ helm status nginx-0-1582344693 NAME: nginx-0-1582344693 LAST DEPLOYED: Sat Feb 22 12:40:31 2020 NAMESPACE: default STATUS: deployed REVISION: 3 TEST SUITE: None ... ``` 删除release ```bash $ helm uninstall nginx-0-1582344693 release "nginx-0-1582344693" uninstalled ``` ``` export HELM_EXPERIMENTAL_OCI=1 helm chart list ``` ## 使用 apphub Demo 以 wordpress 为例,运行一个chart。 ```bash # 检索chart $helm search repo wordpress NAME CHART VERSION APP VERSION DESCRIPTION apphub/wordpress 8.1.3 5.3.2 Web publishing... stable/wordpress 8.1.4 5.3.2 Web publishing... # 安装chart, 生成一个release $helm install apphub/wordpress -g ``` ## Chart 命令参考 > [Helm Commands](https://helm.sh/docs/helm/helm/) ```bash # 检索chart helm search repo stable/mysql # 查看chart信息 helm show chart stable/mysql # 查看chart values.yaml helm show values stable/mysql # 拉取mysql chart helm pull stable/mysql # 将chart目录打成chart压缩包 helm package dirName # 模拟安装 helm install --dry-run --debug demo1 --generate-name ```
本文由
cyj
创作,可自由转载、引用,但需署名作者且注明文章出处。
文章标题:
Helm 入门
文章链接:
https://chenyongjun.vip/articles/137
扫码或搜索 cyjrun 关注微信公众号, 结伴学习, 一起努力