परिचय
<पी> पी>हम इस लेख में क्या शामिल करेंगे?
- ConfigMap क्या है?
- ConfigMap के साथ रेडिस मास्टर
- फ़ाइल से कॉन्फ़िगमैप बनाना
- YAML फ़ाइल से कॉन्फ़िगमैप बनाना
- कॉन्फ़िगरेशन डेटा को पढ़ने के लिए कॉन्फ़िगमैप का उपयोग करना
- एकेएस पर एप्लिकेशन परिनियोजन | भाग – 1
ConfigMap क्या है?
<पी> आप कॉन्फिगरेशन मैप का उपयोग करके कॉन्फ़िगरेशन विवरण प्रदान करने के लिए नमूना अनुप्रयोगों को भी संपादित करेंगे। कॉन्फ़िगमैप एक ऑब्जेक्ट है जिसका उपयोग पॉड्स को कॉन्फ़िगरेशन विवरण प्रदान करने के लिए किया जाता है। यह आपको कॉन्फ़िगरेशन सेटिंग्स को वास्तविक कंटेनर के बाहर रखने की अनुमति देता है। फिर आप कॉन्फिगरेशन को अपने परिनियोजन से कनेक्ट करके अपने एप्लिकेशन को ये कॉन्फ़िगरेशन विवरण प्रदान कर सकते हैं।ConfigMap के साथ Redis मास्टर
<पी> पिछली तैनाती में कुछ भी ग़लत नहीं था. व्यावहारिक उपयोग के मामलों में, यह दुर्लभ होगा कि आप कुछ कॉन्फ़िगरेशन सेटिंग्स के बिना कोई एप्लिकेशन लॉन्च करेंगे। इस मामले में, हम कॉन्फिग मैप का उपयोग करके रेडिस-मास्टर के लिए कॉन्फ़िगरेशन सेटिंग्स सेट करने जा रहे हैं। कॉन्फ़िगमैप प्रत्येक कॉन्फ़िगरेशन के लिए विशेष छवियों के बिना कंटेनरों को कॉन्फ़िगर करने का एक पोर्टेबल तरीका है। इसमें डेटा के लिए एक कुंजी-मूल्य जोड़ी है जिसे एक कंटेनर पर सेट करने की आवश्यकता है। गैर-गुप्त कॉन्फ़िगरेशन के लिए कॉन्फ़िगमैप का उपयोग किया जाता है। कुबेरनेट्स के पास एक अलग वस्तु है जिसे सीक्रेट कहा जाता है। सीक्रेट का उपयोग उन कॉन्फ़िगरेशन के लिए किया जाता है जिनमें पासवर्ड जैसे महत्वपूर्ण डेटा होते हैं। <पी> इस उदाहरण में, हम एक कॉन्फ़िगमैप बनाने जा रहे हैं। इस कॉन्फ़िगमैप में, हम redis-config को कुंजी के रूप में कॉन्फ़िगर करेंगे और मान होगा।
maxmemory: "2mb"
maxmemory-policy: "allkeys-lru"
<पी> अब, आइए इस कॉन्फ़िगमैप को बनाएं। कॉन्फ़िगमैप बनाने के दो तरीके हैं। - फ़ाइल से कॉन्फ़िगमैप बनाना
- YAML फ़ाइल से कॉन्फ़िगमैप बनाना
फ़ाइल से कॉन्फ़िगमैप बनाना
<पी> निम्नलिखित चरण हमें फ़ाइल से कॉन्फ़िगमैप बनाने में मदद करेंगे: <पी> चरण 1. टर्मिनल में कोड redis-config टाइप करके Azure क्लाउड शेल कोड संपादक खोलें। निम्नलिखित दो पंक्तियों को कॉपी और पेस्ट करें और इसे redis-config के रूप में सहेजें।
maxmemory: "2mb"
maxmemory-policy: "allkeys-lru"
<पी> पी> <पी> चरण 2. अब आप निम्नलिखित कोड का उपयोग करके कॉन्फिग मैप बना सकते हैं।
kubectl create configmap example-redis-config --from-file=redis-config
<पी> आपको नीचे दिखाए अनुसार आउटपुट मिलना चाहिए
configmap/example-redis-config created <पी>
kubectl describe configmap/example-redis-config <पी> आउटपुट नीचे स्क्रीनशॉट में दिखाए अनुसार होगा। <पी> YAML फ़ाइल से कॉन्फ़िगमैप बनाना
<पी> इस अनुभाग में, आप YAML फ़ाइल का उपयोग करके पिछले अनुभाग से कॉन्फ़िगमैप को फिर से बनाएंगे। <पी> चरण 1. आरंभ करने के लिए, पहले बनाए गए कॉन्फ़िगमैप को हटा दें।
kubectl delete configmap/example-redis-config <पी> पी> <पी> चरण 2. निम्नलिखित पंक्तियों को example-redis-config.yaml नामक फ़ाइल में कॉपी और पेस्ट करें, और फिर फ़ाइल को सहेजें।
apiVersion: v1
data:
redis-config: |-
maxmemory 2mb
maxmemory-policy allkeys-lru
kind: ConfigMap
metadata:
name: example-redis-config
namespace: default
<पी> चरण 3. अब आप निम्न आदेश के माध्यम से अपना कॉन्फ़िगमैप पुनः बना सकते हैं।
kubectl create -f example-redis-config.yaml <पी> आपको नीचे दिखाए अनुसार आउटपुट मिलना चाहिए।
configmap/example-redis-config created <पी>
kubectl get -o yaml configmap/example-redis-config <पी> पी> <पी> अब जब आपके पास कॉन्फ़िगमैप परिभाषित है, तो आइए इसका उपयोग करें। कॉन्फ़िगरेशन डेटा पढ़ने के लिए कॉन्फ़िग मैप का उपयोग करना
<पी> इस अनुभाग में, आप कॉन्फिगमैप से कॉन्फ़िगरेशन को पढ़ने के लिए रेडिस-मास्टर परिनियोजन को पुन:कॉन्फ़िगर करेंगे। <पी> चरण 1. प्रारंभ करने के लिए, कॉन्फ़िगरेशन मैप का उपयोग करने के लिए redis-master-deployment.yaml को निम्नानुसार संशोधित करें। आपको जो परिवर्तन करने की आवश्यकता है, उन्हें स्रोत कोड के बाद समझाया जाएगा। <पी> ध्यान दें. यदि आपने GitHub से स्रोत कोड डाउनलोड किया है, तो परिनियोजन फ़ोल्डर में एक फ़ाइल है: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 <पी> दिखाता है कि कॉन्फ़िगरेशन डेटा को आपके चल रहे कंटेनर में कैसे पास किया जाए। यह विधि पर्यावरण चर का उपयोग करती है। डॉकर रूप में, यह docker run -e "MASTER=true" के समतुल्य होगा। --नाम मास्टर -पी 6379:6379 -एम 100एम -सी 100एम -डी कुबेरनेट्स /रेडिस:वी1। यह पर्यावरण चर मास्टर को सत्य पर सेट करता है। आपका एप्लिकेशन अपने कॉन्फ़िगरेशन के लिए पर्यावरण चर सेटिंग्स पढ़ सकता है।
env:
- name: MASTER
value: "true" <पी> पंक्तियाँ 30-32 <पी> ये पंक्तियाँ रनिंग कंटेनर पर /रेडिस-मास्टर पथ पर कॉन्फिग नामक वॉल्यूम को माउंट करती हैं (यह वॉल्यूम लाइन 39-45 में परिभाषित है)। यह मूल कंटेनर पर /redis-master पर जो कुछ भी मौजूद है उसे छिपा देगा। डॉकर के संदर्भ में, यह डॉकर रन -v कॉन्फिग:/रेडिस-मास्टर के बराबर होगा। -ई "मास्टर=सत्य" --नाम मास्टर -पी 6379:6379 -एम 100एम -सी 100एम -डी कुबेरनेट्स / रेडिस:वी1.पी>
volumeMounts:
- mountPath: /redis-master
name: config
<पी> पंक्ति 40 <पी> वॉल्यूम को config नाम देता है। इस नाम का उपयोग इस पॉड के संदर्भ में किया जाएगा।
name: config <पी> पंक्तियाँ 41-42 <पी> घोषणा करें कि यह वॉल्यूम example-redis कॉन्फिग कॉन्फिग मैप से लोड किया जाना चाहिए। यह कॉन्फ़िगमैप सिस्टम में पहले से मौजूद होना चाहिए. आपने इसे पहले ही परिभाषित कर दिया है, इसलिए आप अच्छे हैं।
configMap:
name: example-redis-config <पी> पंक्तियाँ 43-45 <पी> यहां, आप redis-config कुंजी (दो-पंक्ति मैक्समेमोरी सेटिंग्स) का मान redis.conf फ़ाइल के रूप में लोड कर रहे हैं।
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 में, आपने कॉन्फिगरेशन डेटा को कॉन्फ़िगरेशन मैप से लोड करने के लिए रेडिस मास्टर को कॉन्फ़िगर किया है। अगले अंतिम भाग 3 में, हम एंड-टू-एंड एप्लिकेशन को तैनात करेंगे।