কম্পিউটার টিউটোরিয়াল

Azure Kubernetes পরিষেবাতে অ্যাপ্লিকেশন স্থাপন করা হচ্ছে:পার্ট 2 – উন্নত কনফিগারেশন

পরিচয়

এই নিবন্ধে আমরা কী কভার করব?

  • কনফিগম্যাপ কি?
  • একটি কনফিগম্যাপ দিয়ে মাস্টার পুনরায় তৈরি করুন
  • একটি ফাইল থেকে একটি কনফিগম্যাপ তৈরি করা
  • একটি YAML ফাইল থেকে একটি কনফিগম্যাপ তৈরি করা
  • কনফিগারেশন ডেটা পড়ার জন্য একটি ConfigMap ব্যবহার করে

পূর্বশর্ত

  • একেএস-এ অ্যাপ্লিকেশন স্থাপনা | পর্ব – ১

AKS অংশ 1-এ অ্যাপ্লিকেশন স্থাপনার পূর্ববর্তী নিবন্ধে, আপনি আপনার তৈরি করা Redis মাস্টার স্থাপনা পরীক্ষা করেছেন। আপনি দেখেছেন কিভাবে একটি স্থাপনা একটি ReplicaSet এর সাথে সম্পর্কিত এবং কিভাবে একটি ReplicaSet পডের সাথে সম্পর্কিত। এই অংশ 2-এ, আপনি কনফিগম্যাপের মাধ্যমে প্রদান করা একটি পরিবেশ-নির্দিষ্ট কনফিগারেশন সহ এই Redis মাস্টারটিকে পুনরায় তৈরি করবেন। তবে প্রথমে, আসুন একটি কনফিগম্যাপ কী তা অন্বেষণ করি৷

কনফিগম্যাপ কি?

আপনি একটি ConfigMap ব্যবহার করে কনফিগারেশন বিশদ প্রদান করতে নমুনা অ্যাপ্লিকেশনগুলি সম্পাদনা করবেন। একটি ConfigMap হল একটি বস্তু যা পডগুলিতে কনফিগারেশনের বিশদ প্রদান করতে ব্যবহৃত হয়। এটি আপনাকে প্রকৃত কন্টেইনারের বাইরে কনফিগারেশন সেটিংস রাখতে দেয়। তারপর আপনি আপনার ডিপ্লোয়মেন্টের সাথে ConfigMap সংযোগ করে আপনার অ্যাপ্লিকেশনে এই কনফিগারেশন বিশদ প্রদান করতে পারেন।

একটি কনফিগম্যাপের সাহায্যে মাস্টার রিডিস করুন

পূর্ববর্তী স্থাপনার সাথে কিছু ভুল ছিল না। ব্যবহারিক ব্যবহারের ক্ষেত্রে, এটি বিরল যে আপনি কিছু কনফিগারেশন সেটিংস ছাড়াই একটি অ্যাপ্লিকেশন চালু করবেন। এই ক্ষেত্রে, আমরা একটি ConfigMap ব্যবহার করে redis-master-এর জন্য কনফিগারেশন সেটিংস সেট করতে যাচ্ছি। একটি ConfigMap হল প্রতিটি কনফিগারেশনের জন্য বিশেষ ছবি ছাড়াই কনটেইনার কনফিগার করার একটি পোর্টেবল উপায়। এটিতে ডেটার জন্য একটি মূল-মান জোড়া রয়েছে যা একটি পাত্রে সেট করা প্রয়োজন৷ একটি কনফিগম্যাপ অ-গোপন কনফিগারেশনের জন্য ব্যবহৃত হয়। কুবারনেটসের একটি পৃথক বস্তু রয়েছে যাকে সিক্রেট বলা হয়। একটি গোপন কনফিগারেশনের জন্য ব্যবহার করা হয় যাতে পাসওয়ার্ডের মতো গুরুত্বপূর্ণ ডেটা থাকে।

