假设我们在文件夹 kubernetes
中有许多 Kubernetes 配置文件。我们想全部应用它们:
kubectl apply -f kubernetes -n MyNamespace
其中一些文件包含需要首先替换的环境变量(在 Kubernetes 中没有 templating)。例如,一些部署 yaml 包含以下内容:image: myregistry.com/myrepo:$TAG
对于单个 yaml 文件,这可以是 done例如通过像这样使用 envsubst:envsubst < deploy.yml | kubectl apply -f -
对所有 yaml 文件进行这些替换的最佳方法是什么?(循环文件夹中的文件并调用
envsubst
如上所述是一种选择,但我怀疑最好将整个文件夹传递给 kubectl
而不是单个文件)
最佳答案
您可以让 envsubst
从标准输入读取多个文件的内容,就像读取一个文件 < deploy.yaml
要么使用进程替换 <(..)
bash
的特点或使用普通的 ol' cat
envsubst < <(cat *.yaml) | kubectl apply -f -
或者cat *.yaml | envsubst - | kubectl apply -f -
关于bash - kubectl apply-ing时替换所有文件中的环境变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65705619/