Gantikan variabel lingkungan di semua file saat kubectl apply-ing

Jan 14 2021

Katakanlah kita memiliki sejumlah file konfigurasi Kubernetes dalam sebuah folder kubernetesdan kita ingin menerapkan semuanya:

kubectl apply -f kubernetes -n MyNamespace

Beberapa dari file ini berisi variabel lingkungan yang perlu diganti terlebih dahulu (tidak ada template di Kubernetes). Misalnya, beberapa yamls penerapan berisi sesuatu seperti:

image: myregistry.com/myrepo:$TAG

Untuk satu file yaml, ini dapat dilakukan misalnya dengan menggunakan envsubst seperti ini:

envsubst < deploy.yml | kubectl apply -f -

Apa cara terbaik untuk melakukan penggantian ini untuk semua file yaml?

(Memutar ulang file dalam folder dan memanggil envsubstseperti di atas adalah salah satu opsi, tetapi saya curiga akan lebih baik untuk meneruskan seluruh folder ke kubectldan bukan file individual)

Jawaban

5 Inian Jan 13 2021 at 23:26

Anda dapat membiarkan envsubstmembaca konten beberapa file dari input standar seolah-olah membaca satu file < deploy.yamlbaik menggunakan <(..)fitur substitusi proses bashatau menggunakan ol 'biasacat

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

atau

cat *.yaml | envsubst - | kubectl apply -f -
2 Max Jan 14 2021 at 07:39

Ini bekerja:

for f in *.yaml; do envsubst < $f | kubectl apply -f -; done