应用kubectl时替换所有文件中的环境变量
bash kubernetes kubectl envsubst
假设我们在kubernetes文件夹中有许多Kubernetes配置文件,我们想全部应用它们:
kubectl apply -f kubernetes -n MyNamespace
其中一些文件包含需要首先替换的环境变量(在Kubernetes中没有模板)。例如,一些部署yaml包含如下内容:
image: myregistry.com/myrepo:$TAG
对于单个yaml文件,可以这样做,例如使用envsubst:
envsubst < deploy.yml | kubectl apply -f -
替换所有yaml文件的最佳方法是什么?
(循环遍历文件夹中的文件并如上所述调用envsubst是一种选择,但我怀疑最好将整个文件夹传递给kubectl,而不是单个文件)
发布于 11 月前
回答
您可以让envsubst从标准输入中读取多个文件的内容,就像它在读取一个文件< deploy.yaml一样,可以使用bash的进程替换<(..)特性,也可以使用普通的olcat
envsubst < <(cat *.yaml) | kubectl apply -f -
or
cat *.yaml | envsubst - | kubectl apply -f -