hlem 初探

一、 helm 是什么

0.问题引入

1.概念

  • chart: 包含了一组Kubernetes应用创建的必要信息(应用yaml画像)
  • value:包含了应用发布配置信息 (应用配置)
  • release:一组 chart 及其配置的一个运行实例 (应用实例)

2.作用:

  • Kubernetes生态系统中的软件包管理工具

相当于Kubernetes环境下的yum包管理工具

3.用途–类比和架构

  • 创建新的chart
  • 构建chart tgz包
  • 上传chart到helm仓库;从helm仓库下载chart
  • 在kubernetes集群中安装或卸载chart
  • 管理用helm安装应用的发布周期

4.组成

  • Helm Client
  • Tiller Server

client客户端管理 charts,Tiller服务端负责管理release

二、安装helm

0.前提条件

  • 本地kubectl 能正常访问kube-api-server

helm client 默认会读 ~/.kube/config

1.安装helm客户端

wget https://get.helm.sh/helm-v2.16.1-linux-amd64.tar.gz
tar -zxvf helm-v2.0.0-linux-amd64.tgz
mv linux-amd64/helm /usr/local/bin/helm

2.安装Tiller Server

helm init --upgrade --tiller-image sapcc/tiller:v2.16.1

卸载Tiller Server执行: helm reset

验证:等tiller pod running 执行 helm version
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-u1nMPv5u-1593951368142)(/download/attachments/134426261/image.png?version=1&modificationDate=1587545627887&api=v2 ‘image.png’)]

**注意:**尽量helm client和tiller server 版本一致,不然可能会遇到神奇的问题

3.给Tiller 授权

kubectl create serviceaccount --namespace kube-system tiller
kubectl create clusterrolebinding tiller-cluster-rule --clusterrole=cluster-admin --serviceaccount=kube-system:tiller
kubectl patch deploy --namespace kube-system tiller-deploy -p '{"spec":{"template":{"spec":{"serviceAccount":"tiller"}}}}'

验证:部署一组标准helm应用

helm install --name redis --set rbac.create=true stable/redis  #部署一组redis服务
helm list    #查看部署列表

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mgs5YM2E-1593951368144)(/download/attachments/134426261/image.png?version=3&modificationDate=1587546992761&api=v2 ‘image.png’)]

删除验证应用:

helm delete --purge redis

三、写一个简单的helm应用

1.helm create 项目名

git clone https://github.com/zhaohuabing/testapi.git  && cd testapi
helm create testapi-chart
testapi-chart
├── charts
├── Chart.yaml                                  # 这个chart的描述
├── .helmignore                                #  指定不想包含在 helm chart 中的文件列表
├── templates                                   #  项目的Go模板文件
│   ├── deployment.yaml                  ## deployment的基本manifest
│   ├── _helpers.tpl                          ## 模板助手(子模板)
│   ├── ingress.yaml                          ## ingress的基本manifest
│   ├── NOTES.txt                             ## 帮助文本(helm install 显示给用户的部署信息)
│   ├── serviceaccount.yaml             ##  serviceaccount的基本manifest
│   ├── service.yaml                         ##  service的基本manifest
│   └── tests                                    ## test套件(检测chart应用是否符合预期)
│      └── test-connection.yaml        ### 简单的链接测试
└── values.yaml                                # 模板用到的配置变量

2.上传chart至helm仓库(基于腾讯云)
<1>. 创建和添加helm仓库

  • 创建一个私有的tcr, 并开启公网访问
  • 给本地添加helm chart 仓库
helm repo add mychartrepo https://attlee.cloudcr.com/chartrepo/$namesapce --username 101010 --password [实例临时密码]
helm repo update
helm repo list ## 查看是否成功

<2>. 上传chart应用

  • 下载helm push 插件
helm plugin install https://github.com/chartmuseum/helm-push
  • 上传chart 文件
helm push ./mychart mychartrepo
  • 上传chart tgz 包
helm package ${chart-name} --version ${version}  -d ./mychart
helm push mychart-1.2.0.tgz  mychartrepo

<3>. 下载和安装chart应用

helm fetch mychartrepo/mychart --version 1.2.0
helm install -f values.yaml mychartrepo/mychart --version 1.2.0

<4>. 升级和回滚chart应用

helm upgrade mychart mychartrepo/mychart --version 1.2.0 ## 升级chart到指定版本
helm history testapi     ## 查看chart发布历史
helm rollback testapi 2  ## 回滚chart应用到指定历史

四、参考文档

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章