Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> Redis

Azure Kubernetes सेवा पर एप्लिकेशन परिनियोजन:भाग 2 - उन्नत कॉन्फ़िगरेशन

परिचय

<पी>

हम इस लेख में क्या शामिल करेंगे?

  • ConfigMap क्या है?
  • ConfigMap के साथ रेडिस मास्टर
  • फ़ाइल से कॉन्फ़िगमैप बनाना
  • YAML फ़ाइल से कॉन्फ़िगमैप बनाना
  • कॉन्फ़िगरेशन डेटा को पढ़ने के लिए कॉन्फ़िगमैप का उपयोग करना
<पी> पूर्वापेक्षाएँ
  • एकेएस पर एप्लिकेशन परिनियोजन | भाग – 1
<पी> AKS भाग 1 पर एप्लिकेशन परिनियोजन के पिछले लेख में, आपने अपने द्वारा बनाए गए रेडिस मास्टर परिनियोजन की जांच की थी। आपने देखा कि एक परिनियोजन एक रेप्लिकासेट से कैसे संबंधित है और एक रेप्लिकासेट पॉड्स से कैसे संबंधित है। इस भाग 2 में, आप कॉन्फिग मैप के माध्यम से प्रदान किए गए पर्यावरण-विशिष्ट कॉन्फ़िगरेशन के साथ इस रेडिस मास्टर को फिर से बनाएंगे। लेकिन पहले, आइए जानें कि कॉन्फ़िगमैप क्या है।

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  
<पी> Azure Kubernetes सेवा पर एप्लिकेशन परिनियोजन:भाग 2 - उन्नत कॉन्फ़िगरेशन

<पी> चरण 3. आप इस कॉन्फ़िगमैप का वर्णन करने के लिए उसी कमांड का उपयोग कर सकते हैं।

kubectl describe configmap/example-redis-config  
<पी> आउटपुट नीचे स्क्रीनशॉट में दिखाए अनुसार होगा।

<पी> Azure Kubernetes सेवा पर एप्लिकेशन परिनियोजन:भाग 2 - उन्नत कॉन्फ़िगरेशन

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  
<पी> Azure Kubernetes सेवा पर एप्लिकेशन परिनियोजन:भाग 2 - उन्नत कॉन्फ़िगरेशन

<पी> चरण 5. यह कमांड पिछले वाले के समान ही आउटपुट देता है।

<पी> जैसा कि आप देख सकते हैं, YAML फ़ाइल का उपयोग करके, आप वही कॉन्फ़िगमैप बनाने में सक्षम थे।

<पी> ध्यान दें. kubectl get में उपयोगी विकल्प -o है, जिसका उपयोग YAML या JSON में किसी ऑब्जेक्ट का आउटपुट प्राप्त करने के लिए किया जा सकता है। यह उन मामलों में बहुत उपयोगी है जहां आपने किसी सिस्टम में मैन्युअल परिवर्तन किए हैं और परिणामी ऑब्जेक्ट को YAML प्रारूप में देखना चाहते हैं। आप निम्न कमांड का उपयोग करके YAML में वर्तमान कॉन्फ़िगरेशन मैप प्राप्त कर सकते हैं।

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 में, हम एंड-टू-एंड एप्लिकेशन को तैनात करेंगे।


  1. एक टुकड़े में संदर्भ का उपयोग कैसे करें? एक टुकड़े में संदर्भ का उपयोग कैसे करें?

    यह उदाहरण इस बारे में प्रदर्शित करता है कि किसी खंड में संदर्भ का उपयोग कैसे करें चरण 1 - एंड्रॉइड स्टूडियो में एक नया प्रोजेक्ट बनाएं, फाइल ⇒ न्यू प्रोजेक्ट पर जाएं और एक नया प्रोजेक्ट बनाने के लिए सभी आवश्यक विवरण भरें। चरण 2 - निम्न कोड को res/layout/activity_main.xml में जोड़ें। उपरोक्

  1. Django में मनी फ़ील्ड कैसे जोड़ें? Django में मनी फ़ील्ड कैसे जोड़ें?

    कभी-कभी, हमें किसी वेबसाइट में पैसे से संबंधित डेटा, जैसे वेतन, शुल्क या आय को जोड़ना पड़ सकता है। Django एक पूर्णांक फ़ील्ड प्रदान करता है लेकिन कई बार, यह काम नहीं करता जैसा हम चाहते हैं। इसलिए, मनी फील्ड को संभालने के लिए, हम तीसरे पैकेज की लाइब्रेरी का उपयोग कर सकते हैं जो हमारे मॉडल में मनी फील

  1. जब मैं कक्षा में किसी बटन पर क्लिक करता हूं तो जावास्क्रिप्ट प्रकट होने के लिए अलर्ट कैसे प्राप्त करें? जब मैं कक्षा में किसी बटन पर क्लिक करता हूं तो जावास्क्रिप्ट प्रकट होने के लिए अलर्ट कैसे प्राप्त करें?

    इसके लिए document.getElementByClassName() का इस्तेमाल करें। निम्नलिखित कोड है - उदाहरण <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initialscale=1.0"> <title&