মোতায়েন কুবেরনেটসের পরিষেবাগুলির জন্য YAML পান?


104

আমি আমার অ্যাপ্লিকেশনটি কুবারনেটসে স্থাপন করার চেষ্টা করছি গুগল কনটেইনার ইঞ্জিনে চলমান ।

অ্যাপটি এখানে পাওয়া যাবে: https://github.com/Industrial/docker-znc

Dockerfile একটি চিত্র মধ্যে নির্মিত হয় গুগল কনটেইনার রেজিস্ট্রি

আমি অ্যাপটি ডিপোজিটে করেছি + বোতামের মাধ্যমে কুবারনেটসে । এর জন্য আমার ওয়াইএএমএল নেই।

আমি একটি সন্নিবেশিত আছে সিক্রেট মধ্যে Kubernetes অবশ্যই PEM অ্যাপ্লিকেশন দ্বারা প্রয়োজনীয় ফাইলের জন্য।

  1. আমি কীভাবে ডিপ্লয়মেন্ট , সার্ভিস এবং এর জন্য ওয়াইএএমএল পাব শুঁটি ফর্ম পূরণ করে Kubernetes দ্বারা সৃষ্টি করেছেন?
  2. আমি কীভাবে ব্যবহারের জন্য আমার পডের মধ্যে গোপনীয়তা পেতে পারি ?

উত্তর:


155

মোতায়েনের জন্য যমল পেতে (পরিষেবা, পোড, গোপন, ইত্যাদি):

kubectl get deploy deploymentname -o yaml --export

4
সম্পূর্ণ ক্লাস্টার (সমস্ত মোতায়েন) এর জন্য এটি কীভাবে করবেন কোনও ধারণা? ধারণাটি হ'ল অবশ্যই একই পরিষেবাগুলির সাথে আয়না পরিবেশ তৈরি করা create
সিনায়েস্টিক

4
@ সিনেস্ট্যাটিক, তালিকার রফতানি এখন পর্যন্ত সমর্থিত নয় এবং শীঘ্রই আসবে বলে মনে হয় না। আপনার তালিকা তৈরির জন্য সমস্ত রিসোর্সগুলি তালিকাভুক্ত করার জন্য আপনার সম্ভবত একটি স্ক্রিপ্টের প্রয়োজন হবে those github.com/kubernetes/kubernetes/issues/…
মাববিন

17
কুবেরনেটস 1.14 হিসাবে, --exportঅবচিত হয়; দেখতে এখানে । আপনি get -o yamlএটি ছাড়াই ব্যবহার করতে পারবেন --export, যদিও এতে বর্তমান অবজেক্টের স্থিতি সম্পর্কিত তথ্য রয়েছে, পাশাপাশি অবজেক্টটি কনফিগার করার জন্য ঘোষিত কনফিগারেশনও রয়েছে।
জোশ কেলি

"-O ইয়ামল" দ্বারা উত্পাদিত যমল থেকে এখনও কিছু বর্তমান অবস্থা অপসারণ করা প্রয়োজন, উদাহরণস্বরূপ, spec.clusterIPএবং metadata.resourceVersionপরিষেবাতে।
টনি লি

16

ফর্ম পূরণ করে কুবার্নেটেসের তৈরি করা ডিপ্লয়মেন্ট, সার্ভিস এবং পডের ওয়াইএএমএল কীভাবে পাব?

kubectl get deployment,service,pod yourapp -o yaml --export

@ সিনেস্টিক প্রশ্নের উত্তর:

সম্পূর্ণ ক্লাস্টার (সমস্ত মোতায়েন) এর জন্য এটি কীভাবে করবেন কোনও ধারণা?

kubectl get deploy --all-namespaces -o yaml --export

এই পদ্ধতির সমস্যাটি হ'ল রফতানিতে নাম স্থান অন্তর্ভুক্ত থাকে না। সুতরাং আপনি যদি একই সাথে অনেকগুলি সংস্থান রফতানি করতে চান তবে আমি নাম স্থানটিতে এটি করার পরামর্শ দিচ্ছি:

