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

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

परिचय

इस लेख में हम Azure Kubernetes Service (AKS) पर एप्लिकेशन डिप्लॉय करने की उन्नत कॉन्फ़िगरेशन तकनीकों का अध्ययन करेंगे। पिछले भाग में हमने बुनियादी डिप्लॉयमेंट देखा था, अब हम ConfigMap के माध्यम से वातावरण-विशिष्ट कॉन्फ़िगरेशन लागू करना सीखेंगे।

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

  • ConfigMap क्या है?
  • ConfigMap के साथ Redis मास्टर
  • फाइल से ConfigMap बनाना
  • YAML फाइल से ConfigMap बनाना
  • कॉन्फ़िगरेशन डेटा पढ़ने के लिए ConfigMap का उपयोग

पूर्वापेक्षाएँ

  • AKS पर एप्लिकेशन डिप्लॉयमेंट | भाग - 1

पिछले लेख में आपने Redis मास्टर डिप्लॉयमेंट की जांच की थी। आपने देखा कि डिप्लॉयमेंट का ReplicaSet से और ReplicaSet का Pods से कैसे संबंध होता है। इस भाग 2 में, हम ConfigMap के माध्यम से वातावरण-विशिष्ट कॉन्फ़िगरेशन प्रदान करके इस Redis मास्टर को फिर से बनाएंगे। लेकिन पहले, आइए समझते हैं कि ConfigMap क्या है।

ConfigMap क्या है?

ConfigMap एक Kubernetes ऑब्जेक्ट है जिसका उपयोग Pods को कॉन्फ़िगरेशन विवरण प्रदान करने के लिए किया जाता है। यह आपको वास्तविक कंटेनर के बाहर कॉन्फ़िगरेशन सेटिंग्स रखने की अनुमति देता है। फिर आप ConfigMap को अपने डिप्लॉयमेंट से जोड़कर इन कॉन्फ़िगरेशन विवरणों को अपने एप्लिकेशन तक पहुंचा सकते हैं।

ConfigMap के साथ Redis मास्टर

पिछले डिप्लॉयमेंट में कुछ भी गलत नहीं था। व्यावहारिक उपयोग के मामलों में, किसी एप्लिकेशन को कुछ कॉन्फ़िगरेशन सेटिंग्स के बिना लॉन्च करना दुर्लभ होगा। इस मामले में, हम ConfigMap का उपयोग करके redis-master के लिए कॉन्फ़िगरेशन सेटिंग्स सेट करेंगे। ConfigMap विशेष छवियों के बिना प्रत्येक कॉन्फ़िगरेशन के लिए कंटेनरों को कॉन्फ़िगर करने का एक पोर्टेबल तरीका है। इसमें कंटेनर पर सेट किए जाने वाले डेटा के लिए key-value pair होता है। ConfigMap का उपयोग गैर-गोपनीय कॉन्फ़िगरेशन के लिए किया जाता है। Kubernetes के पास Secret नामक एक अलग ऑब्जेक्ट होता है जिसका उपयोग पासवर्ड जैसे महत्वपूर्ण डेटा वाली कॉन्फ़िगरेशन के लिए किया जाता है।

इस उदाहरण में, हम एक ConfigMap बनाएंगे जिसमें हम redis-config को key के रूप में और निम्नलिखित को value के रूप में कॉन्फ़िगर करेंगे:

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

अब, आइए इस ConfigMap को बनाते हैं। ConfigMap बनाने के दो तरीके हैं:

  • फाइल से ConfigMap बनाना
  • YAML फाइल से ConfigMap बनाना

हम प्रत्येक को विस्तार से जानेंगे।

फाइल से ConfigMap बनाना

निम्नलिखित चरण हमें फाइल से ConfigMap बनाने में मदद करेंगे:

चरण 1. टर्मिनल में code redis-config टाइप करके Azure Cloud Shell कोड संपादक खोलें। निम्नलिखित दो लाइनें कॉपी करके पेस्ट करें और इसे 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 फाइल से ConfigMap बनाना

इस खंड में, आप पिछले खंड के ConfigMap को YAML फाइल का उपयोग करके फिर से बनाएंगे।

चरण 1. शुरू करने के लिए, पहले बनाए गए ConfigMap को हटाएं:

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. अब आप निम्नलिखित कमांड के माध्यम से अपना ConfigMap फिर से बना सकते हैं:

kubectl create -f example-redis-config.yaml

आपको निम्नलिखित आउटपुट मिलना चाहिए:

configmap/example-redis-config created

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

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

अब जब आपके पास ConfigMap परिभाषित है, आइए इसका उपयोग करें।

कॉन्फ़िगरेशन डेटा पढ़ने के लिए ConfigMap का उपयोग

इस खंड में, आप redis-master डिप्लॉयमेंट को ConfigMap से कॉन्फ़िगरेशन पढ़ने के लिए पुनः कॉन्फ़िगर करेंगे।

चरण 1. शुरू करने के लिए, redis-master-deployment.yaml को निम्नानुसार संशोधित करें ताकि यह ConfigMap का उपयोग करे। आवश्यक परिवर्तनों को स्रोत कोड के बाद समझाया गया है।

