Kubectl uygularken tüm dosyalarda ortam değişkenini değiştirin

Jan 14 2021

Diyelim ki bir klasörde çok sayıda Kubernetes yapılandırma dosyamız var kubernetesve hepsini uygulamak istiyoruz:

kubectl apply -f kubernetes -n MyNamespace

Bu dosyalardan bazıları, önce değiştirilmesi gereken ortam değişkenleri içerir ( Kubernetes'te şablonlama yoktur ). Örneğin, dağıtım yaml'larından birkaçı aşağıdakilere benzer bir şey içerir:

image: myregistry.com/myrepo:$TAG

Tek bir yaml dosyası için bu, örneğin envsubst kullanılarak yapılabilir :

envsubst < deploy.yml | kubectl apply -f -

Tüm yaml dosyaları için bu değişiklikleri yapmanın en iyi yolu nedir?

(Klasördeki dosyalar üzerinde döngü yapmak ve envsubstyukarıdaki gibi çağırmak bir seçenektir, ancak tüm klasörü kubectltek tek dosyalara değil de aktarmanın tercih edileceğinden şüpheleniyorum )

Yanıtlar

5 Inian Jan 13 2021 at 23:26

Sen sağlayabilirsiniz envsubstbunun bir dosya okuma sanki standart girişten birden fazla dosya içeriğini okumak < deploy.yamlsüreç ikamesi kullanarak ya <(..)özelliği bash'veya düz ol kullanılarakcat

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

veya

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

Bu çalışıyor:

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