如何在 kustomize 中使用生成的 env configMap 条目作为 var?

eve*_*zon 5 openshift kubernetes kustomize

我有一个生成的配置图

configMapGenerator:
  - name: template-vars
    envs:
      - templateVars.env
Run Code Online (Sandbox Code Playgroud)

并想使用其中包含的值之一

ROUTE_HOST=somewhere.else.org
Run Code Online (Sandbox Code Playgroud)

作为变量

vars:
  - name: ROUTE_HOST
    objref:
      kind: ConfigMap
      name: template-vars
      apiVersion: v1
    fieldref:
      fieldpath: data.ROUTE_HOST
Run Code Online (Sandbox Code Playgroud)

在我的 OCP 路线中

apiVersion: route.openshift.io/v1
kind: Route
spec:
  host: $(ROUTE_HOST)
Run Code Online (Sandbox Code Playgroud)

这可能吗?

我知道我可以用环境变量做一些几乎相同的事情:

env:
  - name: ROUTE_HOST
    valueFrom:
      configMapKeyRef:
        name: template-vars
        key: ROUTE_HOST
Run Code Online (Sandbox Code Playgroud)

ITC*_*hap 6

是的,这是可能的。我目前为大多数 ingresses 主机执行此操作。默认情况下,var 插件不适用于所有资源的所有字段。为了让 kustomize$(ROUTE_HOST)在您的资源中插入,您需要向您的文件添加配置kustomization.yaml

kustomization.yaml:

configMapGenerator:
  - name: template-vars
    envs:
      - templateVars.env

vars:
  - name: ROUTE_HOST
    objref:
      kind: ConfigMap
      name: template-vars
      apiVersion: v1
    fieldref:
      fieldpath: data.ROUTE_HOST

configurations:
  - transformer_config.yaml
Run Code Online (Sandbox Code Playgroud)

transformer_config.yaml

varReference:
  - path: spec/host
Run Code Online (Sandbox Code Playgroud)