नोट. यदि आपने GitHub से स्रोत कोड डाउनलोड किया है, तो डिप्लॉयमेंट फोल्डर में "AKS पर एप्लिकेशन डिप्लॉयमेंट" नामक एक फाइल है, जिसे redis-master-deployment_Modified.yaml कहा जाता है, जिसमें आवश्यक परिवर्तन पहले से लागू हैं।

apiVersion: apps/v1
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

ये लाइनें एक कमांड पेश करती हैं जो आपके Pod के शुरू होने पर निष्पादित होगी। इस मामले में, यह redis-server को एक विशिष्ट कॉन्फ़िगरेशन फाइल की ओर इंगित करके शुरू करेगा।

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

लाइन 27-29

दर्शाता है कि अपने रनिंग कंटेनर को कॉन्फ़िगरेशन डेटा कैसे पास करें। यह विधि वातावरण चर का उपयोग करती है। Docker के रूप में, यह docker run -e "MASTER=true" के बराबर होगा। यह MASTER वातावरण चर को true पर सेट करता है। आपका एप्लिकेशन अपनी कॉन्फ़िगरेशन के लिए वातावरण चर सेटिंग्स पढ़ सकता है।

env:
- name: MASTER
  value: "true"

लाइन 30-32

ये लाइनें config नामक वॉल्यूम को रनिंग कंटेनर पर /redis-master पथ पर माउंट करती हैं। यह मूल कंटेनर पर /redis-master पर मौजूद किसी भी चीज़ को छिपा देगा। Docker के संदर्भ में, यह docker run -v config:/redis-master के बराबर होगा।

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

लाइन 40

वॉल्यूम को config नाम देता है। इस नाम का उपयोग इस Pod के संदर्भ में किया जाएगा।

name: config

लाइन 41-42

घोषित करते हैं कि इस वॉल्यूम को example-redis-config ConfigMap से लोड किया जाना चाहिए। यह ConfigMap सिस्टम में पहले से मौजूद होना चाहिए।

configMap:
  name: example-redis-config

लाइन 43-45

यहां, आप redis-config key के मान (दो-लाइन maxmemory सेटिंग्स) को redis.conf फाइल के रूप में लोड कर रहे हैं।

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

चरण 2. आइए इस अद्यतन डिप्लॉयमेंट को बनाते हैं:

kubectl create -f redis-master-deployment_Modified.yml

इसका आउटपुट निम्नलिखित होना चाहिए:

deployment.apps/redis-master created

चरण 3. अब सुनिश्चित करें कि कॉन्फ़िगरेशन सफलतापूर्वक लागू हुआ। पहले Pod का नाम प्राप्त करें:

kubectl get pods

चरण 4. फिर Pod में exec करें और सत्यापित करें कि सेटिंग्स लागू हुईं:

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 में, आपने Redis मास्टर को ConfigMap से कॉन्फ़िगरेशन डेटा लोड करने के लिए कॉन्फ़िगर किया। अगले अंतिम भाग 3 में, हम एंड-टू-एंड एप्लिकेशन डिप्लॉय करेंगे।

  1. C++ में दो रेखाओं के प्रतिच्छेदन बिंदु के लिए प्रोग्राम C++ में दो रेखाओं के प्रतिच्छेदन बिंदु के लिए प्रोग्राम

    दिए गए बिंदु A और B रेखा AB के अनुरूप हैं और बिंदु P और Q रेखा PQ के अनुरूप हैं; कार्य इन दो रेखाओं के बीच प्रतिच्छेदन बिंदु को खोजना है।नोट − बिंदु X और Y निर्देशांकों पर 2D तल में दिए गए हैं।यहां A(a1, a2), B(b1, b2) और C(c1, c2), D(d1, d2) वे निर्देशांक हैं जो दो अलग-अलग रेखाएं बनाते हैं और

  1. Tkinter Canvas में Arrow Keys से इमेज कैसे घुमाएं? Tkinter Canvas में Arrow Keys से इमेज कैसे घुमाएं?

    Tkinter Canvas विजेट Tkinter लाइब्रेरी में सबसे बहुमुखी विजेट्स में से एक है। इसका उपयोग विभिन्न आकार, इमेज, और एनिमेटिंग ऑब्जेक्ट्स बनाने के लिए किया जाता है। हम Canvas विजेट में परिभाषित इमेज को move() मेथड का उपयोग करके डायनामिक एट्रिब्यूट प्रदान कर सकते हैं। move(Image, x,y) मेथड में इमेज और को

  1. जावास्क्रिप्ट में नेस्टेड डीस्ट्रक्चरिंग जावास्क्रिप्ट में नेस्टेड डीस्ट्रक्चरिंग

    जावास्क्रिप्ट में नेस्टेड डीस्ट्रक्चरिंग के लिए कोड निम्नलिखित है: उदाहरण <!DOCTYPE html> <html lang=en> <head> <meta charset=UTF-8 /> <meta name=viewport content=width=device-width, initial-scale=1.0 /> <title>Document</title> <style>    bo