安装:

下载地址:https://github.com/helm/helm/releases

#进入master节点
wget
https://github.com/helm/helm/releases
tar -xvf helm-v3.9.0-linux-amd64.tar.gz
mv linux-amd64/helm /usr/local/bin/
helm version
helm help

 

 

部署完成

 

介绍:

Helm是一个kubernetes的包管理工具,就像Linux下的包管理器,如yum/apt等,可以很方便的将之前打包好的yaml文件部署到kubernetes上。

网上看了很多helm的安装教程,都是helm v2老版安装,还需要安装tiller客户端。在helm更新到v3以后,其删除了tiller客户端;release可以在不同命名空间重用;可将chart推送到docker仓库。

 

helm几大重要概念:

  • helm : 是一个命令行客户端工具
  • Chart: 把yaml 打包,是yaml的集合,采用 TAR 格式。类似于 APT 的 DEB 包或者 YUM 的 RPM 包,其包含了一组定义 Kubernetes 资源相关的 YAML 文件。
  • Release: 使用 helm install 命令在 Kubernetes 集群中部署的 Chart 称为 Release。Helm 中提到的 Release 和我们通常概念中的版本有所不同,这里的 Release 可以理解为 Helm 使用 Chart 包部署的一个应用实例
  • Repository: Helm 的软件仓库,Repository 本质上是一个 Web 服务器,该服务器保存了一系列的 Chart 软件包以供用户下载,并且提供了一个该 Repository 的 Chart 包的清单文件以供查询。Helm 可以同时管理多个不同的 Repository。

设置helm仓库:

helm repo add stable https://kubernetes.oss-cn-hangzhou.aliyuncs.com/charts    #设置仓库
helm repo list #查看仓库

 

 

 helm chart结构:

# 通过helm create命令创建一个新的chart包
$ 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之后展示给用户看的内容
│   ├── serviceaccount.yaml # 服务账号配置
│   ├── service.yaml # kubernetes Serivce yaml 模板
│   └── tests # 测试模块
│       └── test-connection.yaml 
└── values.yaml # 给模板文件使用的变量

chart.yaml:

name: [必须] Chart的名称
version: [必须] Chart的版本号,版本号必须符合 SemVer 2:http://semver.org/
description: [可选] Chart的简要描述
keywords:
  -  [可选] 关键字列表
home: [可选] 项目地址
sources:
  - [可选] 当前Chart的下载地址列表
maintainers: # [可选]
  - name: [必须] 名字
    email: [可选] 邮箱
engine: gotpl # [可选] 模版引擎,默认值是gotpl
icon: [可选] 一个SVG或PNG格式的图片地址

模板:

1)内置对象

对于模板来说,有几个是内置有的对象:

  • Release,就是我们用 install 安装时候生成的,比如Release.Name就是我们用install安装的发布名称(release名称)
  • Values,Chart.yaml文件内容。 Chart.yaml里的任意数据在这里都可以可访问的。比如 {{ .Chart.Name }}-{{ .Chart.Version }} 会打印出 mychart-0.1.0
  • Chart,对应的是 Chart.yaml,用于获取 Chart 相关信息

2)values的三种来源

  • chart的values.yaml文件
  • 由helm install -f 或 helm upgrade -f提供的values文件
  • 在执行helm install 或 helm upgrade 时传递给--set 或 --set-string 参数的values

优先级:--set >-f values_file>values.yaml

3)基础语法

模板中的变量都放在{{}} 中,比如:{{ .Values.images }} 表示 Values 对象下的images 字段

使用-删除空格和换行符

要想删除那行其他的空格和换行符可以用{{-或者-}},一个是删除左边的空格和换行符,一个是删除右边的空格和换行符。

2、运算符
支持运算符:

eq: 等于(equal to)
ne: 不等于(not equal to)
lt: 小于(less than)
le: 小于等于(less than or equal to)
gt: 大于(greater than)
ge: 大于等于(greater than or equal to)

3、条件语句

 

if/else 用法:
{{if 命令}}
...
{{else if 命令}}
...
{{else}}
...
{{end}}

比如:

{{if lt (default .Values.version 1) 5}}

Helm 简单使用

# 先查看,默认是没有配置仓库的
$ helm repo list 
# 如果设置了,就先移除原先的仓库
$ helm repo remove stable
# 添加新的仓库地址(可以添加多个)
$ helm repo add stable https://kubernetes.oss-cn-hangzhou.aliyuncs.com/charts
# 仓库可用的charts
$ helm repo update
# 更新仓库
$ helm search repo
# 指定仓库查看
$ helm search repo stable

 helm使用示例:

templete里我们编写对应的yaml 文件, 外层values.yaml 里可以定义一些公共变量,供templete里的yaml文件使用

 

 

 

 

 

 

 

 

 将weave的svc改成NodePort

 

 

参考文档:

https://www.cnblogs.com/liugp/p/16440583.html

 

posted on 2022-07-05 22:41  EZgod  阅读(131)  评论(0编辑  收藏  举报