helm 安装使用

一、介绍

Helm是Kubernetes的一个包管理工具,用来简化Kubernetes应用的部署和管理。可以把Helm比作CentOS的yum工具。

yum不光要解决包之间的依赖关系,还要提供具体的程序包。但是helm仓库里面只有配置清单文件,而没有镜像,镜像还是由镜像仓库来提供,比如hub.docker.com等;

Helm有如下几个基本概念:

  • Chart: 是Helm管理的安装包,里面包含需要部署的安装包资源。可以把Chart比作CentOS yum使用的rpm文件。每个Chart包含下面两部分:
    • 包的基本描述文件Chart.yaml
    • 放在templates目录中的一个或多个Kubernetes manifest文件模板
  • Release:是chart的部署实例,一个chart在一个Kubernetes集群上可以有多个release,即这个chart可以被安装多次
  • Repository:chart的仓库,用于发布和存储chart

helm提供了一个应用所需要的所有清单文件。比如对于一个nginx,我们需要一个deployment的清单文件、一个service的清单文件、一个hpa的清单文件。我们把这三个文件打包到一起,就是一个应用程序的程序包,我们称之为Chart。

Helm把Kubernetes资源(比如deployments、services或 ingress等) 打包到一个chart中,而chart被保存到chart仓库。通过chart仓库可用来存储和分享chart。

helm是工作在k8s集群之外的。helm不直接操作apiserver,而是和Tiller交互。Tlller再和apiserver交互,最后由Apiserver把chart使用config赋值(值文件),最后部署成为release。

在helm工作中,helm先去检查chart是否存在,存在就把chart下载到helm本机当前用户的家目录下。然后helm把chart交给tiller,tiller再和api server交互。api server一旦把chart部署在k8s集群上,就不再叫chart了,而叫release。

所以,一个chart赋值不同,完全可以部署出多个release出来的,所以我们可以把chart看做是一个安装包的模板。

如果发现chart更新了,helm就自动滚动更新,而且helm还支持一键回滚的操作。

image

二. 安装helm

github

wget http://storage.googleapis.com/kubernetes-helm/helm-v2.14.0-rc.2-linux-amd64.tar.gz

tar xvf helm-v2.14.0-rc.2-linux-amd64.tar.gz

cd linux-amd64/

mv helm /usr/bin/

三、部署Tiller

(1)Tiller运行在k8s集群之上,也必须拥有集群的管理权限,也就是需要一个serviceaccount,创建一个clusterrolebinding到cluster-admin

rbac配置示例文件: 配置文件

rbac-config.yaml

apiVersion: v1
kind: ServiceAccount
metadata:
  name: tiller
  namespace: kube-system
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: tiller
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: cluster-admin
subjects:
  - kind: ServiceAccount
    name: tiller
    namespace: kube-system
$ kubectl create -f rbac-config.yaml
serviceaccount "tiller" created
clusterrolebinding "tiller" created
[root@node1 ~]# helm init --service-account tiller --upgrade -i registry.cn-hangzhou.aliyuncs.com/google_containers/tiller:v2.9.1 --stable-repo-url http://kubernetes.oss-cn-hangzhou.aliyuncs.com/charts

每个节点执行以下操作  yum install -y socat 

[root@node1 ~]# helm version
Client: &version.Version{SemVer:"v2.14.0-rc.2", GitCommit:"05811b84a3f93603dd6c2fcfe57944dfa7ab7fd0", GitTreeState:"clean"}
Server: &version.Version{SemVer:"v2.9.1", GitCommit:"20adb27c7c5868466912eebdf6664e7390ebe710", GitTreeState:"clean"}
[root@node1 ~]# kubectl get pods -n kube-system grep tiller
tiller-deploy-8665684d44-xpprw 1/1 Running 0 3m6s

四、使用helm

官方可用的Chart仓库列表: 地址

helm常用命令:

  • helm search: 搜索charts
  • helm fetch: 下载charts到本地目录
  • helm install: 安装charts
  • helm list: 列出charts的所有版本

用法:
helm [command]

命令可用选项:
- completion 为指定的shell生成自动补全脚本(bash或zsh)
- create 创建一个新的charts
- delete 删除指定版本的release
- dependency 管理charts的依赖
- fetch 下载charts并解压到本地目录
- get 下载一个release
- history release历史信息
- home 显示helm的家目录
- init 在客户端和服务端初始化helm
- inspect 查看charts的详细信息
- install 安装charts
- lint 检测包的存在问题
- list 列出release
- package 将chart目录进行打包
- plugin add(增加), list(列出), or remove(移除) Helm 插件
- repo add(增加), list(列出), remove(移除), update(更新), and index(索引) chart仓库
- reset 卸载tiller
- rollback release版本回滚
- search 关键字搜索chart
- serve 启动一个本地的http server
- status 查看release状态信息
- template 本地模板
- test release测试
- upgrade release更新
- verify 验证chart的签名和有效期
- version 打印客户端和服务端的版本信息

Helm 安装时已经默认配置好了两个仓库:stable 和 localstable 是官方仓库,local 是用户存放自己开发的chart的本地仓库。

[root@node1 ~]# helm repo list
NAME URL 
stable http://kubernetes.oss-cn-hangzhou.aliyuncs.com/charts
local http://127.0.0.1:8879/charts

helm 安装使用
http://www.jcwit.com/article/155/
作者
Carlos
发布于
2019年5月16日
许可协议