kubetpl - kubernetes 模板管理工具

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

提示:这里可以添加本文要记录的大概内容:

例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。


提示:以下是本篇文章正文内容,下面案例可供参考

Helm、Kustomize、Kubetpl

本人实际没有使用过 Helm 和 Kustomiz 这两款工具,以下的对比,仅个人观点,仅供参考;如果有说的不对的地方,还望指点

Helm

Helm 官方 Doc

在有网络的情况下 Helm 可以很好的进行产品的迭代升级,只需要配置好 repo 仓库,拉取相应版本的 chart 包,修改对应的
values.yaml 文件就可以完成
对于需要快速部署一些主流的中间件或者服务的时候,可以不需要去考虑自己需要准备那些对象(deployment、service、configmap等等),因为仓库里面都有现成的,不需要自己造轮子,拿来就可以用
在没有网络的情况下
比如一些 saas 类型的产品交付公司,在一些银行、证券类的客户现场,大多数的生产环境是不通外网的,在这些苛刻条件下,如果使用 Helm 就会需要涉及 Helm的私仓,相对于交付来说,架构会过于庞大且麻烦

Kustomize
使用 Kustomize 对 Kubernetes 对象进行声明式管理
Kustomize - github

Helm 对于服务的定制仅限于预置变量,那么如果需要更多更灵活的的 YAML 定制就需要用到 Kustomize Kustomize
是一套采用合并思想,对 Kubernetes 原生配置进行管理的工具,使用无模板的方案定义应用配置
允许用户使用一系列的描述文件为基础,然后通过 overlay 的方式生成最终部署应用所需的描述文件

Kubetpl

Kubetpl - github

有点类似于 Helm 的 values.yaml 的方式配置相应的变量,通过预先配置好的 yaml 文件模板,带入变量后生成新的 yaml 文件
可以定制化配置不同场景的模板,不过模板的管理会相对麻烦很多 比较轻量化,不需要任何服务器组件,只是单纯的配置和管理 yaml 文件

安装 Kubetpl

curl -sSL https://github.com/shyiko/kubetpl/releases/download/0.9.0/kubetpl-0.9.0-$(
    bash -c '[[ $OSTYPE == darwin* ]] && echo darwin || echo linux'
  )-amd64 -o kubetpl && chmod a+x kubetpl && sudo mv kubetpl /usr/local/bin/

Kubetpl 命令参数

参数选项
completion - 命令行参数自动补齐
help - 命令帮助
render - 渲染模板

completion - 参数自动补齐

可选参数:bash 和 zsh

# bash
source <(kubetpl completion bash)

# zsh
source <(kubetpl completion zsh)

go-template 语法

本人没有接触过 go 语言,临时找了一些资料来学习一些简单的使用
go 语言的变量好像是不支持 - 出现在变量名称内的go语言使用的是驼峰命名,不然可能会有这样的报错:
emplate: nginx-template.yaml:3: unexpectedbad character U+002D ‘-’ in range

注释

{{/* 注释 */}}

引用变量
输出 hostAlias 变量的值

{{ .hostAlias }}

当 hostAlias 是匿名字段时,可以访问其内部字段或方法

{{ .hostAlias.ip }}

如果需要引用外部变量,需要在前面加上 $ 符号

{{ $.hostAlias }} 

在 template 中定义变量

变量名称前面需要带上 $ 符号

使用 := 来对变量赋值

{{ $x := "hello" }}

定义变量的值引用其他变量的值

{{ $x := .hostAlias }}

条件判断
if 后面可以是一个条件表达式(包括管道函数表达式。pipeline 即管道)
也可以是一个字符串变量或布尔值变量
当为字符串变量时,如为空字符串则判断为 false,否则判断为 true

{{ if .hostAlias }}
- ip: {{ .ip }}
  hostnames: {{ .hostnames }}
{{ end }}

遍历
普通用法,当变量值存在时才会有后面的内容输出

{{ range $.hostAliases }}
- ip: {{ .ip }}
  hostnames: {{ .hostnames }}
{{ end }}

另一种用法

{{ range $k,$v := .labels }}
{{ $k }}: {{ $v }}
{{ end }}
  • 12
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值