高级 Helm chart 自定义
先决条件
在开始之前,请检查以下先决条件:
- 下载 Istio 发行版4。
- 执行任何必要的特定于平台的设置5。
- 检查 Pod 和 Service 的请求6。
- 使用 helm 进行 Istio 安装7。
- Helm 版本支持后期渲染。(>= 3.1)
- kubectl 或 kustomize。
高级 Helm chart 自定义
Istio 的 Helm chart 尝试结合用户满足其特定需求所需的大部分属性。 然而,它并不包含了所有您可能想要调整 Kubernetes 值。 虽然建立这样的机制并不实际,但在本文档中,我们将演示一种方法, 该方法允许您进行一些高级 Helm chart 自定义, 而无需直接修改 Istio 的 Helm chart。
使用 Helm 和 kustomize 对 Istio Chart 文件进行后期渲染
使用 Helm post-renderer
和 post-renderer
功能,您可以轻松地调整安装清单以满足您的要求。
Post-rendering
可在 Helm 安装前灵活地操作、配置、和/或验证已渲染的清单。
这使得具有高级配置需求的用户可以使用像 Kustomize 这样的工具来应用配置更改,
而不需要原始 Chart 维护人员提供的任何额外支持。
向现有图表添加值
在本例中,我们将为 Istio 的 ingress-gateway
部署添加一个 sysctl
值。我们需要:
- 创建
sysctl
Deployment 自定义补丁模板。 - 使用 Helm 应用补丁
post-rendering
。 - 验证
sysctl
补丁是否已正确应用到 Pod 中。
创建 Kustomization
首先,我们创建一个 sysctl
补丁文件,向 ingress-gateway
Pod 添加一个
securityContext
并附加属性:
下面的 shell 脚本有助于弥补 Helm post-renderer
和 Kustomize 之间的差距,
因为前者适用 stdin/stdout
,而后者适用于文件。
最后,让我们创建 kustomization
yaml 文件,这是 kustomize
的一组资源和相关定制细节的输入。
应用自定义
现在 Kustomization 文件已经准备好了,让我们使用 Helm 来确保它被正确应用。
为 Istio 添加 Helm 存储库
使用 Helm 模板进行渲染和验证
我们可以在 Helm 安装之前使用 Helm post-renderer
来验证渲染的清单。
在输出中,检查 ingress-gateway
Pod 中新增的 sysctl
属性:
使用 Helm 应用补丁 Post-Renderer
使用以下命令来安装 Istio 入口网关,使用 Helm 来应用我们的自定义 post-renderer
:
验证自定义
检查 ingress-gateway Deployment,您将看到新增的 sysctl
值:
附加信息
有关本文档中描述的概念和技术的更多详细信息,请参阅: