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 次下载

MIT 许可证

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.ymlparams.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 -

如果参数的 parameterTypebase64,则通过 --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

从源代码构建

  1. 为您的系统安装适当的 Rust 版本。
  2. 运行 git clone [email protected]:jimmycuadra/ktmpl.git
  3. 在刚刚克隆的存储库中,运行 cargo install --path .

确保将 Cargo 的 bin 目录添加到您的 PATH 环境变量中。

开发

要打包当前发布版本以进行分发,更新 Makefile 中的 TAG,然后运行 make。发布工件将写入 dist 目录。您需要 GPG 秘密密钥来签名 sha256sums.txt

将为 jimmycuadra/ktmpljimmycuadra/ktmpl:$TAG 创建 Docker 镜像,但您必须手动推送它们。必须手动运行 cargo publish 来发布到 crates.io。

ktmpl 在 MIT 许可证下发布。有关详细信息,请参阅 LICENSE

依赖项

~3–4.5MB
~71K SLoC