我想在kubernetes配置中写入docker映像名称,然后在我的部署文件中使用它,而不是直接对其进行硬编码。 所以代替:
image: "nginx:latest
”
我要执行以下操作:
image:
valueFrom:
configMapKeyRef:
name: docker-config
key: docker-image
该怎么做或其他替代方法? 谢谢。
答案 0 :(得分:2)
这不是从configmap更新映像值的正确方法。可能还有其他方式。我能想到的一种方法是使用以下命令
cat some-depl.yaml | run 'sed' command to update image value | kubectl apply -f -
答案 1 :(得分:0)
如果您要更新图像键的值,可以通过设置使用以下数据驱动命令例如,strong>动词
# Set a deployment's nginx container image to 'nginx:1.9.1', and its busybox container image to 'busybox'.
kubectl set image deployment/nginx busybox=busybox nginx=nginx:1.9.1
# Update all deployments' and rc's nginx container's image to 'nginx:1.9.1'
kubectl set image deployments,rc nginx=nginx:1.9.1 --all
# Update image of all containers of daemonset abc to 'nginx:1.9.1'
kubectl set image daemonset abc *=nginx:1.9.1
# Print result (in yaml format) of updating nginx container image from local file, without hitting the server
kubectl set image -f path/to/file.yaml nginx=nginx:1.9.1 --local -o yaml
您可以使用
获得更多详细信息kubectl set image --help
的更多示例
答案 2 :(得分:0)
您只能对ConfigMap值进行有限的设置:您可以将它们作为文件挂载到pod中,或者可以使用它们来设置环境变量,仅此而已。
通常使用更高级的工具来为您的任务将模板应用于Kubernetes配置(特别是指定图像标签是非常常规的)。我对Helm最熟悉,但是还有许多其他工具。
在Helm中,您必须创建一个chart。它由两部分组成,但是它使您可以在values.yaml
文件中指定一组默认值:
tag: 1.9.1
然后,它使用Go "text/template"
语言生成Kubernetes YAML文件,就像在templates/nginx-deployment.yaml
文件中一样:
image: nginx:{{ .Values.tag }}
当您想要实际安装它时,您可以提供将填充到模板中的备用值
helm install . --set tag=1.15.8