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 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
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 -
Bu çalışıyor:
for f in *.yaml; do envsubst < $f | kubectl apply -f -; done