मैंने एक रहस्य बनाया है 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
वैकल्पिक रूप से, आप भी उपयोग कर सकते हैं jq
s ' =
या |=
ऑपरेटर अद्यतन रहस्यों को मक्खी पर।
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