热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

使用kubectl应用配置时自动替换所有文件中的环境变量

假设我们在一个文件夹中有许多 Kubernetes 配置文件kubernetes,我们希望将它们全部应用:kubectl apply -f kubernetes -n MyNamespace其中一些文

假设我们在一个文件夹中有许多 Kubernetes 配置文件kubernetes,我们希望将它们全部应用:

kubectl apply -f kubernetes -n MyNamespace

其中一些文件包含需要首先替换的环境变量(在 Kubernetes 中没有模板)。例如,一些部署 yaml 包含以下内容:

image: myregistry.com/myrepo:$TAG

对于单个 yaml 文件,这可以通过使用 envsubst来完成,例如:

envsubst

对所有 yaml 文件进行这些替换的最佳方法是什么?

(循环文件夹中的文件并按envsubst上述方式调用是一种选择,但我怀疑最好将整个文件夹传递给kubectl而不是单个文件)

回答


您可以让envsubst从标准输入读取多个文件的内容,就像使用进程替换<(..)功能bash或使用普通 ol'读取一个文件一样cat

envsubst <<(cat *.yaml) | kubectl apply -f -

或者

cat *.yaml | envsubst - | kubectl apply -f -



  • What really happens is, by the time, `kubectl` sees the input, it does not even know which files it came from, except its a content over its standard input i.e. `-`l, it doesn&#039;t really care





推荐阅读
author-avatar
巧干篆书_618
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有