কুবেরনেটসের নেমস্পেসগুলি জুড়ে কী গোপনীয়তা ভাগ করার কোনও উপায় আছে?
আমার ব্যবহারের কেসটি হ'ল: আমার সমস্ত নেমস্পেসের জন্য আমার একই বেসরকারী রেজিস্ট্রি রয়েছে এবং আমি প্রত্যেকটির জন্য একই গোপনীয়তা তৈরি এড়াতে চাই।
আপনার সাহায্যের জন্য ধন্যবাদ.
উত্তর:
সিক্রেট এপিআই অবজেক্ট একটি নেমস্পেসে থাকে। এগুলি কেবল একই নামস্থানে শুঁটি দ্বারা উল্লেখ করা যেতে পারে। মূলত, আপনাকে প্রতিটি নেমস্পেসের গোপনীয়তা তৈরি করতে হবে।
https://kubernetes.io/docs/concepts/configration/secret/# বিশদ
এগুলি কেবল একই নামস্থানে শুঁটি দ্বারা উল্লেখ করা যেতে পারে। তবে আপনি কেবল একটি নামের স্থান থেকে অন্য নামে গোপনীয়তা অনুলিপি করতে পারেন। নেমস্পেস localdockerregথেকে গোপন অনুলিপি করার একটি উদাহরণ এখানে :defaultdev
kubectl get secret localdockerreg --namespace=default --export -o yaml | kubectl apply --namespace=dev -f -
### আপডেট ### কুবেরনেটসে v1.14 --exportপতাকাটি অবচিত করা হয়েছে । সুতরাং, -oyamlপতাকা সহ নিম্নলিখিত কমান্ডটি আসন্ন সংস্করণগুলিতে কোনও সতর্কতা ছাড়াই কাজ করবে।
kubectl get secret localdockerreg --namespace=default -oyaml | kubectl apply --namespace=dev -f -
বা নীচে যদি উত্স নেমস্পেস অগত্যা ডিফল্ট না হয়
kubectl get secret localdockerreg --namespace=default -oyaml | grep -v '^\s*namespace:\s' | kubectl apply --namespace=dev -f -
--exportপতাকা নেই) তখন "প্রদত্ত বিকল্প থেকে নামস্থানটি মেলে না" বলে একটি ত্রুটি পাই। কুবেক্টল সংস্করণ 1.15। আমি মনে করি আউটপুট ইয়ামল থেকে নেমস্পেস সরাতে আপনাকে sedএই দুটি kubectlকমান্ডের মধ্যে কিছু বা কিছু ব্যবহারের প্রয়োজন হতে পারে
$ kubectl get secret <SECRET> --namespace <NS-SRC> -oyaml | grep -v '^\s*namespace:\s' | kubectl apply --namespace <NS-DST> -f - অন্য বস্তুর ধরণের সাথে PS পরীক্ষা করা হয়নি, তবে পিপিএসে কাজ করা উচিত যদি আপনি
গৃহীত উত্তরটি সঠিক, আপনি যদি নেমস্পেসের মধ্যে থাকা গোপনীয়তাটি অনুলিপি করতে দেখেন তবে এখানে একটি ইঙ্গিত দেওয়া আছে।
kubectl get secret <secret-name> -n <source-namespace> -o yaml \
| sed s/"namespace: <source-namespace>"/"namespace: <destination-namespace>"/\
| kubectl apply -n <destination-namespace> -f -
2020 এপ্রিল সম্পাদনা করুন:
ক্লাস্টারসেক্রেট অপারেটরটি ব্যবহার করে নেমস্পেসগুলি এবং এর গোপনীয়তাগুলি ভাগ করার বা সিঙ্ক করার একটি উপায় রয়েছে:
সিক্রেটস নামের গতিসম্পন্ন সংস্থান, তবে আপনি সেগুলি প্রতিলিপি করতে কোনও কুবারনেটস এক্সটেনশন ব্যবহার করতে পারেন। আমরা সমস্ত নেমস্পেসে স্বয়ংক্রিয়ভাবে গোপনীয়তার মধ্যে শংসাপত্রাদি বা শংসাপত্রগুলি প্রচার করতে এবং এগুলিকে সিঙ্কে রাখি (উত্সটি সংশোধন করুন এবং সমস্ত অনুলিপি আপডেট করা হয়েছে)) কুবারনেটস প্রতিবিম্বক ( https://github.com/EmberStack/kubernetes-reflector ) দেখুন।
এক্সটেনশানটি আপনাকে টীকাগুলির মাধ্যমে নেমস্পেসের মধ্যে একটি গোপনীয় স্বয়ংক্রিয়ভাবে অনুলিপি এবং সিঙ্কে রাখার অনুমতি দেয়:
উত্স গোপনে টিকা যুক্ত করুন:
annotations:
reflector.v1.k8s.emberstack.com/reflection-auto-enabled: "true"
এটি সমস্ত নেমস্পেসে গোপনীয়তার একটি অনুলিপি তৈরি করবে। আপনি কোনও নামলিপি সীমাবদ্ধ করতে পারেন যেখানে একটি অনুলিপি ব্যবহার করে তৈরি করা হয়েছে:
reflector.v1.k8s.emberstack.com/reflection-allowed-namespaces: "namespace-1,namespace-2,namespace-[0-9]*"
এক্সটেনশনটি কনফিগারেশন এবং সার্টি-ম্যানেজার শংসাপত্রগুলিও সমর্থন করে। দাবি অস্বীকারকারী: আমি কুবারনেটস রিফ্লেক্টর এক্সটেনশনের লেখক।
ইনোসেন্ট অ্যানিগ্বো উত্তর হিসাবে আপনার একই নামস্থানে গোপনীয়তা থাকা দরকার। আপনার যদি সেই গতিশীলতা সমর্থন করার প্রয়োজন হয় বা গোপন তৈরিটি ভুলে যাওয়া এড়াতে প্রয়োজন হয় তবে নামস্পেস বস্তুর https://kubernetes.io/docs/admin/extensible-admission-controllers/ এর জন্য একটি প্রাথমিককরণ তৈরি করা সম্ভব (নিজেরাই এটি করেন নি) , তাই নিশ্চিতভাবে বলতে পারি না)
একটি নামস্থান থেকে অন্য গোপনীয়তার অনুলিপি করতে একটি লাইনার
$ for i in `kubectl get secrets | awk '{print $1}'`; do kubectl get secret $1 -n <source-namespace> -o yaml | sed s/"namespace: <source-namespace>"/"namespace: <target-namespace>"/ | kubectl apply -n <target-namespace> -f - ; done
--export অবচয় করা হয়
sed YAML বা JSON সম্পাদনা করার উপযুক্ত সরঞ্জাম নয়।
jqআমরা চাই না এমন নামস্থান এবং অন্যান্য মেটাডেটা মোছার জন্য এখানে একটি উদাহরণ রয়েছে :
kubectl get secret cure-for-covid-19 -n china -o json | jq 'del(.metadata["namespace","creationTimestamp","resourceVersion","selfLink","uid"])' | kubectl apply -n rest-of-world -f -
@ ইভানস টাকার এর উত্তরের ভিত্তিতে তবে আমরা যা চাই তা কেবল রাখার জন্য জেকিউ ফিল্টারের মধ্যে মুছে ফেলার পরিবর্তে শ্বেত তালিকাটি ব্যবহার করি।
kubectl get secret cure-for-covid-19 -n china -o json | jq '{apiVersion,data,kind,metadata,type} | .metadata |= {"annotations", "name"}' | kubectl apply -n rest-of-world -f -
মূলত একই জিনিস তবে লেবেল সংরক্ষণ করে।
kubectl get secret cure-for-covid-19 -n china -o json | jq '{apiVersion,data,kind,metadata,type} | .metadata |= {"annotations", "name", "labels"}' | kubectl apply -n rest-of-world -f -
কুবেটেল গোপন গিটলব-রেজিস্ট্রি পান - নামস্পেস = রেভসিস-কম - রপ্তানি-ই ইয়ামল | ub কুবেটেল প্রয়োগ --namespace = devspectrum-dev -f -
আপনি GoDaddy এর Kubernetes বহিরাগত গোপনীয়তা ব্যবহার সম্পর্কে ভাবতে পারেন ! যেখানে আপনি আপনার গুপ্তচরগুলি এডাব্লুএস সিক্রেট ম্যানেজারে সংরক্ষণ করবেন (এএসএম) এবং গোডাডির গোপন নিয়ন্ত্রক গোপনীয়তাগুলি স্বয়ংক্রিয়ভাবে তৈরি করবে। তদুপরি, এএসএম এবং কে 8 এস ক্লাস্টারের মধ্যে সিঙ্ক হবে।
আর একটি অপশন হ'ল কুবেড ব্যবহার করা হবে , যেমন জেস্টটকের দয়াবান লোকেরা আমাদেরকে সার্টি-ম্যানেজার দিয়েছে বলে প্রস্তাবিত। এখানে তারা লিঙ্ক করেছে।