Helm应用详解--K8S

构建一个 Chart
1. Chart 文件结构
chart 是一个组织在文件目录中的集合。目录名称就是chart名称。因而描述WordPress的chart可以存储在wordpress/目录中。

在这个目录中,Helm 期望可以匹配以下结构:

wordpress/
  Chart.yaml          # 包含了chart信息的YAML文件
  LICENSE             # 可选: 包含chart许可证的纯文本文件
  README.md           # 可选: 可读的README文件
  values.yaml         # chart 默认的配置值
  values.schema.json  # 可选: 一个使用JSON结构的values.yaml文件
  charts/             # 包含chart依赖的其他chart
  crds/               # 自定义资源的定义
  templates/          # 模板目录, 当和values 结合时,可生成有效的Kubernetes manifest文件
  templates/NOTES.txt # 可选: 包含简要使用说明的纯文本文件

Helm保留使用 charts/,crds/, templates/目录,以及列举出的文件名。其他文件保持原样

2. Chart.yaml 文件
Chart.yaml文件是chart必需的。包含了以下字段:

apiVersion: chart API 版本 (必需)
name: chart名称 (必需)
version: 语义化2 版本(必需)
kubeVersion: 兼容Kubernetes版本的语义化版本(可选)
description: 一句话对这个项目的描述(可选)
type: chart类型 (可选)
keywords:
  - 关于项目的一组关键字(可选)
home: 项目home页面的URL (可选)
sources:
  - 项目源码的URL列表(可选)
dependencies: # chart 必要条件列表 (可选)
  - name: chart名称 (nginx)
    version: chart版本 ("1.2.3")
    repository: (可选)仓库URL ("https://example.com/charts") 或别名 ("@repo-name")
    condition: (可选) 解析为布尔值的yaml路径,用于启用/禁用chart (e.g. subchart1.enabled )
    tags: # (可选)
      - 用于一次启用/禁用 一组chart的tag
    import-values: # (可选)
      - ImportValue 保存源值到导入父键的映射。每项可以是字符串或者一对子/父列表项
    alias: (可选) chart中使用的别名。当你要多次添加相同的chart时会很有用
maintainers: # (可选)
  - name: 维护者名字 (每个维护者都需要)
    email: 维护者邮箱 (每个维护者可选)
    url: 维护者URL (每个维护者可选)
icon: 用做icon的SVG或PNG图片URL (可选)
appVersion: 包含的应用版本(可选)。不需要是语义化,建议使用引号
deprecated: 不被推荐的chart (可选,布尔值)
annotations:
  example: 按名称输入的批注列表 (可选).

Helm 部署及常用命令
1. 部署 Helm 客户端
Helm 客户端下载地址:https://github.com/helm/helm/releases
安装方法:

wget https://get.helm.sh/helm-v3.5.1-linux-amd64.tar.gz 
tar -zxvf helm-v3.5.1-linux-amd64.tar.gz  
mv linux-amd64/helm /usr/local/sbin/

2. Helm 常用命令
命令    描述
create    创建一个 chart 并指定名字
dependency    管理 chart 依赖
get    下载一个 release,可用子命令:all,hooks,manifest,notes,values
history    获取 release 历史
install    安装一个 chart
list    列出 release
package    将 chart 目录打包到 chart 存档文件中
pull    从远程仓库中下载 chart 并解压到本地:helm pull stable/mysql --untar
repo    添加,列出,移除,更新和索引 chart 仓库。可用子命令:add,index,list,remove,update
rollback    从之前版本回滚
search    根据关键字搜索 chart。可用子命令:all,chart,readme,values
status    显示已命名版本的状态
template    本地呈现模板
uninstall    卸载一个 release
upgrade    更新一个 release
version    查看 helm 客户端版本
3. 配置国内 Chart 仓库
微软 chart 仓库:https://mirror.azure.cn/kubernetes/charts/
阿里 cahrt 仓库:https://apphub.aliyuncs.com/
官方 chart 仓库:https://hub.kubeapps.com/charts/incubator

添加 chart 库:

