सभी फ़ाइलों में स्थानापन्न परिवेश चर जब kubectl लागू-निगलना

Jan 14 2021

मान लें कि हमारे पास एक फ़ोल्डर में कई कुबेरनेट विन्यास फाइल हैं 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व्यक्तिगत फ़ाइलों को पारित करने के लिए बेहतर नहीं होगा)

जवाब

5 Inian Jan 13 2021 at 23:26

आप envsubstमानक इनपुट से कई फ़ाइलों की सामग्री को पढ़ने दे सकते हैं जैसे कि यह एक फाइल पढ़ रहा था < deploy.yamlया तो प्रक्रिया प्रतिस्थापन <(..)सुविधा का bashउपयोग करके या सादे ol का उपयोग करके 'cat

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

या

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

यह सही है:

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