kubernetes - 如何在 kubectl 运行中从 ConfigMap 设置 Env?
问题描述
出于调试原因,我尝试通过kubectl run
ConfigMap 或 Secret 运行容器(高山)并设置一些环境变量。为此,我理解使用--override=
参数。但是,如果我执行 Container 并回显 vars,则没有设置任何内容。我的内联 json 结构错了吗?
kubectl run --dry-run=client --restart=Never --image=alpine -n app-ns psql-demo --overrides='
{
"apiVersion": "v1",
"spec": {
"env": [
{
"name": "POSTGRES_HOST",
"valueFrom": {
"configMapKeyRef": {
"key": "POSTGRES_HOST",
"name": "db-config"
}
}
}
]
}
}' -o yaml -- sh
我尝试通过echo ${POSTGRES_HOST}
.
这里的 ConfigMap 配置:
apiVersion: v1
data:
POSTGRES_HOST: db.host.com
kind: ConfigMap
metadata:
labels:
component: postgres
name: db-config
namespace: app-ns
任何想法?非常感谢!
解决方案
你的 json 结构有点偏离,应该是这样的:
{
"spec": {
"containers": {
"env": [
{
"name": "POSTGRES_HOST",
"valueFrom": {
"configMapKeyRef": {
"name": "db-config",
"key": "POSTGRES_HOST"
}
}
}
]
}
}
}
请注意,第一个“名称”是将出现在容器中的实际环境变量名称,它不必与您在 configmap 中使用的实际键相同。
- 重要的是要注意
kubectl run
忽略未知字段。
要调试它,您可以运行您指定的命令,然后在另一个终端中:
kubectl get pod POD_NAME -o json
从那里您可以查看实际的 env 规范结构是否与您的 json 覆盖值不同。
推荐阅读
- azure-sql-database - 嗨,我们可以使用自动电源将大 XML 文件存储到 azure sql db 中吗?
- nestjs - 启动嵌套应用程序 typeorm 时出错
- javascript - 如何告诉 tyescript isNil lodash 函数正在检查空值
- web - 当我输入“npm run dev”时,服务器正在运行但没有打开网页
- pytorch - 在pytorch中训练卷积神经网络需要很长时间
- node.js - 茉莉花:预期的对象没有属性
- payumoney - Payumoney 支付网关成功回调 Codeignitor 4 中的 Post 数据为空
- mongodb - Vercel 在冷启动时为所有 API 请求提供错误 504,但适用于热启动
- c# - c#将路径“C:\Users\me\..\you”缩短为“C:\Users\you”
- c# - 下次运行作业时如何恢复石英调度程序中停止的作业