我正在使用配置映射将 env 变量注入到我的容器中。一些变量是通过连接变量创建的,例如:
~/.env 文件
HELLO=hello
WORLD=world
HELLO_WORLD=${HELLO}_${WORLD}
Run Code Online (Sandbox Code Playgroud)
然后我创建配置映射
kubectl create configmap env-variables --from-env-file ~/.env
部署清单引用了配置映射。
apiVersion: apps/v1beta1
kind: Deployment
metadata:
name: my-app
spec:
template:
spec:
containers:
- name: my-image
image: us.gcr.io/my-image
envFrom:
- configMapRef:
name: env-variables
Run Code Online (Sandbox Code Playgroud)
当我执行到我正在运行的 Pod 并执行命令时
$ printenv HELLO_WORLD
我希望看到hello_world
,但我看到了${HELLO}_${WORLD}
。变量未展开,因此我的应用程序引用这些变量将获得未展开的值。
我如何确保变量得到扩展?
如果重要的话,我的图像使用的是高山。
我找不到关于内插环境变量的任何文档,但我能够通过从配置图中删除内插变量并将其直接列在部署中来使其工作。如果所有变量都直接列在部署中,它也适用。看起来 kubernetes 不会对从 configmaps 加载的变量应用插值。
例如,这将起作用:
配置图
apiVersion: v1
data:
HELLO: hello
WORLD: world
kind: ConfigMap
metadata:
name: env-variables
namespace: default
Run Code Online (Sandbox Code Playgroud)
部署:
apiVersion: apps/v1beta1
kind: Deployment
metadata:
name: my-app
spec:
template:
spec:
containers:
- name: my-image
image: us.gcr.io/my-image
envFrom:
- configMapRef:
name: env-variables
env:
- name: HELLO_WORLD
value: $(HELLO)_$(WORLD)
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
4792 次 |
最近记录: |