এই উদাহরণে, আমরা একটি ConfigMap তৈরি করতে যাচ্ছি। এই কনফিগম্যাপে, আমরা কী হিসাবে redis-config কনফিগার করব এবং মান হবে৷

maxmemory: "2mb"
maxmemory-policy: "allkeys-lru"

এখন, এই ConfigMap তৈরি করা যাক। কনফিগম্যাপ তৈরি করার দুটি উপায় আছে।

  • একটি ফাইল থেকে একটি কনফিগম্যাপ তৈরি করা
  • একটি YAML ফাইল থেকে একটি কনফিগম্যাপ তৈরি করা

আমরা প্রত্যেককে বিস্তারিতভাবে অন্বেষণ করব।

একটি ফাইল থেকে একটি কনফিগম্যাপ তৈরি করা

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

ধাপ 1। টার্মিনালে কোড redis-config টাইপ করে Azure ক্লাউড শেল কোড সম্পাদক খুলুন। নিম্নলিখিত দুটি লাইন অনুলিপি এবং পেস্ট করুন এবং এটি redis-config হিসাবে সংরক্ষণ করুন।

maxmemory: "2mb"
maxmemory-policy: "allkeys-lru"


ধাপ 2। এখন আপনি নিম্নলিখিত কোড ব্যবহার করে ConfigMap তৈরি করতে পারেন।

kubectl create configmap example-redis-config --from-file=redis-config

আপনি নীচে দেখানো হিসাবে একটি আউটপুট পাওয়া উচিত

configmap/example-redis-config created  

Azure Kubernetes পরিষেবাতে অ্যাপ্লিকেশন স্থাপন করা হচ্ছে:পার্ট 2 – উন্নত কনফিগারেশন

ধাপ 3। আপনি এই ConfigMap বর্ণনা করতে একই কমান্ড ব্যবহার করতে পারেন।

kubectl describe configmap/example-redis-config  

আউটপুট নিচের স্ক্রিনশটে দেখানো হবে।

Azure Kubernetes পরিষেবাতে অ্যাপ্লিকেশন স্থাপন করা হচ্ছে:পার্ট 2 – উন্নত কনফিগারেশন

একটি YAML ফাইল থেকে একটি কনফিগম্যাপ তৈরি করা

এই বিভাগে, আপনি একটি YAML ফাইল ব্যবহার করে পূর্ববর্তী বিভাগ থেকে ConfigMap পুনরায় তৈরি করবেন।

ধাপ 1। শুরু করতে, পূর্বে তৈরি করা কনফিগম্যাপ মুছে দিন।

kubectl delete configmap/example-redis-config  

ধাপ 2। উদাহরণ-redis-config.yaml নামে একটি ফাইলে নিম্নলিখিত লাইনগুলি অনুলিপি করুন এবং পেস্ট করুন এবং তারপর ফাইলটি সংরক্ষণ করুন৷

apiVersion: v1
data:
 redis-config: |-
 maxmemory 2mb
 maxmemory-policy allkeys-lru
kind: ConfigMap
metadata:
 name: example-redis-config
 namespace: default

ধাপ 3। আপনি এখন নিম্নলিখিত কমান্ডের মাধ্যমে আপনার ConfigMap পুনরায় তৈরি করতে পারেন।

kubectl create -f example-redis-config.yaml  

আপনি নীচের দেখানো হিসাবে একটি আউটপুট পাওয়া উচিত.

configmap/example-redis-config created  

Azure Kubernetes পরিষেবাতে অ্যাপ্লিকেশন স্থাপন করা হচ্ছে:পার্ট 2 – উন্নত কনফিগারেশন

ধাপ 5। এই কমান্ডটি আগেরটির মতো একই আউটপুট প্রদান করে।

আপনি দেখতে পাচ্ছেন, একটি YAML ফাইল ব্যবহার করে, আপনি একই কনফিগম্যাপ তৈরি করতে সক্ষম হয়েছেন।

