将kubernetes定义中定义的env值扩展到container

Expand the env value defined in kubernetes definition to container

我正在尝试在 docker 容器中设置一些环境变量,下面是来自 kubernetes pod 定义的环境定义部分。

              env:
                - name: NRIA_LICENSE_KEY
                  value: NRIA_LICENSE_KEY
                -name:  NRIA_DISPLAY_NAME
                  value: abc-$HOSTNAME

然而,当我在容器中回显 NRIA_DISPLAY_NAME 变量的值时,我得到的输出低于预期。

echo $NRIA_DISPLAY_NAME
NRIA_DISPLAY_NAME=abc-$HOSTNAME

预期输出:

    echo $NRIA_DISPLAY_NAME
    NRIA_DISPLAY_NAME=abc-myhostname ($HOSTNAME should be replaced with the actual hostname value)

我也试过在命令标签中设置它,但没有用。

 command: [ "bash", "-c", "export NRIA_DISPLAY_NAME=abc-$HOSTNAME" ]
- name:  NRIA_DISPLAY_NAME
  value: abc-$HOSTNAME

应该对其进行两处更改:

  1. 确保您希望替换的内容 出现在 env: 块中——我知道您可能认为 $HOSTNAME 普遍存在,但并不总是如此,在 kubernetes 心智模型中肯定不是这样

  2. 使用语法 $(INTERPOLATION_HERE) 而不是 bash-centric $VAR${VAR}。该语法记录在 PodSpec 参考文献

因此:

env:
- name: HOSTNAME
  valueFrom:
    fieldRef:
      fieldPath: metadata.name
      # or "status.hostIP" or "spec.nodeName" etc
- name: NRIA_DISPLAY_NAME
  value: abc-$(HOSTNAME)