কুবেরনেটস - নেমস্পেসগুলি জুড়ে গোপনীয়তা


95

কুবেরনেটসের নেমস্পেসগুলি জুড়ে কী গোপনীয়তা ভাগ করার কোনও উপায় আছে?

আমার ব্যবহারের কেসটি হ'ল: আমার সমস্ত নেমস্পেসের জন্য আমার একই বেসরকারী রেজিস্ট্রি রয়েছে এবং আমি প্রত্যেকটির জন্য একই গোপনীয়তা তৈরি এড়াতে চাই।

আপনার সাহায্যের জন্য ধন্যবাদ.


এটি গোপন ভাগটি
নিককো

উত্তর:


86

সিক্রেট এপিআই অবজেক্ট একটি নেমস্পেসে থাকে। এগুলি কেবল একই নামস্থানে শুঁটি দ্বারা উল্লেখ করা যেতে পারে। মূলত, আপনাকে প্রতিটি নেমস্পেসের গোপনীয়তা তৈরি করতে হবে।

https://kubernetes.io/docs/concepts/configration/secret/# বিশদ


4
কনফিগারেশনের জন্য একই। kubernetes.io/docs/tasks/configure-pod-container/...
Breedly

4
এটি সঠিক উত্তর, উল্লেখযোগ্যভাবে আপনি কুবেক্টেল + সেড দ্বারা অন্য একটি নেমস্পেসে ক্লোন করতে পারেন, সমস্ত এক লাইনে, নীচে আমার উত্তরটি দেখুন।
নিককো


69

এগুলি কেবল একই নামস্থানে শুঁটি দ্বারা উল্লেখ করা যেতে পারে। তবে আপনি কেবল একটি নামের স্থান থেকে অন্য নামে গোপনীয়তা অনুলিপি করতে পারেন। নেমস্পেস 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 -

4
আপনি যে গোপনীয়তাগুলি থেকে রফতানি করছেন তা ডিফল্ট নেমস্পেসে না থাকলে এটি কাজ করবে না
gerasalus

4
V1.13-এ কোনও দুটি নাম স্থান জুড়ে আমার পক্ষে কাজ করে
ক্ষিতিজ সরোগি

4
হুম আমি যখন দ্বিতীয় কমান্ডটি ব্যবহার করি (কোনও --exportপতাকা নেই) তখন "প্রদত্ত বিকল্প থেকে নামস্থানটি মেলে না" বলে একটি ত্রুটি পাই। কুবেক্টল সংস্করণ 1.15। আমি মনে করি আউটপুট ইয়ামল থেকে নেমস্পেস সরাতে আপনাকে sedএই দুটি kubectlকমান্ডের মধ্যে কিছু বা কিছু ব্যবহারের প্রয়োজন হতে পারে
ম্যাট ডজ

6
সুনির্দিষ্টভাবে বলতে গেলে, আপনাকে মধ্যবর্তী ওয়াইএএমএল থেকে উত্স নেমস্পেসটি সরিয়ে ফেলতে হবে: $ kubectl get secret <SECRET> --namespace <NS-SRC> -oyaml | grep -v '^\s*namespace:\s' | kubectl apply --namespace <NS-DST> -f - অন্য বস্তুর ধরণের সাথে PS পরীক্ষা করা হয়নি, তবে পিপিএসে কাজ করা উচিত যদি আপনি
কোস্টা শাপিরো

16

গৃহীত উত্তরটি সঠিক, আপনি যদি নেমস্পেসের মধ্যে থাকা গোপনীয়তাটি অনুলিপি করতে দেখেন তবে এখানে একটি ইঙ্গিত দেওয়া আছে।

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/zakkg3/ClusterSecret


6

সিক্রেটস নামের গতিসম্পন্ন সংস্থান, তবে আপনি সেগুলি প্রতিলিপি করতে কোনও কুবারনেটস এক্সটেনশন ব্যবহার করতে পারেন। আমরা সমস্ত নেমস্পেসে স্বয়ংক্রিয়ভাবে গোপনীয়তার মধ্যে শংসাপত্রাদি বা শংসাপত্রগুলি প্রচার করতে এবং এগুলিকে সিঙ্কে রাখি (উত্সটি সংশোধন করুন এবং সমস্ত অনুলিপি আপডেট করা হয়েছে)) কুবারনেটস প্রতিবিম্বক ( 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]*"

