Max*_*Max 3 bash kubernetes kubectl envsubst
假设我们在一个文件夹中有许多 Kubernetes 配置文件kubernetes
,我们希望将它们全部应用:
kubectl apply -f kubernetes -n MyNamespace
Run Code Online (Sandbox Code Playgroud)
其中一些文件包含需要首先替换的环境变量(在 Kubernetes 中没有模板)。例如,一些部署 yaml 包含以下内容:
image: myregistry.com/myrepo:$TAG
Run Code Online (Sandbox Code Playgroud)
对于单个 yaml 文件,这可以通过使用 envsubst来完成,例如:
envsubst < deploy.yml | kubectl apply -f -
Run Code Online (Sandbox Code Playgroud)
对所有 yaml 文件进行这些替换的最佳方法是什么?
(循环文件夹中的文件并按envsubst
上述方式调用是一种选择,但我怀疑最好将整个文件夹传递给kubectl
而不是单个文件)
这有效:
for f in *.yaml; do envsubst < $f | kubectl apply -f -; done
Run Code Online (Sandbox Code Playgroud)
您可以让envsubst
从标准输入读取多个文件的内容,就像< deploy.yaml
使用进程替换<(..)
功能bash
或使用普通 ol'读取一个文件一样cat
envsubst < <(cat *.yaml) | kubectl apply -f -
Run Code Online (Sandbox Code Playgroud)
或者
cat *.yaml | envsubst - | kubectl apply -f -
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
654 次 |
最近记录: |