सभी फ़ाइलों में स्थानापन्न परिवेश चर जब kubectl लागू-निगलना
मान लें कि हमारे पास एक फ़ोल्डर में कई कुबेरनेट विन्यास फाइल हैं kubernetes
और हम उन सभी को लागू करना चाहते हैं:
kubectl apply -f kubernetes -n MyNamespace
इनमें से कुछ फ़ाइलें वातावरण चर जो पहले प्रतिस्थापित किया जा करने के लिए (कोई जरूरत को शामिल templating Kubernetes में)। उदाहरण के लिए, परिनियोजन यामलों में से कुछ में कुछ इस तरह हैं:
image: myregistry.com/myrepo:$TAG
एक एकल yaml फ़ाइल के लिए, यह इस तरह envsubst का उपयोग करके किया जा सकता है :
envsubst < deploy.yml | kubectl apply -f -
सभी yaml फ़ाइलों के लिए ये प्रतिस्थापन करने का सबसे अच्छा तरीका क्या है?
(फ़ोल्डर में फ़ाइलों पर लूपिंग करना और envsubst
ऊपर के रूप में कॉल करना एक विकल्प है, लेकिन मुझे संदेह है कि यह संपूर्ण फ़ोल्डर को kubectl
व्यक्तिगत फ़ाइलों को पारित करने के लिए बेहतर नहीं होगा)
जवाब
आप envsubst
मानक इनपुट से कई फ़ाइलों की सामग्री को पढ़ने दे सकते हैं जैसे कि यह एक फाइल पढ़ रहा था < deploy.yaml
या तो प्रक्रिया प्रतिस्थापन <(..)
सुविधा का bash
उपयोग करके या सादे ol का उपयोग करके 'cat
envsubst < <(cat *.yaml) | kubectl apply -f -
या
cat *.yaml | envsubst - | kubectl apply -f -
यह सही है:
for f in *.yaml; do envsubst < $f | kubectl apply -f -; done