এক্সটেনশনটি কনফিগারেশন এবং সার্টি-ম্যানেজার শংসাপত্রগুলিও সমর্থন করে। দাবি অস্বীকারকারী: আমি কুবারনেটস রিফ্লেক্টর এক্সটেনশনের লেখক।


ভাল অ্যাডন। এখন এটি ব্যবহার। ধন্যবাদ!
CTiPKA

2

ইনোসেন্ট অ্যানিগ্বো উত্তর হিসাবে আপনার একই নামস্থানে গোপনীয়তা থাকা দরকার। আপনার যদি সেই গতিশীলতা সমর্থন করার প্রয়োজন হয় বা গোপন তৈরিটি ভুলে যাওয়া এড়াতে প্রয়োজন হয় তবে নামস্পেস বস্তুর https://kubernetes.io/docs/admin/extensible-admission-controllers/ এর জন্য একটি প্রাথমিককরণ তৈরি করা সম্ভব (নিজেরাই এটি করেন নি) , তাই নিশ্চিতভাবে বলতে পারি না)


1

@ নিকোকোই থেকে উন্নতি হচ্ছে

একটি নামস্থান থেকে অন্য গোপনীয়তার অনুলিপি করতে একটি লাইনার

$ 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

1

--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 -

1

@ ইভানস টাকার এর উত্তরের ভিত্তিতে তবে আমরা যা চাই তা কেবল রাখার জন্য জেকিউ ফিল্টারের মধ্যে মুছে ফেলার পরিবর্তে শ্বেত তালিকাটি ব্যবহার করি।

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 -


0

কুবেটেল গোপন গিটলব-রেজিস্ট্রি পান - নামস্পেস = রেভসিস-কম - রপ্তানি-ই ইয়ামল | ub কুবেটেল প্রয়োগ --namespace = devspectrum-dev -f -


0

আসল নেমস্পেসের গোপনীয়তাটি ব্যবহার করার জন্য সার্ভিসকাকুনকে অনুমোদন দেওয়ার জন্য আরবিএসি ব্যবহার করুন। তবে, নামাপত্রের মধ্যে ভাগ করার গোপনীয়তা থাকার পরামর্শ দেওয়া হয় না।


0

সমস্ত গোপন অনুলিপি করার সমাধান।

kubectl delete secret --namespace $TARGET_NAMESPACE--all;
kubectl get secret --namespace default --output yaml \
    | sed "s/namespace: $SOURCE_NAMESPACE/namespace: $TARGET_NAMESPACE/" \
    | kubectl apply --namespace $TARGET_NAMESPACE --filename -;

0

yqYAML ফাইল সম্পাদনা করার জন্য একটি সহায়ক কমান্ড-লাইন সরঞ্জাম। আমি এটি পেতে অন্যান্য উত্তরের সাথে একযোগে এটি ব্যবহার করেছি:

kubectl get secret <SECRET> -n <SOURCE_NAMESPACE> -o yaml | yq write - 'metadata.namespace' <TARGET_NAMESPACE> | kubectl apply -n <TARGET_NAMESPACE> -f -

0

আপনি GoDaddy এর Kubernetes বহিরাগত গোপনীয়তা ব্যবহার সম্পর্কে ভাবতে পারেন ! যেখানে আপনি আপনার গুপ্তচরগুলি এডাব্লুএস সিক্রেট ম্যানেজারে সংরক্ষণ করবেন (এএসএম) এবং গোডাডির গোপন নিয়ন্ত্রক গোপনীয়তাগুলি স্বয়ংক্রিয়ভাবে তৈরি করবে। তদুপরি, এএসএম এবং কে 8 এস ক্লাস্টারের মধ্যে সিঙ্ক হবে।


আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.