Kubernetes - 将 Release.Namespace 设置为 values.yaml 上的依赖项值
Kubernetes - Set Release.Namespace to dependencies values on values.yaml
我知道有很多关于此的问题,但我没有找到真正的答案。
我的 helm chart 依赖于另一个 helm chart,我需要用我的 .Release.Name
和 .Release.Namespace
.
覆盖它们的值
我的requeriments.yaml
dependencies:
- name: keycloak
alias: keycloak-config
repository: https://my-repository.com/
version: 1.0.0
- name: kong
alias: kong-config
repository: https://my-repository.com/
version: 1.0.0
在我的values.yaml
kong-config:
websso:
service:
fullnameOverride: "my-helm._RELEASE_NAMESPACE_.svc.cluster.local"
ckngOauth2Opts: "--data config.post_logout_redirect_uri=/_RELEASE_NAME_
--data config.logout_path=/_RELEASE_NAME_/logout"
我基本上需要在有 _RELEASE_NAME_
的地方使用 {{ .Release.Name }}
和在有 _RELEASE_NAMESPACE_
.
的地方使用 {{ .Release.Namespace }}
我已经试过了:
{{ .Release.Name }}
和 {{ .Release.Namespace }}
$RELEASE_NAME
和 $RELEASE_NAMESPACE
${RELEASE_NAME}
和 ${RELEASE_NAMESPACE}
但没有任何效果。
请注意,我确实需要在 values.yaml
访问这些值。我无权访问我的依赖项代码来更改和设置该值。
我该如何解决这个问题?
虽然 helm 本身似乎无法做到这一点,但 helmfile can via either its integration with kustomize or with its prepare
hook。我将展示 prepare
钩子,因为它更短
releases:
- name: kong-config
chart: whatever/kong
version: 1.0.0
values:
- ./generated-values.yaml
hooks:
- events: ['prepare']
command: bash
args:
- -c
- |
printf 'websso:\n service:\n fullnameOverride: my-helm.{{`{{ .Release.Namespace }}`}}.svc.cluster.local\n' > generated-values.yaml
我解决了这个问题,在我的 helm chart 之外执行了一个额外的命令。因为我有一个用于我的项目构建过程的 Makefile
文件,我可以在其中 运行 一些脚本用于我构建的多个阶段。所以我将此命令添加到部署阶段:
sed -i "s/_RELEASE_NAMESPACE_/$(NAMESPACE)/g" $(MODULE_PATH)/chart/values.yaml
这适用于某些工具中的构建工作流程。但是当我想在某个地方手动安装我的 helm chart 时,它无法完成,我需要用服务器值手动更改该值。
我知道有很多关于此的问题,但我没有找到真正的答案。
我的 helm chart 依赖于另一个 helm chart,我需要用我的 .Release.Name
和 .Release.Namespace
.
我的requeriments.yaml
dependencies:
- name: keycloak
alias: keycloak-config
repository: https://my-repository.com/
version: 1.0.0
- name: kong
alias: kong-config
repository: https://my-repository.com/
version: 1.0.0
在我的values.yaml
kong-config:
websso:
service:
fullnameOverride: "my-helm._RELEASE_NAMESPACE_.svc.cluster.local"
ckngOauth2Opts: "--data config.post_logout_redirect_uri=/_RELEASE_NAME_
--data config.logout_path=/_RELEASE_NAME_/logout"
我基本上需要在有 _RELEASE_NAME_
的地方使用 {{ .Release.Name }}
和在有 _RELEASE_NAMESPACE_
.
{{ .Release.Namespace }}
我已经试过了:
{{ .Release.Name }}
和{{ .Release.Namespace }}
$RELEASE_NAME
和$RELEASE_NAMESPACE
${RELEASE_NAME}
和${RELEASE_NAMESPACE}
但没有任何效果。
请注意,我确实需要在 values.yaml
访问这些值。我无权访问我的依赖项代码来更改和设置该值。
我该如何解决这个问题?
虽然 helm 本身似乎无法做到这一点,但 helmfile can via either its integration with kustomize or with its prepare
hook。我将展示 prepare
钩子,因为它更短
releases:
- name: kong-config
chart: whatever/kong
version: 1.0.0
values:
- ./generated-values.yaml
hooks:
- events: ['prepare']
command: bash
args:
- -c
- |
printf 'websso:\n service:\n fullnameOverride: my-helm.{{`{{ .Release.Namespace }}`}}.svc.cluster.local\n' > generated-values.yaml
我解决了这个问题,在我的 helm chart 之外执行了一个额外的命令。因为我有一个用于我的项目构建过程的 Makefile
文件,我可以在其中 运行 一些脚本用于我构建的多个阶段。所以我将此命令添加到部署阶段:
sed -i "s/_RELEASE_NAMESPACE_/$(NAMESPACE)/g" $(MODULE_PATH)/chart/values.yaml
这适用于某些工具中的构建工作流程。但是当我想在某个地方手动安装我的 helm chart 时,它无法完成,我需要用服务器值手动更改该值。