k8s系列-helm

2022-12-23 21:24:54 浏览数 (1)

helm 介绍

Helm 是 Kubernetes 的包管理器,Helm 由客户端组件 helm 和服务端组件 Tiller 组成, 能够将一组K8S资源打包统一管理。

Helm 三大核心概念:

  • chart:Helm的打包格式叫做chart,所谓chart就是一系列文件, 它描述了一组相关的 k8s 集群资源
  • release:使用 helm install 命令在 Kubernetes 集群中部署的 Chart 称为 Release
  • Tiller:是 Helm 的服务端,Tiller 负责接收 Helm 的请求,与 k8s 的 apiserver 交互,根据chart 来生成一个 release 并管理 release
  • Repoistory:Helm chart 的仓库,Helm 客户端通过 HTTP 协议来访问存储库中 chart 的索引文件和压缩包

helm 架构图:

helm 安装

安装helm的前提是机器已经安装了K8S

代码语言:javascript复制
#对应自己k8s版本号
wget https://get.helm.sh/helm-v3.6.1-linux-amd64.tar.gz 
tar xf helm-v3.8.1-linux-amd64.tar.gz
cp linux-amd64/helm /usr/local/bin/helm
chmod  x /usr/local/bin/helm

配置镜像仓库:

代码语言:javascript复制
# 查看helm镜像仓库 
helm repo list
# 添加镜像仓库
helm repo add aliyun https://kubernetes.oss-cn-hangzhou.aliyuncs.com/charts  
# 刷新镜像仓库
helm repo update 

Helm指令表

代码语言:javascript复制
# 查看helm 版本
helm version

# 查看环境变量
helm env

# 检索chart包
helm search repo keyword

# 查看当前部署的所有 release
helm list

# 安装 release
helm install releaseName chartName

# 卸载release
helm uninstall releaseName

# 升级release
helm upgrade releaseName chartName

# 回滚release
helm rollback releaseName revision

# 查看release的基本信息
helm status releaseName

# 查看release的发布历史
helm history releaseName

# 查看添加的chart仓
 helm repo list

 # 本地添加chart仓库
 helm repo add repoName URL

 # 本地删除chart仓库
 helm repo remove repoName

 # 更新本地仓库
 helm repo update

 # 查看chart包中的chart.yaml文件内容
 helm show chart chartName

# 查看release 信息
 helm get all releaseName

自制 chart

首先需要一个准备部署的docker镜像,docker镜像制作的方法往期文章中有介绍。然后执行指令:

代码语言:javascript复制
helm create test

会得到一个 helm 自动生成的空 chart。它 Chart 的文件夹目录如下:

代码语言:javascript复制
test
├── charts
├── Chart.yaml
├── templates
│   ├── deployment.yaml
│   ├── _helpers.tpl
│   ├── ingress.yaml
│   ├── NOTES.txt
│   └── service.yaml
└── values.yaml

在根目录下的Chart.yaml 文件内,声明了当前 Chart 的名称、版本等基本信息,这些信息会在该 Chart 被放入仓库后提供检索。templates下的文件从命名我们就能知道是k8s的配置文件。我们按照创建容器控制器的经验就能生成这些文件。values.yaml 提供了应用在安装时的默认参数。

改好配置文件后使用指令:

代码语言:javascript复制
helm lint --strict test

检查配置文件是否有语法错误。

然后使用指令:

代码语言:javascript复制
helm package 

打包 chart,打包后会生成 test.tgz 的应用包。

使用指令:

代码语言:javascript复制
 helm install test test.tgz 

安装helm包,会在你的k8s集群里面生成对应的pod等程序。

0 人点赞