helm repo add stable https://mirror.azure.cn/kubernetes/charts/ 
helm repo add aliyun https://apphub.aliyuncs.com/
helm repo update
 

查看配置的 chart 库:

helm repo list 
helm search repo stable
 

删除 cahrt 库:

helm repo remove aliyun 

4. Helm 基本使用
4.1. 使用 chart 部署一个应用
查找 chart:
helm search repo
helm search repo mysql

查看 cahrt 信息:
helm show chart stable/mysql

安装包:
helm install mysql stable/mysql

查看发布状态:
helm status mysql

4.2. 安装前自定义 chart 配置选项
上面部署的 mysql 并没有成功,这是因为并不是所有的 chart 都能安装默认配置并运行成功,可能会需要一些环境依赖,例如:PV


所以我们需要自定义 chart 配置选项,安装过程中有两种方法可以传递配置数据:

--values (或 -f):指定带有覆盖的 YAML 文件。这可以多次指定,最右边的文件优先
--set:在命令行上指定代替。如果两者都用,--set 优先级最高
--values 使用,先将修改的变量写到一个文件中:

# helm show values stable/mysql 
# cat config.yaml 

persistence: 
  enabled: true 
  stroageClass: "managed-nfs-storage" 
  accessMode: ReadWriteOnce
  size: 8Gi 
mysqlUser: "k8s" 
mysqlPassword: "123456" 
mysqlDatabase: "k8s"

# helm install mysql -f config.yaml stable/mysql 
# kubectl get pods 

说明:以上将创建具有名称的默认 MySQL 用户 k8s,并授予此用户访问新创建的 k8s 数据库的权限,但将接受该图表其余默认值。

--set使用,命令行替代变量:

helm install mysql --set persistence.storageClass="managed-nfs-storage" stable/mysql

values.yaml 与 set 使用:

vaues.yaml    set
name: value    --set name=value
a: b
c: d    --set a=b,c=d
outer:
  inner: value    --set outer.inner=value
name:
  - a
  - b
  - c    
--set name={a,b,c}
servers:
  - port: 80    --set servers[0].port=80
servers:
  - port: 80
    host: example    
--set servers[0].port=80,servers[0].host=example
nodeSelector:
  kubernetes.io/role: master    --set nodeSelector."kubernetes\.io\/role"=master
说明:helm install 命令可以从多个来源安装

chart 的仓库
本地 chart 压缩包helm install foo foo-0.1.1.tgz
解压后的 chart 目录helm install foo path/to/foo
完整的 URLhelm install foo https://example.com/charts/foo-1.2.3.tgz
应用升级,回滚和删除
1. Helm 升级
该命令将发布升级到新版的chart。

升级参数必须是发布和chart。chart参数可以是:chart引用(‘example/mariadb’),chart目录路径,打包的chart或者完整URL。 对于chart引用,除非使用’–version’参数指定,否则会使用最新版本。

helm upgrade [RELEASE] [CHART] [flags]

可以多次指定--values/-f参数,最后(最右边)指定的文件优先级最高。比如如果myvalues.yaml和override.yaml同时包含了名为 Test的key,override.yaml中的设置会优先使用:
helm upgrade -f myvalues.yaml -f override.yaml redis ./redis

可以多次指定 --set 参数,最后(最右边)指定的优先级最高。比如bar 和 newbar 都设置了一个名为foo的可以, newbar的值会优先使用:
helm upgrade --set foo=bar --set foo=newbar redis ./redis

2. Helm 回滚
该命令回滚发布到上一个版本

回滚命令的第一个参数是发布的名称,第二是修订(版本)号,如果省略此参数,会回滚到上一个版本。

要查看修订号,执行helm history RELEASE

helm rollback <RELEASE> [REVISION] [flags]

3. Helm 卸载
该命令使用版本名称卸载版本

会删除与最新版本chart相关的所有资源以及发布历史,释放以供将来使用

使用--dry-run参数查看哪些版本将在不实际卸载的情况下能够被卸载

helm uninstall RELEASE_NAME [...] [flags]
 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值