Kubernetes OpenShift模板env变量能否在secretKeyRef的名称中使用?

Kubernetes OpenShift模板env变量能否在secretKeyRef的名称中使用?,kubernetes,openshift,Kubernetes,Openshift,我有一个模板和一个部署,其中一个部署的env变量是一个秘密中的值,该秘密包含刚刚使用该模板的名称空间的名称。 秘密必须包含名称空间的名称,我无法更改它 我知道可以使用env变量作为不同env变量的值。看起来像这样: env: - name: MY_NAMESPACE valueFrom: fieldRef: apiVersion: v1 fieldPath: metadata.namespace - name: FULL_NAME

我有一个模板和一个部署,其中一个部署的env变量是一个秘密中的值,该秘密包含刚刚使用该模板的名称空间的名称。 秘密必须包含名称空间的名称,我无法更改它

我知道可以使用env变量作为不同env变量的值。看起来像这样:

env:
  - name: MY_NAMESPACE
    valueFrom:
      fieldRef:
        apiVersion: v1
        fieldPath: metadata.namespace
  - name: FULL_NAME
    value: ${MY_NAME}.$(MY_NAMESPACE)
这样,如果我的名称空间的名称是app,并且my_name参数是dan

echo $FULL_NAME
> dan.app
但我想用这个名字来指代一个秘密的名字。像这样:

env:
  - name: MY_NAMESPACE
    valueFrom:
      fieldRef:
        apiVersion: v1
        fieldPath: metadata.namespace
  - name: FULL_NAME_SECRET
    valueFrom:
      secretKeyRef:
        name: ${MY_NAME}.$(MY_NAMESPACE)
        key: app_name
我收到一个事件,上面写着:

Pod“test-0”无效[spec.containers[0]。env[1]。valueFrom.secretKeyRef.name:无效值:“dan.$(MY_命名空间)”:DNS-1123子域必须由小写字母数字字符“-”或“.”组成,并且必须以字母数字字符开头


基本上,它不会将$(MY_名称空间)转换为其env变量的实际值。

secretKeyRef:秘密名称必须是固定字符串。变量扩展只发生在pod规范中的几个地方(在
env:
值中,
命令:
参数:
,但不在其他地方)

对于您眼前的问题,识别Pod和任何匹配的机密必须在同一命名空间中可能会有所帮助。您不需要在机密名称中包含命名空间名称,如果需要,也无法在不同的命名空间中引用机密

-名称:全名\u机密
价值来源:
secretKeyRef:
名称:dan#始终在同一名称空间中
关键字:应用程序名称
更广泛地说,您可以使用类似的工具从模板中填充其中的一些值。这些值可以使用安装时已知的数据来构造可以提交给Kubernetes的“固定字符串”

{{/*在掌舵图的模板/deployment.yaml*/}
-姓名:全名
价值来源:
secretKeyRef:
名称:{{包括“dan.name”。}}.{{.Release.Namespace}
关键字:应用程序名称
在本例中,大括号中的部分由Helm的模板引擎展开。
{…}
.Release.Namespace
是您要安装的命名空间。
包括“dan.name”。
调用构造“dan”名称的帮助器模板,以支持在同一命名空间中进行多个安装的方式