Kubernetes 如何在configMap中获取环境变量

Kubernetes 如何在configMap中获取环境变量,kubernetes,Kubernetes,我正在寻找一种在configmap的数据部分获取环境变量的方法。 在下面的yml配置中,我分配了$NODE_NAME,这对我没有帮助。有什么办法得到这份工作吗 apiVersion: v1 kind: ConfigMap metadata: name: config namespace: kube-system data: test.conf: | { "push": 5, "test": $NODE_N

我正在寻找一种在configmap的数据部分获取环境变量的方法。 在下面的yml配置中,我分配了$NODE_NAME,这对我没有帮助。有什么办法得到这份工作吗

apiVersion: v1
kind: ConfigMap
metadata:
  name: config
  namespace: kube-system
data:
  test.conf: |
    {
        "push": 5,
        "test": $NODE_NAME
    }

我认为你不可能以任何方式摆脱束缚。ConfigMap只是按原样注入到您的Pod中


不过,您可以使用自定义脚本创建一个,以修改从ConfigMap注入的文件。在您的脚本中,您可以使用
sed
envsubst
工具。

我认为您不可能以任何方式跳出框框。ConfigMap只是按原样注入到您的Pod中


不过,您可以使用自定义脚本创建一个,以修改从ConfigMap注入的文件。在脚本中,您可以使用
sed
envsubt
工具。

实现此目的的一种方法是使用以下工具:

$ export NODE_NAME=my-node-name
$ cat << EOF | envsubst | kubectl apply -f-
apiVersion: v1
kind: ConfigMap
metadata:
  name: config
  namespace: kube-system
data:
  test.conf: |
    {
        "push": 5,
        "test": $NODE_NAME
    }
EOF
$ kubectl exec -it example-pod -- cat /data/test.conf                      
{
    "push": 5,
    "test": minikube
}
应用上述yaml时,您可以检查文件是否被正确替换,如下所示:

$ export NODE_NAME=my-node-name
$ cat << EOF | envsubst | kubectl apply -f-
apiVersion: v1
kind: ConfigMap
metadata:
  name: config
  namespace: kube-system
data:
  test.conf: |
    {
        "push": 5,
        "test": $NODE_NAME
    }
EOF
$ kubectl exec -it example-pod -- cat /data/test.conf                      
{
    "push": 5,
    "test": minikube
}

正如您所见,我在minikube中测试它(因此在我的例子中nodeName=minikube)

实现这一点的一种方法是使用以下命令:

$ export NODE_NAME=my-node-name
$ cat << EOF | envsubst | kubectl apply -f-
apiVersion: v1
kind: ConfigMap
metadata:
  name: config
  namespace: kube-system
data:
  test.conf: |
    {
        "push": 5,
        "test": $NODE_NAME
    }
EOF
$ kubectl exec -it example-pod -- cat /data/test.conf                      
{
    "push": 5,
    "test": minikube
}
应用上述yaml时,您可以检查文件是否被正确替换,如下所示:

$ export NODE_NAME=my-node-name
$ cat << EOF | envsubst | kubectl apply -f-
apiVersion: v1
kind: ConfigMap
metadata:
  name: config
  namespace: kube-system
data:
  test.conf: |
    {
        "push": 5,
        "test": $NODE_NAME
    }
EOF
$ kubectl exec -it example-pod -- cat /data/test.conf                      
{
    "push": 5,
    "test": minikube
}

正如您所见,我在minikube中测试它(因此在我的例子中nodeName=minikube)

这个环境在哪里?在本地主机上还是在容器中?最有可能你需要,但如果这对你没有帮助,我需要更多的信息,这个环境在哪里?在本地主机上还是在容器中?很可能你需要,但如果这对你没有帮助,我需要更多的信息