Kubectl uygularken tüm dosyalarda ortam değişkenini değiştirin
Diyelim ki bir klasörde çok sayıda Kubernetes yapılandırma dosyamız var kubernetes
ve 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 envsubst
yukarıdaki gibi çağırmak bir seçenektir, ancak tüm klasörü kubectl
tek tek dosyalara değil de aktarmanın tercih edileceğinden şüpheleniyorum )
Yanıtlar
Sen sağlayabilirsiniz envsubst
bunun bir dosya okuma sanki standart girişten birden fazla dosya içeriğini okumak < deploy.yaml
sü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 -
Bu çalışıyor:
for f in *.yaml; do envsubst < $f | kubectl apply -f -; done