Helm简介

 
我们可以将Helm看作Kubernetes下的Maven/NPM. Python下的pip,Linux上的yum, Helm是Deis(https://deis.com/)
开发的一个用于kubernetes的包管理器,每个包称为一个Chart,一个Chart是一个目录(一般情况下会将目录进行打包压缩,形成name version.tgz格式的单一文件,方便传输和存储)
对于应用发布者而言,可以通过Helm打包应用, 管理应用依赖关系,管理应用版本并发布应用到软件仓库。
对于使用者而言,使用Helm后不用需要了解Kubernetes的Yaml语法并编写应用部署文件,可以通过Helm下载并在kubernetes上安装需要的应用,
除此以外,Helm还提供了kubernetes上的软件部署,删除,升级, 回滚应用的强大功能

 

  • helm v2 版本
    包含两个组件,分别是 helm 客户端 和 Tiller 服务器,
    helm 是一个命令行工具,用于本地开发及管理chart,chart仓库管理等
    Tiller 负责接收 Helm 的请求,与 k8s 的 apiserver 交互
  • helm v3 版本
    移除了Tiller helm直接和K8s交互
    SA通过 kuberconfig 配置认证

    • 设计原理
      它是一个线程的方式运行
      1. Helm-cotroller 运行在master节点并list/walch HelmChart CRD对象
      2. CRD onChange时执行Job更新
      3. Job Container使用rancherklilpper-helm为entrypoint
      4. Killper-helm内 thelm cli,可以安装/升级/删除对应的chart

环境前提:
已经安装k8s
熟练使用kubectl及yaml配置文件

安装Helm3

# 去Git下载 Helm 二进制文件(Git地址)
# 下载不了的使用我网盘下好的 (helm-v3.2.0-rc.1-linux-amd64.tar.gz 提取码:ij5m )

tar -zxvf helm-v3.2.0-rc.1-linux-amd64.tar.gz
# 复制 helm 二进制 到bin目录下
cp linux-amd64/helm /usr/local/bin/
 
设置环境变量KUBECONFIG来指定存有ApiServre的地址与token的配置文件地址,默认为~/.kube/config

export KUBECONFIG=/root/.kube/config

Helm3安装及使用
 

Helm3配置

# 配置helm3仓库
helm repo add repo_name1 https://aliacs-app-catalog.oss-cn-hangzhou.aliyuncs.com/charts-incubator/
# 配置helm3仓库(忽略:此处就想试试能否加多个仓库)
helm repo add stable https://kubernetes.oss-cn-hangzhou.aliyuncs.com/charts
# 更新
helm repo update
helm repo list

Helm3安装及使用
 

Helm3 使用

# 生成chart文件 此处会生成一个 nginx的目录 如下:
helm create nginx
tree nginx/
.
nginx/
├── charts   #依赖其他包的charts文件
├── Chart.yaml   # 该chart的描述文件,包括ico地址,版本信息等
├── templates   #存放k8s模板文件目录
│   ├── deployment.yaml   #创建k8s资源的yaml 模板
│   ├── _helpers.tpl   #下划线开头的文件,可以被其他模板引用.
│   ├── hpa.yaml   # 配置服务资源CPU 内存
│   ├── ingress.yaml   # ingress 配合service域名访问的配置
│   ├── NOTES.txt   #说明文件,helm install之后展示给用户看的内容
│   ├── service.yaml   #kubernetes Serivce yaml 模板
└── values.yaml   #给模板文件使用的变量


# 修改values.yam 里的service的type为 NodePort
# 安装chart任务 (注意后面有个点)
helm install -f values.yaml nginx1 .

# 查询release
helm ls
helm list
# 删除release
helm delete nginx1
 
Helm3安装及使用_第1张图片

Helm3安装及使用
 

验证服务

通过K8S命令查看下 服务是否成功启动
访问 k8s_node_IP:31281

Helm3安装及使用_第2张图片

Helm3安装及使用_第3张图片