मेरे पास एक configMap है और मैं उस से अंतिम लागू कॉन्फ़िगरेशन का उपयोग करके एक बैकअप configMap बनाना चाहता हूं।

मैं अंतिम लागू कॉन्फ़िगरेशन प्राप्त करने के लिए निम्न आदेश का उपयोग करता हूं:

    kubectl get cm app-map -n app-space \
    -o go-template \
    --template='{{index .metadata "annotations" "kubectl.kubernetes.io/last-applied-configuration"}}' > backup.json

यह कुछ इस तरह देता है [backup.json की सामग्री]:

{"kind":"ConfigMap","apiVersion":"v1","metadata":{"name":"app-map","creationTimestamp":null},"data":{"app.yml":"xxxxxxxxx","config.yml":"yyyyyyyyy"}}

अब, मैं चाहता हूं कि मेरे बैकअप configMap का एक अलग नाम हो। इसलिए, मैं .metadata.name को app-map से app-map-backup में बदलना चाहता हूं।

क्या ऐसा कोई तरीका है जिससे मैं इसे kubectl और -o go-template से हासिल कर सकूं? मैं इसे backup.json फ़ाइल में लिखने से पहले नाम बदलना चाहता हूं।

मुझे पता है कि मैं jq का उपयोग करके ऐसा कर सकता हूं लेकिन मुझे उस सर्वर पर jq स्थापित करने की अनुमति नहीं है जहां मैं kubectl का उपयोग कर रहा हूं।

2
bakadevops 7 अक्टूबर 2020, 09:43

2 जवाब

सबसे बढ़िया उत्तर

आप इसे केवल Kubectl का उपयोग करके नहीं कर सकते। लेकिन और भी तरीके हैं।

आप स्थिर रूप से लिंक किए गए jq बाइनरी को आधिकारिक jq वेबसाइट से डाउनलोड कर सकते हैं:

wget https://github.com/stedolan/jq/releases/download/jq-1.6/jq-linux64
chmod +x jq-linux64

और फिर आप इस बाइनरी का उपयोग निम्न की तरह कर सकते हैं:

kubectl -o go-template [...] | ./jq-linux64 ...

या आप sed का उपयोग कर सकते हैं:

kubectl -o go-template [...] | sed 's/"name":"app-map"/"name":"app-map-backup"/'
1
Matt 7 अक्टूबर 2020, 13:44

आप kubectl bulk प्लगइन का उपयोग कर सकते हैं। नीचे दिया गया कमांड आपके कॉन्फिग मैप को दोहराएगा

# get resource(s) and create with field(name) change 
kubectl bulk configmap app-map -n app-space create name app-mapp-backup

Kubectl बल्क उपयोग करने के लिए बहुत शक्तिशाली है, मैं नमूने< की जांच करने का सुझाव देता हूं /ए>.

1
Emre Odabaş 8 अक्टूबर 2020, 10:29