4

我有一个生成的配置图

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

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

ROUTE_HOST=somewhere.else.org

作为变量

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

在我的 OCP 路线中

apiVersion: route.openshift.io/v1
kind: Route
spec:
  host: $(ROUTE_HOST)

这可能吗?

我知道我可以用 env vars 做一些几乎相同的事情:

env:
  - name: ROUTE_HOST
    valueFrom:
      configMapKeyRef:
        name: template-vars
        key: ROUTE_HOST
4

1 回答 1

5

是的,这是可能的。我目前为我的大部分 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

transformer_config.yaml

varReference:
  - path: spec/host
于 2021-01-22T10:56:35.610 回答