Gantikan variabel lingkungan di semua file saat kubectl apply-ing
Katakanlah kita memiliki sejumlah file konfigurasi Kubernetes dalam sebuah folder kubernetes
dan 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 envsubst
seperti di atas adalah salah satu opsi, tetapi saya curiga akan lebih baik untuk meneruskan seluruh folder ke kubectl
dan bukan file individual)
Jawaban
Anda dapat membiarkan envsubst
membaca konten beberapa file dari input standar seolah-olah membaca satu file < deploy.yaml
baik menggunakan <(..)
fitur substitusi proses bash
atau 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