Kustomize দিয়ে স্কেলিং

1. উদ্দেশ্য

Kustomize একটি টুল যা অ্যাপ্লিকেশন কনফিগারেশন কাস্টমাইজ করার জন্য একটি টেমপ্লেট-মুক্ত উপায় প্রবর্তন করে, অফ-দ্য-শেল্ফ অ্যাপ্লিকেশনগুলির ব্যবহারকে সহজ করে। এটি একটি স্ট্যান্ড একা ইউটিলিটি হিসাবে উপলব্ধ এবং kubectl apply -k এর একটি স্ট্যান্ড একা সিএলআই হিসাবে ব্যবহার করা যেতে পারে। অতিরিক্ত বিবরণের জন্য kustomize.io এ আরও পড়ুন।

এই টিউটোরিয়ালে আপনি Kustomize-এর কিছু মূল ধারণার মাধ্যমে কাজ করেন এবং অ্যাপ্লিকেশন এবং পরিবেশের বৈচিত্রগুলি পরিচালনা করতে এটি ব্যবহার করেন।

আপনি করবেন:

  • কাস্টমাইজ কমান্ড লাইন ক্লায়েন্ট ব্যবহার করুন
  • সাধারণ উপাদান ওভাররাইড করুন
  • বড় ইয়ামল স্ট্রাকচার প্যাচ করুন
  • ওভারলে একাধিক স্তর ব্যবহার করুন

2. আপনার কর্মক্ষেত্র প্রস্তুত করা হচ্ছে

  1. নিম্নলিখিত ইউআরএলে গিয়ে ক্লাউড শেল সম্পাদক খুলুন

https://ide.cloud.google.com

  1. টার্মিনাল উইন্ডোতে এই টিউটোরিয়ালের জন্য একটি কার্যকরী ডিরেক্টরি তৈরি করুন

mkdir kustomize-lab

  1. ডিরেক্টরিতে পরিবর্তন করুন এবং IDE ওয়ার্কস্পেস সেট করুন

cd kustomize-lab && cloudshell workspace .

3. কাস্টমাইজ কমান্ড লাইন ক্লায়েন্ট ব্যবহার করা

কাস্টমাইজের শক্তিটি আসে কাস্টম মান সহ বেস কুবারনেটস ইয়ামলগুলিকে ওভারলে এবং পরিবর্তন করার ক্ষমতা থেকে। এই কাস্টমাইজ করার জন্য ফাইলগুলি কোথায় আছে এবং কী ওভাররাইড করতে হবে তার নির্দেশাবলী সহ একটি বেস ফাইল প্রয়োজন। Kubernetes বাস্তুতন্ত্রের মধ্যে Kustomize অন্তর্ভুক্ত করা হয়েছে এবং বিভিন্ন পদ্ধতির মাধ্যমে কার্যকর করা যেতে পারে।

এই বিভাগে আপনি একটি বেস কাস্টমাইজ কনফিগারেশন তৈরি করবেন এবং স্ট্যান্ড একা কাস্টমাইজ কমান্ড লাইন ক্লায়েন্টের সাথে ফাইলগুলি প্রক্রিয়া করবেন।

  1. শুরু করতে, আপনি আপনার বেস কনফিগারেশন ফাইলগুলি ধরে রাখার জন্য একটি ফোল্ডার তৈরি করবেন

mkdir -p chat-app/base

  1. বেস ফোল্ডারে একটি সাধারণ kubernetes deployment.yaml তৈরি করুন

cat <<EOF > chat-app/base/deployment.yaml

kind: Deployment

apiVersion: apps/v1

metadata:

name: app

spec:

template:

`metadata:`

  `name: chat-app`

`spec:`

  `containers:`

  `- name: chat-app`

    `image: chat-app-image`

EOF

  1. বেস kustomization.yaml তৈরি করুন

Kustomize একটি এন্ট্রি পয়েন্ট হিসাবে kustomization.yaml নামক একটি ফাইলের সন্ধান করে। এই ফাইলটিতে বিভিন্ন বেস এবং ওভাররাইড ফাইলের পাশাপাশি নির্দিষ্ট ওভাররাইড মানগুলির উল্লেখ রয়েছে।

