मैंने एक रहस्य बनाया है kubectl create secret generic production-tls --from-file=./tls.key --from-file=./tls.crt।
यदि मैं मानों को अपडेट करना चाहता हूं - तो मैं यह कैसे कर सकता हूं?
मैंने एक रहस्य बनाया है kubectl create secret generic production-tls --from-file=./tls.key --from-file=./tls.crt।
यदि मैं मानों को अपडेट करना चाहता हूं - तो मैं यह कैसे कर सकता हूं?
जवाबों:
यह काम करना चाहिए:
kubectl create secret generic production-tls \
--from-file=./tls.key --from-file=./tls.crt --dry-run -o yaml |
kubectl apply -f -
--save-configकरने के लिए kubectl create secretआदेश में एक CLI चेतावनी से बचने के लिए।
kubectl create secret tls my-domain-tls --namespace=default --key=./tls.key --cert=./tls.crt --dry-run -o yaml | kubectl apply -f -सादे पाठ में थे।
आप गुप्त को हटा सकते हैं और तुरंत बना सकते हैं:
kubectl delete secret production-tls
kubectl create secret generic production-tls --from-file=./tls.key --from-file=./tls.crt
मैंने इन आदेशों को एक स्क्रिप्ट में रखा है, पहली कॉल पर आपको अस्तित्व के बारे में एक चेतावनी मिलती है (अभी तक) नहीं है, लेकिन यह काम करता है।
applyबहुत अधिक समझ में आता है, धन्यवाद!
--namespace=kube-system
वैकल्पिक रूप से, आप भी उपयोग कर सकते हैं jqs ' =या |=ऑपरेटर अद्यतन रहस्यों को मक्खी पर।
TLS_KEY=$(base64 < "./tls.key" | tr -d '\n')
TLS_CRT=$(base64 < "./tls.crt" | tr -d '\n')
kubectl get secrets production-tls -o json \
| jq '.data["tls.key"] |= "$TLS_KEY"' \
| jq '.data["tls.crt"] |= "$TLS_CRT"' \
| kubectl apply -f -
यद्यपि यह kubectl create secret generic --dry-runदृष्टिकोण के रूप में सुरुचिपूर्ण या सरल नहीं हो सकता है , तकनीकी रूप से , यह दृष्टिकोण वास्तव में उन्हें हटाने / पुनः बनाने के बजाय मूल्यों को अपडेट कर रहा है। आपको भी आवश्यकता होगी jqऔर base64(या openssl enc -base64) उपलब्ध कमांड, trअनुगामी न्यूलाइन्स को ट्रिम करने के लिए एक सामान्य रूप से उपलब्ध लिनक्स उपयोगिता है।
अपडेट ऑपरेटर के बारे में अधिक जानकारी के लिए यहां देखें ।jq|=
जैसा कि मैं ऊपर दीवी के उत्तर का जवाब देने में सक्षम नहीं था, जो मुझे पसंद है क्योंकि यह स्वामित्व को संरक्षित करेगा जहां रिकॉर्ड को हटाने और पुन: संग्रह करने की क्षमता है, जो किसी भी अतिरिक्त जानकारी को खो सकता है। मैं इसे नए लोगों के लिए जोड़ रहा हूं जो तुरंत समझ नहीं सकते हैं मट्ठा उनके चर को प्रक्षेपित नहीं किया जा रहा है।
TLS_KEY=$(base64 < "./tls.key" | tr -d '\n')
TLS_CRT=$(base64 < "./tls.crt" | tr -d '\n')
kubectl get secrets production-tls -o json \
| jq ".data[\"tls.key\"] |= \"$TLS_KEY\"" \
| jq ".data[\"tls.crt\"] |= \"$TLS_CRT\"" \
| kubectl apply -f -
यह मुझे कुब्तेल के 'पैच' पद्धति का उपयोग करने का प्रयास करने के लिए प्रेरित करता है, जो काम करने के लिए भी लगता है।
kubectl \
patch \
secret \
production-tls \
-p "{\"data\":{\"tls.key\":\"${TLS_KEY}\",\"tls.crt\":\"${TLS_CRT}\"}}"
इस उत्तर के लिए धन्यवाद, जो मेरी जरूरतों को पूरा करता है।
अधिक विशिष्ट मामलों के लिए आपको अपने नाम स्थान को निर्दिष्ट करने की आवश्यकता हो सकती है कि प्रमाण पत्र को नवीनीकृत करने और पुराने को हटाने की आवश्यकता है।
**For deletion of the cert **
kubectl delete secret -n `namespace`
**For creation of new cert to specific namespace **
kubectl create secret {your-cert-name} --key /etc/certs/{name}.com.key --cert /etc/certs/{name}.com.crt -n {namespace} ```
मैंने इसे इस्तेमाल किया है और यह एक आकर्षण की तरह काम करता है:
kubectl create secret docker-registry regcred --docker-server=<your-registry-server> --docker-username=<your-name> --docker-password=<your-pword> --docker-email=<your-email>
docker -server = https://index.docker.io/v1/ (DockerHub के लिए)
अधिक जानकारी के लिए: https://kubernetes.io/docs/tasks/pf-container/pull-image-pStreet-registry/#create-a-secret-by-prociding-credentials-on-the-command-line