kubectl get deploy,sts,svc,configmap,secret -n default -o yaml --export > default.yaml

দুর্ভাগ্যক্রমে কুবারনেটস এখনও একটি সত্যিকারের সমস্ত কমান্ড সমর্থন করে না , সুতরাং আপনি যে ধরণের সংস্থান রফতানি করতে চান তার ম্যানুয়ালি তালিকা তৈরি করতে হবে। আপনি এর সাথে সংস্থানগুলির ধরণের একটি তালিকা পেতে পারেন

kubectl api-resources

4
kubectl get $(kubectl api-resources | awk '{print $1}' | tail -n +2 | tr '\n' ',' | sed s/,\$//) -o yaml > manifest.yaml
ম্যাকিংস্টন

9

একই সমস্যাটি কুবেরনেটস গিটহাব ইস্যু পৃষ্ঠাতে আলোচনা করা হয়েছে এবং ব্যবহারকারী "আলাহিজানী" একটি বাশ স্ক্রিপ্ট তৈরি করেছেন যা সমস্ত ইয়ামল রফতানি করে এবং সেগুলি একক ফাইল এবং ফোল্ডারে লেখায়।

যেহেতু এই প্রশ্নটি গুগলে ভাল রয়েছে এবং যেহেতু আমি সেই সমাধানটি খুব ভাল পেয়েছি তাই আমি এখানে এটি উপস্থাপন করছি।

বাশ স্ক্রিপ্ট সাব-ফোল্ডারে ইয়ামল রফতানি করে:

for n in $(kubectl get -o=name pvc,configmap,serviceaccount,secret,ingress,service,deployment,statefulset,hpa,job,cronjob)
do
    mkdir -p $(dirname $n)
    kubectl get -o=yaml --export $n > $n.yaml
done

আরেকজন ব্যবহারকারী "অ্যাকন্ড্র্যাট" একটি স্ক্রিপ্ট তৈরি করেছিলেন যা ডিরেক্টরি ব্যবহার করে না, এটি kubectl apply -fপরে তৈরি করা সহজ করে তোলে ।

বাশ স্ক্রিপ্ট বর্তমান ফোল্ডারে ইয়ামল রফতানি করে:

for n in $(kubectl get -o=name pvc,configmap,ingress,service,secret,deployment,statefulset,hpa,job,cronjob | grep -v 'secret/default-token')
do
    kubectl get -o=yaml --export $n > $(dirname $n)_$(basename $n).yaml
done

শেষ স্ক্রিপ্টে পরিষেবা অ্যাকাউন্ট অন্তর্ভুক্ত নয়।


5

কুবেরনেট থেকে ইয়ামল ডাউনলোড করার সিনট্যাক্স

কুবেক্টেল [সংস্থার ধরণ] -ন [নেমস্পেস] [সংস্থান নাম] -ও ইয়ামল> [নতুন ফাইলের নাম] পান

চলমান পড থেকে ইয়ামল ফাইল তৈরি করুন:

  1. কুবেটেল পিও-এন এনজিনেক্স এনজিনেক্স-ডিপ্লয়মেন্ট-755cfc7dcf-5s7j8 -o ইয়ামল> পডডেটেল.আইএমএল পান

চলমান পড থেকে প্রতিলিপি ইমেল ফাইল তৈরি করুন:

  1. কুবেটেল আরএস-এন এনজিনেক্স-ই ইয়ামল> সর্বশেষতম রেপ্লিকাসেট.আইএমএল পাবেন

চলমান পড থেকে মোতায়েনের ইয়ামল ফাইল তৈরি করুন:

  1. kubectl get Deploy -n nginx -o yaml> সর্বশেষপরিবর্তন.আইএমএল

4

গোপন সম্পর্কিত 2 য় প্রশ্নের জন্য, এটি কে 8 এস ডকুমেন্টেশন থেকে। দেখতে https://kubernetes.io/docs/concepts/configuration/secret/#using-secrets আরও তথ্যের জন্য।

  1. একটি গোপন তৈরি করুন বা বিদ্যমান একটি ব্যবহার করুন। একাধিক শুঁটি একই গোপনীয়তার উল্লেখ করতে পারে।
  2. Spec.volume [] এর অধীনে একটি ভলিউম যুক্ত করতে আপনার পড সংজ্ঞাটি পরিবর্তন করুন ify ভলিউমের যে কোনও কিছুর নাম দিন এবং একটি স্পেস.ভলিউমস []। গোপন অবজেক্টের নামের সমান সেক্রেট.সেক্রেটনাম ক্ষেত্র রয়েছে।
  3. প্রতিটি কন্টেইনারটির জন্য গোপনীয়তার প্রয়োজনে একটি স্পট কন্টেইনারস []। ভলিউমমাউন্টস [] যুক্ত করুন। নির্দিষ্ট কোড কনটেইনারগুলি []। ভলিউমমাউন্টস []। পঠনযোগ্য = সত্য এবং স্পষ্ট কন্টেন্টারস []। ভলিউমমাউন্টস []। মাউন্টপথ একটি অব্যবহৃত ডিরেক্টরি নাম যেখানে আপনি গোপনীয়তা প্রকাশ করতে চান।
  4. আপনার চিত্র এবং / অথবা কমান্ড লাইনটি সংশোধন করুন যাতে প্রোগ্রামটি সেই ডিরেক্টরিতে থাকা ফাইলগুলির সন্ধান করে। গোপন তথ্য মানচিত্রের প্রতিটি কী মাউন্টপ্যাথের অধীনে ফাইলের নাম হয়ে যায়।

আমি এটি ব্যবহার করেছি এবং এটি দুর্দান্ত কাজ করে।


4
  • উপরে উল্লিখিত "--export" কুবেরনেটসের সাথে সম্পর্কিত ম্যানিফেস্ট পাওয়ার জন্য একটি বিকল্প
  • তবে "- রফতানি "টিকে বগি হিসাবে বিবেচনা করা হয় এবং এটি হ্রাস করার প্রস্তাব রয়েছে
  • বর্তমানে আরও ভাল বিকল্পটি হ'ল "-o ইয়ামল" বা "-o জসন" করা এবং অপ্রয়োজনীয় ক্ষেত্রগুলি সরিয়ে ফেলা
  • মূল পার্থক্য হ'ল "- রফতানি" দ্বারা ক্লাস্টার নির্দিষ্ট সেটিংস মুছে ফেলা হবে (উদাহরণস্বরূপ একটি কে 8 এস পরিষেবার ক্লাস্টার সার্ভিস আইপি)। তবে এটি এক্ষেত্রে বেমানান বলে প্রমাণিত হয়েছে

2

আপনার পরিষেবার yaml ফর্ম্যাট পেতে এই আদেশটি ব্যবহার করুন

kubectl get service servicename -n <namespace> -o yaml

আপনি এটি কিছু ফাইলে রাখতে পারেন

kubectl get service servicename -n <namespace> -o yaml > service.yaml


0
kubectl -n <namespace> get <resource type> <resource Name> -o yaml 

উপরের কমান্ডের সাহায্যে কুবেরনেটসে সংজ্ঞায়িত যে কোনও সংস্থান YAMLবিন্যাসে রফতানি করা যায় ।


0

আপনার যদি ফাইলটি দেখতে এবং সম্পাদনা করতে হয় তবে:

kubectl edit service servicename


0
  1. আপনি এই কমান্ডটি ব্যবহার করে সংস্থানগুলির yaml ফাইলগুলি পেতে পারেন

    kubectl -n <namespace> get <resource type> <resource Name> -o yaml

  2. আপনার পোদে গোপনীয়তা পেতে,

এই জাতীয় কিছু ব্যবহার করুন

env
- valueFrom
    secretKeyRef:
      name: secret_name
      key: key_name

বা

envFrom
- secretRef:
    name: secret_name

 

0

আমি জানি এটি উত্তর দেওয়া খুব পুরানো, তবে আশা করি, কেউ এটি সহায়ক হিসাবে খুঁজে পাবেন।

সমস্ত নেমস্পেস থেকে এক ধরণের রফতানি আনতে আমরা নীচের কমান্ডটি চেষ্টা করতে পারি -

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