পরিচয়
এই নিবন্ধে আমরা কী কভার করব?
- কনফিগম্যাপ কি?
- একটি কনফিগম্যাপ দিয়ে মাস্টার পুনরায় তৈরি করুন
- একটি ফাইল থেকে একটি কনফিগম্যাপ তৈরি করা
- একটি 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
ধাপ 3। আপনি এই ConfigMap বর্ণনা করতে একই কমান্ড ব্যবহার করতে পারেন।
kubectl describe configmap/example-redis-config আউটপুট নিচের স্ক্রিনশটে দেখানো হবে।
একটি 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
ধাপ 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-এ, আমরা এন্ড-টু-এন্ড অ্যাপ্লিকেশন স্থাপন করব।