Gantikan variabel lingkungan di semua file saat kubectl apply-ing
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
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 -
Ini bekerja:
for f in *.yaml; do envsubst < $f | kubectl apply -f -; done