gpt4 book ai didi

Kubernetes 配置映射 : import from file as many values instead of as one?

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

从文件创建一个新的 ConfigMap:kubernetes create configmap foo --from-file=foo
这是 ConfigMap 在内部的外观:kubernetes get configmaps foo -o yaml

apiVersion: v1
data:
foo: |
VAR1=value1
VAR2=value2

然后,我使用这个 ConfigMap 在容器中创建一组环境变量:
apiVersion: v1
kind: Pod
metadata:
labels:
name: app
name: app
spec:
containers:
- name: app-server
image: app:latest
ports:
- containerPort: 3000
envFrom:
- configMapRef:
name: foo
command: ["/bin/bash", "-c", "printenv"]

当容器命令运行时,我看到 printenv 的以下输出:
foo=VAR1=value1
VAR2=value2

所以,一个 echo $foo pod 中的命令返回: VAR1=value1 VAR2=value2
根据 ConfigMap 的文档 --from-file ,这是预期的行为。

以某种方式将这个文件的值作为单独的 env 变量提供给 pod 的创造性方法(和适当的位置)是什么? VAR1 , VAR2 , VAR3 , 等等。 ?

最佳答案

对于当前版本 (1.6.x) 的 Kubernetes,这是不可能的。如 offical documentation 中所写为 kubectl create configmap :

--from-file: Key file can be specified using its file path, in which case file basename will be used as configmap key, or optionally with a key and file path, in which case the given key will be used. Specifying a directory will iterate each named file in the directory whose basename is a valid configmap key.



当你想创建一个像这样使用的配置映射时,作为 envFrom 的输入您可以使用 --from-literal 创建容器配置像这样的选项:
kubectl create configmap foo --from-literal=var1=value1 --from-literal=var2=value2

为了仍然保留文件,您可以将文件转换为某些内容,然后像这样运行此命令:
eval "kubectl create configmap foo $(cat foo.txt | sed -e 's/^/--from-literal=/' | tr "\n" ' ')"

与此同时,可能会检查像 --flatten flag proposal on Github 这样的优秀提案。值得你花时间。

还要注意变量命名。 iirc VAR1VAR2不是有效的属性名称 - 它们必须是小写,这可能会在传递它们时导致一些问题。

关于Kubernetes 配置映射 : import from file as many values instead of as one?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43187913/

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