আমি একটি গোপন ব্যবহার করে তৈরি করেছি
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 -
শংসাপত্রগুলি সরল পাঠ্য ছিল।
--dry-run=client
কুবেক্টেল ১.১৮ বা তার বেশি এর সাথে ব্যবহার করা দরকার ।
আপনি গোপনীয়টিকে মুছে ফেলতে এবং তাৎক্ষণিকভাবে পুনরায় তৈরি করতে পারেন:
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}\"}}"
আমার উত্তরটি সবচেয়ে ভাল পূরণ করে এমন উত্তরের জন্য ডেভিকে ধন্যবাদ জানাই।
কেবলমাত্র এই উত্তরগুলির প্রসারিত করার জন্য আমি জানতে পেরেছি যে মুছতে মুছে ফেলার জন্য '--ignore-not-পাওয়া' যুক্ত করা আমাদের CICD- তে সহায়তা করেছে কারণ গোপনটি না থাকলে এটি ত্রুটিযুক্ত হবে না, এটি কেবল এগিয়ে গিয়ে এটি তৈরি করবে:
kubectl delete secret production-tls --ignore-not-found
kubectl create secret generic production-tls --from-file=./tls.key --from-file=./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} ```