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-alpha | 2020年7月27日 |
#163 in 命令行实用工具
每月 78 次下载
55KB
907 行
⎈ Helm Templexer
使用显式配置渲染多个环境中的 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.0
和 TARGET=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