একটি kustomization.yaml ফাইল তৈরি করুন যা deployment.yaml বেস রিসোর্স হিসাবে উল্লেখ করে।

cat <<EOF > chat-app/base/kustomization.yaml

bases:

- deployment.yaml

EOF

  1. বেস ফোল্ডারে kustomize কমান্ডটি চালান। এটি করার ফলে কোনো পরিবর্তন ছাড়াই ডিপ্লোয়মেন্ট YAML ফাইলগুলি আউটপুট হয়, যা প্রত্যাশিত কারণ আপনি এখনও কোনো বৈচিত্র অন্তর্ভুক্ত করেননি।

kustomize build chat-app/base

নিম্নলিখিত উদাহরণের মতো সরাসরি আউটপুট প্রয়োগ করতে এই স্বতন্ত্র ক্লায়েন্টটিকে kubectl ক্লায়েন্টের সাথে একত্রিত করা যেতে পারে। এটি করার ফলে বিল্ড কমান্ডের আউটপুট সরাসরি kubectl apply কমান্ডে প্রবাহিত হয়।

(চালনা করবেন না - শুধুমাত্র রেফারেন্সের জন্য অন্তর্ভুক্ত)

kustomize build chat-app/base | kubectl apply -f -

kustomize ক্লায়েন্টের একটি নির্দিষ্ট সংস্করণের প্রয়োজন হলে এই কৌশলটি কার্যকর।

বিকল্পভাবে kustomize কে kubectl-এর মধ্যেই ইন্টিগ্রেটেড টুলিং দিয়ে চালানো যেতে পারে। নিম্নলিখিত উদাহরণ হিসাবে.

(চালনা করবেন না - শুধুমাত্র রেফারেন্সের জন্য অন্তর্ভুক্ত)

kubectl apply -k chat-app/base

4. সাধারণ উপাদান ওভাররাইডিং

এখন যেহেতু আপনার ওয়ার্কস্পেস কনফিগার করা হয়েছে এবং আপনি যাচাই করেছেন যে kustomize কাজ করছে, এটি কিছু বেস মান ওভাররাইড করার সময়।

প্রতিটি অ্যাপ্লিকেশন এবং পরিবেশের জন্য চিত্র, নামস্থান এবং লেবেলগুলি সাধারণত কাস্টমাইজ করা হয়। যেহেতু সেগুলি সাধারণত পরিবর্তিত হয়, তাই Kustomize আপনাকে kustomize.yaml এ সরাসরি সেগুলি ঘোষণা করতে দেয়, এই সাধারণ পরিস্থিতিগুলির জন্য অনেকগুলি প্যাচ তৈরি করার প্রয়োজনীয়তা দূর করে৷

এই কৌশলটি প্রায়শই একটি টেমপ্লেটের একটি নির্দিষ্ট উদাহরণ তৈরি করতে ব্যবহৃত হয়। সম্পদের একটি বেস সেট এখন কেবল নাম এবং এর নামস্থান পরিবর্তন করে একাধিক বাস্তবায়নের জন্য ব্যবহার করা যেতে পারে।

এই উদাহরণে, আপনি একটি নামস্থান, নাম উপসর্গ যোগ করবেন এবং আপনার kustomization.yaml এ কিছু লেবেল যোগ করবেন।

  1. সাধারণ লেবেল এবং নামস্থান অন্তর্ভুক্ত করতে kustomization.yaml ফাইলটি আপডেট করুন।

আপনার টার্মিনালে নিম্নলিখিত কমান্ডগুলি অনুলিপি করুন এবং কার্যকর করুন

cat <<EOF > chat-app/base/kustomization.yaml

bases:

- deployment.yaml

namespace: my-namespace

nameprefix: my-

commonLabels:

app: my-app

EOF

  1. বিল্ড কমান্ডটি চালান

এই মুহুর্তে বিল্ডটি কার্যকর করা দেখায় যে ফলাফলপ্রাপ্ত YAML ফাইলটিতে এখন পরিষেবা এবং স্থাপনার উভয় সংজ্ঞাতে নামস্থান, লেবেল এবং প্রিফিক্সড নাম রয়েছে।

kustomize build chat-app/base

