helm2和helm3的区别及helm2的安装使用

1.从Helm2到Helm3

helm是一个k8s应用包管理工具,负责云原生应用的安装部署和生命周期管理

2. Helm2两个主要的组件

  • Tiller:helm的服务端,部署在k8s里面的一个pod,通常在kube-system这个名称空间里,主要负责部署helm charts,管理release,跟k8s APIserver通信。
  • helm Client:helm的客户端,主要负责从公有或者私有charts仓库拉取charts包,然后直接扔给tiller。


    image.png

3.Helm2的问题

  • helm2的主要问题就是需要在k8s集群内运行一个服务端,而这就需要把tiller的端口暴露给外界,容易产生安全隐患。
  • 在helm 2中引入的tiller主要是当时k8s还没有RBAC机制,所以就引入了服务端tiller。
  • 而后来k8s的功能相应完善,加入了RBAC和CRD等,都使得tiller这个东西显得多余。

4.Helm3

helm3只有一个客户端,没有服务端,所以安装起来很方便,把相应程序拉下来即可,不需要helm init安装了。

5. helm2 和helm3架构的变化

  • 最大的变化就是helm3移除了tiller组件,所有功能都通过helm client直接跟APIserver交互通信。
  • helm3中release可以实现不同的namespace空间中复用。
  • 可以将charts推到docker仓库中。

6.Helm2卸载

helm 安装失败 需要删除tiller,关于版本的话 直接覆盖就可以了

# 删除 与tiller相关的secrets,sa,clusterrolebinding
kubectl get -n kube-system secrets,sa,clusterrolebinding -o name|grep tiller|xargs kubectl delete -n kube-system 

# 删除 与helm客户端相关的资源
kubectl get all -n kube-system -l app=helm -o name|xargs kubectl delete -n kube-system

7.Helm2的安装(环境为centos 7.6)

wget https://get.helm.sh/helm-v2.16.2-linux-amd64.tar.gz
tar xf helm-v2.16.2-linux-amd64.tar.gz
cp  linux-amd64/helm  /usr/local/bin/

#查看helm版本,如下,可见客户端版本是2.16.2,由于helm服务端(名为tiller)还没有部署,因此显示"could not find tiller":
helm version
Client: &version.Version{SemVer:"v2.16.2", GitCommit:"bbdfe5e7803a12bbdf97e94cd847859890cf4050", GitTreeState:"clean"}
Error: could not find tiller

7.1 tiller的安装

客户端部署完毕,接下来要把ServiceAccount和角色绑定建好

# 账号与角色绑定
# 创建名为tiller的ServiceAccount:
kubectl create serviceaccount --namespace kube-system tiller

# 把tiller与角色tiller-cluster-rule进行绑定:
kubectl  create clusterrolebinding tiller-cluster-rule --clusterrole=cluster-admin --serviceaccount=kube-system:tiller

# helm初始化,其中tiller的镜像来自阿里云,并且将默认仓库也设置为阿里云的
helm init --upgrade -i registry.cn-hangzhou.aliyuncs.com/google_containers/tiller:v2.16.2 --stable-repo-url https://kubernetes.oss-cn-hangzhou.aliyuncs.com/charts --service-account tiller

# 等待控制台提示成功后再次执行helm version,输出如下,可见helm的服务端已经返回了信息:说明helm已部署完成
# helm version
Client: &version.Version{SemVer:"v2.16.2", GitCommit:"bbdfe5e7803a12bbdf97e94cd847859890cf4050", GitTreeState:"clean"}
Server: &version.Version{SemVer:"v2.16.2", GitCommit:"bbdfe5e7803a12bbdf97e94cd847859890cf4050", GitTreeState:"clean"}

7.2 现在helm已装好,接下来部署个应用试试

helm2常用命令

#查看版本
helm version

#查看当前安装的charts
helm list
#查询 charts
helm search nginx
#安装charts
helm install --name nginx --namespace test aliyun/nginx
#查看charts状态
helm status nginx
#删除charts
helm delete --purge nginx
#增加repo
helm repo add stable https://kubernetes.oss-cn-hangzhou.aliyuncs.com/charts
#更新repo仓库资源
helm repo update
#创建charts
helm create helm_charts
#测试charts语法
helm lint
#打包charts
cd helm_charts && helm package ./
#查看生成的yaml文件
helm template helm_charts-0.1.1.tgz
#更新image
helm upgrade --set image.tag=‘v2019-05-09-18-48-40’ study-api-en-oral myharbor/study-api-en-oral
#回滚relase
helm hist study-api-en-oral
helm rollback study-api-en-oral 4

你可能感兴趣的:(helm2和helm3的区别及helm2的安装使用)