দ্রষ্টব্য৷৷ kubectl get-এ দরকারী বিকল্প রয়েছে -o, যা YAML বা JSON-এ কোনো বস্তুর আউটপুট পেতে ব্যবহার করা যেতে পারে। আপনি একটি সিস্টেমে ম্যানুয়াল পরিবর্তন করেছেন এবং YAML বিন্যাসে ফলস্বরূপ বস্তুটি দেখতে চান এমন ক্ষেত্রে এটি খুবই কার্যকর। আপনি নিম্নলিখিত কমান্ড ব্যবহার করে YAML-এ বর্তমান কনফিগম্যাপ পেতে পারেন।

kubectl get -o yaml configmap/example-redis-config  

এখন আপনি কনফিগম্যাপ সংজ্ঞায়িত করেছেন, আসুন এটি ব্যবহার করি।

কনফিগারেশন ডেটা পড়ার জন্য একটি কনফিগম্যাপ ব্যবহার করা

এই বিভাগে, আপনি ConfgMap থেকে কনফিগারেশন পড়ার জন্য redis-master স্থাপনাটিকে পুনরায় কনফিগার করবেন।

ধাপ 1। শুরু করতে, নিম্নরূপ ConfigMap ব্যবহার করতে redis-master-deployment.yaml পরিবর্তন করুন। সোর্স কোডের পরে আপনাকে যে পরিবর্তনগুলি করতে হবে তা ব্যাখ্যা করা হবে৷

দ্রষ্টব্য৷৷ আপনি যদি গিটহাব থেকে সোর্স কোডটি ডাউনলোড করেন, তাহলে স্থাপনার ফোল্ডারে একটি ফাইল রয়েছে:AKS-এ অ্যাপ্লিকেশন স্থাপনা, যাকে redis-master-deployment_ Modified.yaml বলা হয়, এতে প্রয়োজনীয় পরিবর্তনগুলি প্রয়োগ করা হয়েছে৷

apiVersion: apps/v1 # for versions before 1.9.0 use apps/v1beta2
kind: Deployment
metadata:
 name: redis-master
 labels:
 app: redis
spec:
 selector:
 matchLabels:
 app: redis
 role: master
 tier: backend
 replicas: 1
 template:
 metadata:
 labels:
 app: redis
 role: master
 tier: backend
 spec:
 containers:
 - name: master
 image: k8s.gcr.io/redis:e2e
 command:
 - redis-server
 - "/redis-master/redis.conf"
 env:
 - name: MASTER
 value: "true"
 volumeMounts:
 - mountPath: /redis-master
 name: config
 resources:
 requests:
 cpu: 100m
 memory: 100Mi
 ports:
 - containerPort: 6379
 volumes:
 - name: config
 configMap:
 name: example-redis-config
 items:
 - key: redis-config
 path: redis.conf

বিভিন্ন বিভাগ বোঝার জন্য কোডের আরও গভীরে ডুব দেওয়া যাক।

লাইন 24-26

এই লাইনগুলি একটি কমান্ড প্রবর্তন করে যা আপনার পড শুরু হলে কার্যকর করা হবে। এই ক্ষেত্রে, এটি একটি নির্দিষ্ট কনফিগারেশন ফাইলের দিকে নির্দেশ করে রিডিস-সার্ভার শুরু করবে।

command: 
 - redis-server 
 - "/redis-master/redis.conf" 

লাইন 27-29

আপনার চলমান কন্টেইনারে কনফিগারেশন ডেটা কীভাবে পাস করবেন তা দেখায়। এই পদ্ধতি এনভায়রনমেন্ট ভেরিয়েবল ব্যবহার করে। ডকার আকারে, এটি ডকার রান -ই "মাস্টার =সত্য" এর সমতুল্য হবে। --নাম মাস্টার -p 6379:6379 -m 100M -c 100m -d Kubernetes /redis:v1. এটি এনভায়রনমেন্ট ভেরিয়েবল মাস্টারকে সত্যে সেট করে। আপনার অ্যাপ্লিকেশনটি এর কনফিগারেশনের জন্য পরিবেশ পরিবর্তনশীল সেটিংস পড়তে পারে৷

