मेरे पास एक मोंगो, एक्सप्रेस, रिएक्ट नोड ऐप है जो वर्तमान में एक 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
एक अन्य नोट यह है कि मेरा ऐप प्रतिक्रिया राउटर का उपयोग कर रहा है। आगे के शोध के आधार पर मैं सोच रहा हूं कि क्या यह चीजों को बिल्कुल प्रभावित करता है।
किसी भी तरह की सहायता का स्वागत किया जाएगा। धन्यवाद
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
संबंधित सवाल
जुड़े हुए प्रश्न
नए सवाल
node.js
Node.js एक घटना-आधारित, गैर-अवरोधक, अतुल्यकालिक I / O रनटाइम है जो Google के V8 जावास्क्रिप्ट इंजन और libuv लाइब्रेरी का उपयोग करता है। इसका उपयोग उन अनुप्रयोगों को विकसित करने के लिए किया जाता है जो क्लाइंट पर और साथ ही सर्वर साइड पर जावास्क्रिप्ट को चलाने की क्षमता का भारी उपयोग करते हैं और इसलिए कोड के पुन: प्रयोज्य और संदर्भ स्विचिंग की कमी से लाभान्वित होते हैं।