kubectlを適用するときに、すべてのファイルの環境変数を置き換えます。
フォルダ内に多数の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
上記のように呼び出すことは1つのオプションですが、kubectl
個々のファイルではなくフォルダー全体を渡す方が望ましいと思います)
回答
5 Inian
のプロセス置換機能を使用するか、プレーンなol 'を使用して、envsubst
1つのファイルを読み取るかのように、標準入力から複数のファイルの内容を読み取ることができます。< deploy.yaml
<(..)
bash
cat
envsubst < <(cat *.yaml) | kubectl apply -f -
または
cat *.yaml | envsubst - | kubectl apply -f -
2 Max
これは機能します:
for f in *.yaml; do envsubst < $f | kubectl apply -f -; done