मेरे पास एक मोंगो, एक्सप्रेस, रिएक्ट नोड ऐप है जो वर्तमान में एक microk8s पॉड में तैनात है। मैं ऐप के लिए इनग्रेड सेटअप करने की कोशिश कर रहा हूं। एक्सप्रेस सर्वर नीचे की तरह एक्सप्रेस के साथ प्रतिक्रिया की सेवा के लिए सेटअप है

  app.use(express.static('DemoApp/build'));

  app.get('*', function(req, res, next) {
    res.sendFile(path.resolve(__dirname, 'DemoApp', 'build', 'index.html'));
  });

जब मैं कुबेरनेट क्लस्टर के आईपी: पोर्ट पर नेविगेट करता हूं तो सब कुछ ठीक काम करता है और यहां तक ​​​​कि सब कुछ ठीक काम करता है जब मैं प्रवेश मेजबान के लिए एफक्यूडीएन पर नेविगेट करता हूं लेकिन जैसे ही मैं प्रवेश के लिए पथ जोड़ता हूं तो ऐप केवल एक सफेद स्क्रीन दिखाता है। एक नोट, मेरे कुबेरनेट्स नोड और वर्कस्टेशन सभी एक आंतरिक निजी नेटवर्क के अंदर चल रहे हैं। मैं इसके बाहर कुछ भी उजागर करने की कोशिश नहीं कर रहा हूं। मैंने इस पोस्ट में दिए गए चरणों का पालन करने की कोशिश की है (ReactJS ऐप कुबेरनेट्स का उपयोग करके व्हाइटस्क्रीन प्रदर्शित करता है प्रवेश) लेकिन इसने समस्या को ठीक नहीं किया है। मेरे पास microk8s के लिए सक्षम इनग्रेड कंट्रोलर है।

नीचे वाईएएमएल है जिसका उपयोग मैं प्रवेश के लिए कर रहा हूं जो काम नहीं करता है

apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
  name: demo-ingress
  annotations:
    nginx.ingress.kubernetes.io/rewrite-target: /$1
  namespace: default
spec:
  rules:
  - host: apps.sst.com
    http:
      paths:
      - path: /demo(/|$)(.*)
        backend:
          serviceName: mern-demo
          servicePort: 4000

यहाँ प्रवेश के लिए YAML है जो काम करता है

apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
  name: demo-ingress
  annotations:
  namespace: default
spec:
  rules:
  - host: apps.sst.com
    http:
      paths:
      - path:
        backend:
          serviceName: mern-demo
          servicePort: 4000

एक अन्य नोट यह है कि मेरा ऐप प्रतिक्रिया राउटर का उपयोग कर रहा है। आगे के शोध के आधार पर मैं सोच रहा हूं कि क्या यह चीजों को बिल्कुल प्रभावित करता है।

किसी भी तरह की सहायता का स्वागत किया जाएगा। धन्यवाद

0
Jacob Peterson 26 अगस्त 2020, 15:32

1 उत्तर

सबसे बढ़िया उत्तर

रीराइट-टारगेट एनोटेशन जो आपके YAML में इस्तेमाल किया गया था

  annotations:
    nginx.ingress.kubernetes.io/rewrite-target: /$1

केवल Nginx Ingress के लिए काम करता है। चूंकि आप अपने डिफ़ॉल्ट ingress का उपयोग कर रहे हैं, यह काम नहीं करेगा। जैसा कि यहां बताया गया है, आपको इसे मैन्युअल रूप से इंस्टॉल करना होगा।

अब यह आपके env पर निर्भर करता है कि यह स्थानीय है या क्लाउड है तो आपको MetalLB को कॉन्फ़िगर करना होगा। अधिक जानकारी के लिए आप यह थ्रेड देख सकते हैं।

MicroK8s पर Nginx Ingress मुद्दे के संबंध में भी इसी तरह का StackOverflow प्रश्न था, आप इसके बारे में यह SO थ्रेड

हालांकि, क्या आपको पुनर्लेखन का उपयोग करने की आवश्यकता है? आप multiple paths और default backend का उपयोग नहीं कर सकते? कुछ इस तरह:

apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
  name: my-ingress
spec:
  backend:
    serviceName: hello-world
    servicePort: 60000
  rules:
  - http:
      paths:
      - path: /world
        backend:
          serviceName: hello-world
          servicePort: 60000
      - path: /kube
        backend:
          serviceName: hello-kubernetes
          servicePort: 80
0
PjoterS 27 अगस्त 2020, 17:31