रेडिस 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