#helm #kubernetes #render #environments #charts #explicit #configuration

app helm-templexer

使用显式配置渲染多个环境中的 Kubernetes Helm 图表,同时保持开销最小

24 个版本 (9 个稳定版本)

2.0.7 2023年5月9日
2.0.6 2022年12月19日
2.0.1 2022年9月27日
2.0.0 2021年9月9日
0.1.1-alpha2020年7月27日

#163 in 命令行实用工具

Download history 3/week @ 2024-03-10 102/week @ 2024-03-31

每月 78 次下载

MIT 许可证

55KB
907

⎈ Helm Templexer

crates.io

使用显式配置渲染多个环境中的 Helm 图表,同时保持开销最小。

helm-templexer 封装了 Helm v3+,请确保已安装并添加到 PATH

cat > my-app.yaml <<EOF
version: v2
chart: tests/data/nginx-chart
release_name: my-app
output_path: manifests
deployments:
  - name: edge
  - name: stage
  - name: prod
EOF

helm-templexer render my-app.yaml

结果

❯ exa -T manifests
manifests
├── edge
│  └── my-app
│     └── manifest.yaml
├── prod
│  └── my-app
│     └── manifest.yaml
└── stage
   └── my-app
      └── manifest.yaml

配置

配置可以以 YAML 格式提供。

所有路径在执行期间相对于配置文件进行评估。

查找 v1 架构?请参阅 helm-templexer 1.x

参数 描述 条件 默认值 示例
version 要使用的架构版本 必需 "v2"
enabled 是否渲染部署 可选 true
chart 要渲染的图表的路径 必需 "path/to/some-chart"
namespace 传递给 helm 的命名空间;如果省略,则不传递命名空间 可选 ""
release_name 传递给 helm 的发布名称 必需 "some-release"
output_path 用于将清单写入磁盘的基本路径。

完全限定的输出路径按如下方式构建(config 指的是顶层)
config.output_path/deployment.name/<[config/deployment].release_name>/manifest.yaml
必需
additional_options 传递给 helm template 的附加选项;您可以使用工具的所有受支持选项。

常见用法:使用 --set-string 提供要使用的容器标签。
这可以通过使用 mikefarah/yq 修改构建管道中的配置文件来实现
可选 [] ["--set-string image.tag=42"]
values 传递给每个 helm template 调用的基本值文件列表。
这通常用于提供一个合理的默认配置。
可选 []
部署 要渲染的部署列表。 必需 [[部署]]
name= "边缘"

部署可以覆盖几个顶级字段

参数 描述 条件 默认值 示例
name 部署名称;仅在输出路径中使用 必需 "edge-eu-w4"
enabled 允许禁用单个部署 可选 true
release_name 覆盖发布名称 可选 ""
additional_options 如上所示,但特定于此部署的附加选项 可选 []
values 用于此部署的值文件 可选 []

渲染命令的附加选项

扩展 helm template 调用

使用 --additional-options 将数据传递给底层的 helm template 调用。请注意,这些附加选项会添加到 每个 调用中,即每个部署。

我们找到的一个常见用例是提供容器标签

helm-templexer render --additional-options="--set-string image.tag=${revision}" my-app.yaml

渲染部署的子集

使用 --filter 来渲染特定的部署。例如:要渲染只有 prod,将正则表达式传递给过滤器选项。

helm-templexer render --filter="prod" my-app.yaml

在渲染部署之前更新 Helm 依赖项

使用 --update-dependencies 来运行 helm dependencies update 一次 在开始渲染部署之前。

helm-templexer render --update-dependencies my-app.yaml

在写入磁盘之前通过工具(工具集)将清单输出

使用 --pipe 将清单输出通过一个工具或工具集传递,然后再写入文件。

请注意,此选项 需要 等号(=),即 `--pipe=""。

helm-templexer render --pipe="kbld -f -" my-app.yaml

您可以多次定义参数;命令将按出现顺序添加到最终命令中。

helm-templexer render --pipe="kbld -f -" --pipe="tee /dev/stdout" my-app.yaml

如果发生任何意外情况,您可以使用 -v-vv-vvv 来增加日志级别并查看底层命令。

安装

Docker

# create the directory where helm-templexer will render to
mkdir -p tests/data/manifests

# let helm-templexer's user id (1001) own the directory
sudo chown -R 1001 tests/data/manifests

# pull and run the image
docker pull ghcr.io/hendrikmaus/helm-templexer
docker run --rm --volume $(pwd):/srv --workdir /srv/tests/data ghcr.io/hendrikmaus/helm-templexer render config_example.yaml 

helm-templexer 包含到您的 Dockerfile

FROM ghcr.io/hendrikmaus/helm-templexer AS helm-templexer-provider
COPY --from=helm-templexer-provider /usr/bin/helm-templexer /usr/bin
COPY --from=helm-templexer-provider /usr/bin/helm /usr/bin

预编译的二进制文件

请根据需要设置/替换 $TARGET$VERSION

wget https://github.com/hendrikmaus/helm-templexer/releases/download/v$VERSION/helm-templexer-$VERSION-$TARGET.tar.gz -O - | tar xz && mv helm-templexer /usr/bin/helm-templexer

例如 VERSION=2.0.0TARGET=aarch64-apple-darwin

mv/usr/bin 可能需要 sudo

与校验和验证

为了验证下载的 存档 与校验和

wget https://github.com/hendrikmaus/helm-templexer/releases/download/v$VERSION/helm-templexer-$VERSION-$TARGET.tar.gz
echo "$(wget https://github.com/hendrikmaus/helm-templexer/releases/download/v$VERSION/helm-templexer-$VERSION-$TARGET.tar.gz.sha256 -O -) helm-templexer-$VERSION-$TARGET.tar.gz" | sha256sum --check --strict --status

Homebrew

brew tap hendrikmaus/tap
brew install helm-templexer

Cargo 安装

Helm Templexer是用 Rust 编写的。您需要 rustc 版本 1.35.0 或更高。安装 Rust 的推荐方法是来自官方网站。一旦设置好,简单的 make install 命令将编译 helm-templexer 并将其安装到 $HOME/.cargo/bin

如果您正在使用 Cargo 的最新版本(0.5.0 或更高),您可以使用 cargo install 命令

cargo install helm-templexer

货物将构建二进制文件并将其放置在 $HOME/.cargo/bin(此位置可以通过设置--root选项来覆盖)。

依赖项

~8–18MB
~227K SLoC