নোট করুন কিভাবে আউটপুটে লেবেল এবং নেমস্পেস রয়েছে যেগুলি স্থাপনার YAML ফাইলে নেই। কীভাবে নামটি chat-app থেকে my-chat-app পরিবর্তন করা হয়েছিল তাও নোট করুন

(আউটপুট কপি করবেন না)

kind: Deployment

metadata:

labels:

`app: my-app`

name: my-chat-app

namespace: my-namespace

5. বড় ইয়ামল স্ট্রাকচার প্যাচিং

Kustomize প্যাচগুলি প্রয়োগ করার ক্ষমতাও প্রদান করে যা বেস সংস্থানগুলিকে ওভারলে করে। এই কৌশলটি প্রায়শই অ্যাপ্লিকেশন এবং পরিবেশের মধ্যে পরিবর্তনশীলতা প্রদান করতে ব্যবহৃত হয়।

এই ধাপে, আপনি একই বেস রিসোর্স ব্যবহার করে এমন একটি একক অ্যাপ্লিকেশনের জন্য পরিবেশের বৈচিত্র তৈরি করবেন।

  1. বিভিন্ন পরিবেশের জন্য ফোল্ডার তৈরি করে শুরু করুন

mkdir -p chat-app/dev

mkdir -p chat-app/prod

  1. নিম্নলিখিত কমান্ড দিয়ে স্টেজ প্যাচ লিখুন

cat <<EOF > chat-app/dev/deployment.yaml

kind: Deployment

apiVersion: apps/v1

metadata:

name: app

spec:

template:

`spec:`

  `containers:`

  `- name: chat-app`

    `env:`

    `- name: ENVIRONMENT`

      `value: dev`

EOF

  1. এখন নিম্নলিখিত কমান্ড দিয়ে prod প্যাচ লিখুন

cat <<EOF > chat-app/prod/deployment.yaml

kind: Deployment

apiVersion: apps/v1

metadata:

name: app

spec:

template:

`spec:`

  `containers:`

  `- name: chat-app`

    `env:`

    `- name: ENVIRONMENT`

      `value: prod`

EOF

লক্ষ্য করুন যে উপরের প্যাচগুলিতে ধারক ছবির নাম নেই। আগের ধাপে আপনার তৈরি করা base/deployment.yaml-এ সেই মান দেওয়া আছে। যদিও এই প্যাচগুলিতে dev এবং prod-এর জন্য অনন্য পরিবেশ ভেরিয়েবল থাকে।

  1. বেস ডিরেক্টরির জন্য YAML ফাইলগুলি কাস্টমাইজ করুন

বেস kustomization.yaml পুনরায় লিখুন, নামস্থান এবং নাম উপসর্গটি মুছে ফেলুন কারণ এটি কোনও পরিবর্তন ছাড়াই কেবল বেস কনফিগারেশন। এই ক্ষেত্রগুলিকে কিছুক্ষণের মধ্যে পরিবেশের ফাইলগুলিতে সরানো হবে।

cat <<EOF > chat-app/base/kustomization.yaml

bases:

- deployment.yaml

commonLabels:

app: chat-app

EOF

  1. dev ডিরেক্টরির জন্য কাস্টমাইজ YAML ফাইলগুলি প্রয়োগ করুন

এখন আপনার টার্মিনালে নিম্নলিখিত কমান্ডগুলি সম্পাদন করে dev এবং prod-এর বৈচিত্রগুলি বাস্তবায়ন করুন।

cat <<EOF > chat-app/dev/kustomization.yaml

bases:

- ../base

namespace: dev

nameprefix: dev-

commonLabels:

env: dev

patches:

- deployment.yaml

EOF

patches সংযোজন নোট করুন : ফাইলের বিভাগ। এটি নির্দেশ করে যে kustomize-এর মাধ্যমে সেই ফাইলগুলিকে বেস রিসোর্সের উপরে ওভারলে করা উচিত।

  1. প্রোড ডিরেক্টরির জন্য কাস্টমাইজ YAML ফাইলগুলি প্রয়োগ করুন

cat <<EOF > chat-app/prod/kustomization.yaml

bases:

- ../base

namespace: prod

nameprefix: prod-

commonLabels:

env: prod

patches:

- deployment.yaml

