11 个版本 (7 个重大更新)
0.9.1 | 2021 年 8 月 19 日 |
---|---|
0.9.0 | 2019 年 3 月 3 日 |
0.8.0 | 2018 年 3 月 3 日 |
0.7.0 | 2017 年 3 月 24 日 |
0.1.0 | 2016 年 2 月 25 日 |
#315 在 配置
每月 21 次下载
38KB
781 行
ktmpl
ktmpl 是一个处理 Kubernetes 清单模板的工具。它是对 Templates + Parameterization 提案 的一个非常简单的客户端实现。
概要
ktmpl 0.6.0
Produces a Kubernetes manifest from a parameterized template
USAGE:
ktmpl [OPTIONS] <template>
FLAGS:
-h, --help Prints help information
-V, --version Prints version information
OPTIONS:
-b, --base64-parameter <NAME> <VALUE>
Same as --parameter, but for values already encoded in Base64
-p, --parameter <NAME> <VALUE>
Supplies a value for the named parameter
-f, --parameter-file <PARAMETER_FILE>...
Path to a YAML file with parameter values
-s, --secret <NAME> <NAMESPACE>
A secret to Base64 encode after parameter interpolation
ARGS:
<template> Path to the template file to be processed (use "-" to read from stdin)
用法
运行 ktmpl TEMPLATE
,其中 TEMPLATE 是 YAML 格式的 Kubernetes 清单模板的路径。包含的 example.yml 是一个工作示例模板。
要为模板参数提供值,请使用 --parameter
、--base64-parameter
或 --parameter-file
选项。
包含的 example.yml
和 params.yml
文件将在以下示例中使用。
使用 --parameter
选项
ktmpl example.yml --parameter MONGODB_PASSWORD secret
使用 --parameter-file
选项
ktmpl example.yml --parameter-file params.yml
参数文件必须包含一个或多个 YAML 文档。每个文档必须是一个具有字符串键和字符串值的 YAML 哈希,分别对应模板参数及其值。
在参数文件中,如果同一个参数定义了多次,则将使用最后一次定义的值。通过 --parameter
选项提供的参数值将覆盖通过参数文件定义的任何值。
具有默认值的模板参数可以使用相同的机制进行覆盖
ktmpl example.yml --parameter MONGODB_USER carl --parameter MONGODB_PASSWORD secret
处理后的模板将被输出到 stdout,适合通过管道传递到 kubectl
命令
ktmpl example.yml --parameter MONGODB_PASSWORD password | kubectl create -f -
如果参数的 parameterType
是 base64
,则通过 --parameter
传递给该参数的值将在插入模板之前进行 Base64 编码。如果通过 --parameter
传递的值已经 Base64 编码,因此再次编码会导致错误,则使用 --base64-parameter
选项代替
ktmpl example.yml --base64-parameter MONGODB_PASSWORD c2VjcmV0 | kubectl create -f -
当处理 Kubernetes 机密或在需要二进制或不透明数据的地方工作时,这可能会很有用。通过参数文件提供的值始终被视为纯字符串,因此对于已经 Base64 编码的值,需要 --base64-parameter
选项。
当处理包含参数以及字面文本的 Kubernetes 机密值,例如包含密码的配置文件时,使用 --secret
选项是有用的。例如,使用提供的 secret_example.yml 模板
ktmpl secret_example.yml --parameter PASSWORD narble --secret webapp default
"webapp" 是机密的名称,"default" 是机密的命名空间。这将导致 ktmpl 在正常参数替换步骤之后,将名为机密的哈希数据中的每个值进行 Base64 编码。当使用 --secret
选项时,您可能不希望将 base64
作为机密中任何参数的 parameterType
,因为整个值将在替换后进行 Base64 编码。如果使用 --secret
选项命名的 Kubernetes 机密在模板中未找到,ktmpl 将会出错退出。
也可以通过使用 -
作为文件名来通过 stdin 提供模板,而不是使用命名的文件。
cat example.yml | ktmpl - --parameter MONGODB_PASSWORD password | kubectl create -f -
安装 ktmpl
Homebrew
brew install ktmpl
Cargo
cargo install ktmpl
预编译的二进制文件
Docker
docker pull jimmycuadra/ktmpl
从源代码构建
- 为您的系统安装适当的 Rust 版本。
- 运行
git clone [email protected]:jimmycuadra/ktmpl.git
。 - 在刚刚克隆的存储库中,运行
cargo install --path .
。
确保将 Cargo 的 bin 目录添加到您的 PATH 环境变量中。
开发
要打包当前发布版本以进行分发,更新 Makefile 中的 TAG
,然后运行 make
。发布工件将写入 dist
目录。您需要 GPG 秘密密钥来签名 sha256sums.txt
。
将为 jimmycuadra/ktmpl
和 jimmycuadra/ktmpl:$TAG
创建 Docker 镜像,但您必须手动推送它们。必须手动运行 cargo publish
来发布到 crates.io。
法律
ktmpl 在 MIT 许可证下发布。有关详细信息,请参阅 LICENSE
。
依赖项
~3–4.5MB
~71K SLoC