env: 
 - name: MASTER 
 value: "true" 

লাইন 30-32

এই লাইনগুলি চলমান পাত্রে /redis-master পাথে কনফিগার নামক ভলিউমকে মাউন্ট করে (এই ভলিউমটি 39-45 লাইনে সংজ্ঞায়িত করা হয়েছে)। এটি আসল কন্টেইনারে /redis-master-এ যা আছে তা লুকিয়ে রাখবে। ডকার পদে, এটি ডকার রান -ভি কনফিগার:/ রেডিস-মাস্টারের সমতুল্য। -e "MASTER=TRUE" --name master -p 6379:6379 -m 100M -c 100m -d Kubernetes / redis:v1.

volumeMounts:
 - mountPath: /redis-master
 name: config

লাইন 40

ভলিউমকে কনফিগার নাম দেয়। এই নামটি এই পডের প্রসঙ্গে ব্যবহার করা হবে৷

name: config 

লাইন 41-42

ঘোষণা করুন যে এই ভলিউমটি example-redis config ConfigMap থেকে লোড করা উচিত। এই কনফিগম্যাপটি ইতিমধ্যেই সিস্টেমে থাকা উচিত। আপনি ইতিমধ্যে এটি সংজ্ঞায়িত করেছেন, তাই আপনি ভাল।

configMap:    
            name: example-redis-config  

লাইন 43-45

এখানে, আপনি একটি redis.conf ফাইল হিসাবে redis-config কী (দুই-লাইন ম্যাক্সমেমরি সেটিংস) এর মান লোড করছেন।

items:
 - key: redis-config
 path: redis.conf

ধাপ 2। আসুন এই আপডেট করা স্থাপনা তৈরি করি।

kubectl create -f redis-master-deployment_Modified.yml

এটি নিম্নলিখিত আউটপুট উচিত.

deployment.apps/redis-master created

ধাপ 3। এখন কনফিগারেশন সফলভাবে প্রয়োগ করা হয়েছে তা নিশ্চিত করা যাক। প্রথমে, পডের নাম নিন।

kubectl get pods  

ধাপ 4। তারপরে পডে এক্সিক করুন এবং যাচাই করুন যে সেটিংস প্রয়োগ করা হয়েছে।

kubectl exec -it redis-master-<pod-id> redis-cli
127.0.0.1:6379> CONFIG GET maxmemory
 1) "maxmemory"
 2) "2097152"
127.0.0.1:6379> CONFIG GET maxmemory-policy
 "maxmemory-policy"
 "allkeys-lru"
127.0.0.1:6379> exit

সংক্ষেপে বলতে গেলে, আপনি ক্লাউড-নেটিভ অ্যাপ্লিকেশন কনফিগার করার একটি গুরুত্বপূর্ণ এবং জটিল অংশ সম্পাদন করেছেন। আপনি এটিও লক্ষ্য করেছেন যে অ্যাপগুলিকে গতিশীলভাবে কনফিগার পড়ার জন্য কনফিগার করতে হবে। আপনি কনফিগারেশন সহ আপনার অ্যাপ সেট আপ করার পরে, আপনি চলমান কনফিগারেশন যাচাই করতে একটি চলমান ধারক অ্যাক্সেস করেছেন৷

এই অংশ 2-এ, আপনি একটি ConfigMap থেকে কনফিগারেশন ডেটা লোড করার জন্য Redis Master কনফিগার করেছেন। পরবর্তী চূড়ান্ত অংশ 3-এ, আমরা এন্ড-টু-এন্ড অ্যাপ্লিকেশন স্থাপন করব।


  1. CSS সহ ভাসমান উপাদান

  2. C++ এ 3n স্লাইস সহ পিৎজা

  3. ম্যাটপ্লটলিবে দুটি বিতরণের পার্থক্য কীভাবে প্লট করবেন?

  4. আইফোন 5 এর স্ক্রিন সাইজ কিভাবে সনাক্ত করবেন?