EOF

  1. ফাইলগুলি মার্জ করতে কাস্টমাইজ চালান

বেস এবং এনভায়রনমেন্ট ফাইল তৈরি করে, আপনি বেস ফাইল প্যাচ করার জন্য কাস্টমাইজ প্রক্রিয়া চালাতে পারেন।

মার্জড ফলাফল দেখতে dev-এর জন্য নিম্নলিখিত কমান্ডটি চালান।

kustomize build chat-app/dev

লক্ষ্য করুন আউটপুটে একত্রিত ফলাফল রয়েছে যেমন বেস এবং ডেভ কনফিগারেশনের লেবেল এবং সেইসাথে বেস থেকে ধারক ছবির নাম এবং dev ফোল্ডার থেকে পরিবেশ পরিবর্তনশীল।

6. ওভারলে একাধিক স্তর ব্যবহার

অনেক সংস্থার একটি দল রয়েছে যা অ্যাপ টিমকে সমর্থন করে এবং প্ল্যাটফর্ম পরিচালনা করতে সহায়তা করে। প্রায়শই এই দলগুলি নির্দিষ্ট বিবরণ অন্তর্ভুক্ত করতে চাইবে যা সমস্ত পরিবেশ জুড়ে সমস্ত অ্যাপে অন্তর্ভুক্ত করা হবে, যেমন একটি লগিং এজেন্ট।

এই উদাহরণে, আপনি একটি shared-kustomize ফোল্ডার এবং সংস্থান তৈরি করবেন যা সমস্ত অ্যাপ্লিকেশন দ্বারা অন্তর্ভুক্ত করা হবে এবং তারা যে পরিবেশে স্থাপন করা হয়েছে তা নির্বিশেষে।

  1. ভাগ করা-কাস্টমাইজ ফোল্ডার তৈরি করুন

mkdir shared-kustomize

  1. শেয়ার করা ফোল্ডারে একটি সাধারণ deployment.yaml তৈরি করুন

cat <<EOF > shared-kustomize/deployment.yaml

kind: Deployment

apiVersion: apps/v1

metadata:

name: app

spec:

template:

`spec:`

  `containers:`

  `- name: logging-agent`

    `image: logging-agent-image`

EOF

  1. শেয়ার করা ফোল্ডারে একটি kustomization.yaml তৈরি করুন

cat <<EOF > shared-kustomize/kustomization.yaml

bases:

- deployment.yaml

EOF

  1. আপনার অ্যাপ্লিকেশন থেকে ভাগ করা-কাস্টমাইজ ফোল্ডারটি উল্লেখ করুন

যেহেতু আপনি shared-kustomize ফোল্ডারটিকে আপনার সমস্ত অ্যাপ্লিকেশনের ভিত্তি হিসাবে চান, তাই বেস হিসাবে shared-kustomize ব্যবহার করার জন্য আপনাকে আপনার chat-app/base/kustomization.yaml আপডেট করতে হবে৷ তারপর উপরে তার নিজস্ব deployment.yaml প্যাচ করুন। এনভায়রনমেন্ট ফোল্ডারগুলি এর উপরে আবার প্যাচ করবে।

আপনার টার্মিনালে নিম্নলিখিত কমান্ডগুলি অনুলিপি করুন এবং কার্যকর করুন

cat <<EOF > chat-app/base/kustomization.yaml

bases:

- ../../shared-kustomize

commonLabels:

app: chat-app

patches:

- deployment.yaml

EOF

  1. কাস্টমাইজ চালান এবং dev-এর জন্য মার্জ করা ফলাফল দেখুন

kustomize build chat-app/dev

নোট করুন আউটপুটে অ্যাপ বেস, অ্যাপ এনভায়রনমেন্ট এবং shared-kustomize ফোল্ডার থেকে মার্জ করা ফলাফল রয়েছে। বিশেষত, আপনি তিনটি অবস্থান থেকে কন্টেইনার বিভাগের মান দেখতে পারেন।

(আউটপুট কপি করবেন না)

<প্রে>

`containers:`

      `- env:`

        `- name: ENVIRONMENT`

          `value: dev`

        `name: chat-app`

      `- image: image`

        `name: app`

      `- image: logging-agent-image`

        `name: logging-agent`

</pre>