Redis
 sql >> डेटाबेस >  >> NoSQL >> Redis

Ingress Nginx नियंत्रक के साथ रेडिस को उजागर करना

रेडिस 6379 पर काम करता है जो गैर HTTP पोर्ट (80,443) है। इसलिए आपको nginx ingress कंट्रोलर में TCP/UDP सपोर्ट को इनेबल करना होगा। यहां मिनीक्यूब डॉक्स दिखाता है कि इसे रेडिस के लिए कैसे किया जाता है।

TCP और/या UDP सेवाओं के कॉन्फिगमैप अपडेट करें

इनग्रेड nginx कंट्रोलर के साथ टीसीपी और यूडीपी सेवाओं को कॉन्फ़िगर करने के ट्यूटोरियल से उधार लेते हुए हमें मिनीक्यूब इंग्रेस एडऑन को सक्षम करते समय डिफ़ॉल्ट रूप से स्थापित किए गए कॉन्फिगमैप को संपादित करने की आवश्यकता होगी।

टीसीपी सेवाओं के लिए 1 और यूडीपी सेवाओं के लिए 1 कॉन्फिगमैप हैं। डिफ़ॉल्ट रूप से वे इस तरह दिखते हैं:

apiVersion: v1
kind: ConfigMap
metadata:
  name: tcp-services
  namespace: ingress-nginx
---
apiVersion: v1
kind: ConfigMap
metadata:
  name: udp-services
  namespace: ingress-nginx

चूंकि ये कॉन्फिगमैप केंद्रीकृत होते हैं और इनमें कॉन्फ़िगरेशन हो सकते हैं, इसलिए बेहतर होगा कि हम इन्हें पूरी तरह से ओवरराइट करने के बजाय केवल पैच करें।

आइए इस रेडिस परिनियोजन का एक उदाहरण के रूप में उपयोग करें:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: redis-deployment
  namespace: default
  labels:
    app: redis
spec:
  replicas: 1
  selector:
    matchLabels:
      app: redis
  template:
    metadata:
      labels:
        app: redis
    spec:
      containers:
      - image: redis
        imagePullPolicy: Always
        name: redis
        ports:
        - containerPort: 6379
          protocol: TCP

एक फ़ाइल बनाएँ redis-deployment.yaml और ऊपर दी गई सामग्री को पेस्ट करें। फिर निम्न आदेश के साथ रेडिस परिनियोजन स्थापित करें:

kubectl apply -f redis-deployment.yaml

आगे हमें एक ऐसी सेवा बनाने की ज़रूरत है जो हमारे पॉड्स पर ट्रैफ़िक को रूट कर सके:

apiVersion: v1
kind: Service
metadata:
  name: redis-service
  namespace: default
spec:
  selector:
    app: redis
  type: ClusterIP
  ports:
    - name: tcp-port
      port: 6379
      targetPort: 6379
      protocol: TCP

एक फ़ाइल बनाएँ redis-service.yaml और ऊपर दी गई सामग्री को पेस्ट करें। फिर निम्न आदेश के साथ रेडिस सेवा स्थापित करें:

kubectl apply -f redis-service.yaml

nginx इनग्रेड कंट्रोलर में TCP सेवा जोड़ने के लिए आप निम्न कमांड चला सकते हैं:

kubectl patch configmap tcp-services -n kube-system --patch '{"data":{"6379":"default/redis-service:6379"}}'

कहां:

6379 :वह पोर्ट जिसे आपकी सेवा को मिनीक्यूब वर्चुअल मशीन के बाहर से सुनना चाहिए

default :वह नाम स्थान जिसमें आपकी सेवा स्थापित है

redis-service :सेवा का नाम

हम सत्यापित कर सकते हैं कि हमारे संसाधन को निम्न कमांड के साथ पैच किया गया था:

kubectl get configmap tcp-services -n kube-system -o yaml

हमें कुछ इस तरह दिखना चाहिए:

apiVersion: v1
data:
  "6379": default/redis-service:6379
kind: ConfigMap
metadata:
  creationTimestamp: "2019-10-01T16:19:57Z"
  labels:
    addonmanager.kubernetes.io/mode: EnsureExists
  name: tcp-services
  namespace: kube-system
  resourceVersion: "2857"
  selfLink: /api/v1/namespaces/kube-system/configmaps/tcp-services
  uid: 4f7fac22-e467-11e9-b543-080027057910

आपको केवल यही मान सत्यापित करने की आवश्यकता है कि डेटा प्रॉपर्टी के अंतर्गत एक मान है जो इस तरह दिखता है:

"6379": default/redis-service:6379

इनग्रेड-nginx-नियंत्रक को पैच करें

एक अंतिम चरण है जो बाहरी क्लस्टर से कनेक्टिविटी प्राप्त करने के लिए किया जाना चाहिए। हमें अपने nginx नियंत्रक को पैच करने की आवश्यकता है ताकि वह पोर्ट 6379 पर सुन सके और आपकी सेवा के लिए ट्रैफ़िक को रूट कर सके। ऐसा करने के लिए हमें एक पैच फ़ाइल बनानी होगी।

spec:
  template:
    spec:
      containers:
      - name: ingress-nginx-controller
        ports:
         - containerPort: 6379
           hostPort: 6379

ingress-nginx-controller-patch.yaml नामक एक फाइल बनाएं और उपरोक्त सामग्री पेस्ट करें।

इसके बाद निम्न आदेश के साथ परिवर्तन लागू करें:

kubectl patch deployment ingress-nginx-controller --patch "$(cat ingress-nginx-controller-patch.yaml)" -n kube-system



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. स्प्रिंग बूट का उपयोग करते हुए कई टाइमआउट होने पर रेडिस को अक्षम करें

  2. मेमोरी खत्म होने पर रेडिस क्या करता है?

  3. Redis/NoSQL में अवधारणा बनाने में मदद चाहिए

  4. क्या किसी आइटम को अपडेट करते समय Azure Redis Cache में कोई लॉक मैकेनिज्म है?

  5. स्प्रिंग बूट रेडिस एकीकरण परीक्षण के लिए विश्वसनीय पुस्तकालय उपलब्ध हैं