包含另一个 cat'd 变量的 Kubernetes env 变量



我正在尝试获取我的部署清单或configmap方法来传递这样一组变量:

DIRECTORY=/home/test  
TOKEN=$(cat $(DIRECTORY)/token)

在我的部署清单和configmap尝试中,TOKEN=$(cat $(DIRECTORY)/token):都是按字面意思设置的,而不是在pod中解析的(基本上应该是:TOKEN=/home/test/token)

用Kubenernetes这样设置vars不可能吗?这是因为pod期望{}围绕变量,而不是像kubenetes所要求的那样()吗?

如果我很清楚,你想把一些环境变量传递给pod,然后把它们与另一个环境变量一起使用吗?

它可以在Deployment中使用依赖环境变量来实现。

创建Pod时,可以为Pod中运行的容器设置依赖环境变量。要设置从属环境变量,可以在配置文件中的env值中使用$(VAR_NAME)。

测试YAML

kind: Pod
metadata:
name: dependent-envars-demo
spec:
containers:
- name: dependent-envars-demo
args:
- while true; do echo -en 'n'; printf DIRECTORY=$DIRECTORY'n'; printf TOKEN=$TOKEN'n'; sleep 300; done;
command:
- sh
- -c
image: busybox
env:
- name: SERVICE_PORT
value: "80"
- name: DIRECTORY
value: "/home/test"
- name: TOKEN
value: "$(DIRECTORY)/token"

要验证这是否有效,您应该检查日志。

DIRECTORY=/home/test
TOKEN=/home/test/token

关于ConfigMap,应该将其视为普通文本,而不是bash命令。它有助于将代码从配置中分离出来,而且它主要是key: value类型。然而,也有一些特定的场景,其中ConfigMap包含脚本主体,稍后它可以在pod中使用。示例可以在另一个Stackoverflow线程或USING KUBERNETES CONFIGMAPS AS CODE文章中找到。

最后我要提到的是,Kubernetes具有用于配置更改的ConfigMap和用于更敏感数据的Secrets。

我在寻找相同的功能。。然而,根据我的研究,没有直接的方法。

或者,这种模式可以工作&你可以将其概括为:

image:...
command: ["/bin/sh", "-c"]
args:
- >-
export TOKEN=$(cat /path/to/token)
exec /bin/original/entrypoint

相关内容

  • 没有找到相关文章

最新更新