gpt4 book ai didi

kubernetes - 如何在 kubectl run 中从 ConfigMap 设置 Env?

转载 作者:行者123 更新时间:2023-12-05 05:03:24 24 4
gpt4 key购买 nike

出于调试原因,我尝试通过 kubectl run 运行容器 (alpine),并从 ConfigMap 或 Secret 设置一些环境变量。为此,我了解使用 --override= 参数。但是,如果我执行容器并回显变量,则不会设置任何内容。我的内联 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 中使用的实际 key 相同。

  • 请务必注意,kubectl run 会忽略未知字段。

要调试这个,你可以运行你指定的命令,然后在另一个终端:

kubectl get pod POD_NAME -o json

从那里您可以查看实际的 env 规范结构是否与您的 json 覆盖值不同。

关于kubernetes - 如何在 kubectl run 中从 ConfigMap 设置 Env?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61712203/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com