OpenShift Routes এবং Service Management হলো OpenShift প্ল্যাটফর্মের গুরুত্বপূর্ণ ফিচার, যা অ্যাপ্লিকেশন এবং সার্ভিসগুলোকে এক্সপোজ এবং ম্যানেজ করতে সহায়ক। এগুলোর মাধ্যমে অ্যাপ্লিকেশনগুলোকে বাইরের ও অভ্যন্তরীণ ট্র্যাফিকের জন্য অ্যাক্সেসযোগ্য করা যায় এবং সার্ভিসের মাধ্যমে পডগুলোর মধ্যে যোগাযোগ স্থাপন করা যায়।
১. OpenShift Routes
Routes হলো OpenShift-এর একটি ফিচার যা সার্ভিসগুলোকে বাইরের (এক্সটারনাল) ট্র্যাফিকের জন্য অ্যাক্সেসযোগ্য করে। Routes সাধারণত HTTP(S) এবং TLS এর মতো প্রোটোকলের মাধ্যমে বাইরের ক্লায়েন্ট এবং সার্ভিসগুলোর মধ্যে যোগাযোগ স্থাপন করে।
Routes-এর কাজ:
- অ্যাপ্লিকেশন এক্সপোজ করা:
- Routes ব্যবহার করে একটি সার্ভিস বা অ্যাপ্লিকেশনকে ইন্টারনেট বা লোকাল নেটওয়ার্কের বাইরের ক্লায়েন্টদের জন্য এক্সপোজ করা যায়।
- লেভেল ৭ (L7) রাউটিং:
- Routes মূলত লেভেল ৭ প্রোটোকল (HTTP/S) ব্যবহার করে, যার ফলে ট্র্যাফিক নিয়ন্ত্রণ এবং লোড ব্যালেন্সিং করা যায়।
- TLS Termination:
- OpenShift Routes TLS/SSL সার্টিফিকেট ব্যবহার করে HTTPS ট্র্যাফিক পরিচালনা করতে পারে, যা সিকিউর অ্যাপ্লিকেশন এক্সপোজ করার জন্য প্রয়োজনীয়।
Routes-এর একটি উদাহরণ:
apiVersion: route.openshift.io/v1
kind: Route
metadata:
name: my-app-route
spec:
host: myapp.example.com
to:
kind: Service
name: my-app-service
port:
targetPort: 8080
tls:
termination: edge
ব্যাখ্যা:
- host: এটি সেই ডোমেইন বা হোস্টনেম নির্ধারণ করে যার মাধ্যমে অ্যাপ্লিকেশন এক্সপোজ করা হবে।
- to: এখানে
my-app-serviceসার্ভিসকে টার্গেট করা হয়েছে, যাতে Routes সেই সার্ভিসের পডগুলোর জন্য ট্র্যাফিক পরিচালনা করতে পারে। - tls: TLS সিকিউরিটি সেট করা হয়েছে, যাতে HTTPS ট্র্যাফিক পরিচালিত হয়।
Routes-এর প্রধান বৈশিষ্ট্য:
- Edge Termination: ট্র্যাফিক সার্ভারে পৌঁছানোর আগেই TLS ট্র্যাফিক ডিক্রিপ্ট করে, যা সার্ভারের ওপর লোড কমায়।
- Passthrough Termination: TLS ট্র্যাফিককে সার্ভারে পৌঁছানো পর্যন্ত এনক্রিপ্টেড রাখে।
- Re-encrypt Termination: ট্র্যাফিককে আবারও এনক্রিপ্ট করে সার্ভারে পাঠানো হয়।
২. Service Management
Service হলো OpenShift এবং Kubernetes-এ ব্যবহৃত একটি অ্যাবস্ট্রাকশন লেয়ার, যা পডগুলোর জন্য একটি লজিক্যাল ইউনিট তৈরি করে এবং পডগুলোর মধ্যে যোগাযোগ স্থাপন করে। Service সাধারণত একটি নির্দিষ্ট পোর্টে পডগুলোর জন্য যোগাযোগের একটি একক ইন্টারফেস তৈরি করে।
Service-এর কাজ:
- লোড ব্যালেন্সিং:
- Service পডগুলোর মধ্যে লোড ব্যালেন্সিং করে, যাতে ইনকামিং ট্র্যাফিক সমানভাবে পডগুলোর মধ্যে বিতরণ হয়।
- স্টেবল ইন্টারফেস:
- পডগুলোর মধ্যে IP অ্যাড্রেস পরিবর্তন হলেও Service একটি স্টেবল ইন্টারফেস (ClusterIP) প্রদান করে, যাতে ক্লায়েন্টদের জন্য কোনো প্রভাব না পড়ে।
- পড ডিসকভারি:
- Service লেবেল সিলেক্টর ব্যবহার করে পডগুলোর মধ্যে যোগাযোগের সুবিধা প্রদান করে, যা পডগুলোর জন্য একটি কনসিসটেন্ট সার্ভিস পয়েন্ট তৈরি করে।
Service-এর প্রকারভেদ:
ClusterIP:
- এটি ডিফল্ট সার্ভিস টাইপ, যা ক্লাস্টারের ভিতরের পডগুলোর মধ্যে যোগাযোগ স্থাপন করে। ClusterIP সাধারণত বাইরের ট্র্যাফিক গ্রহণ করে না।
NodePort:
- এটি একটি নির্দিষ্ট পোর্টে বাইরের ট্র্যাফিক গ্রহণ করে এবং ক্লাস্টারের পডগুলোর মধ্যে ট্র্যাফিক রাউট করে। এটি ClusterIP-এর উপরে কাজ করে এবং বাইরের অ্যাপ্লিকেশনকে ক্লাস্টারের মধ্যে অ্যাক্সেস করতে সহায়ক।
LoadBalancer:
- এটি বাইরের ক্লাউড প্রোভাইডার (যেমন AWS, GCP) এর লোড ব্যালেন্সার ব্যবহার করে বাইরের ট্র্যাফিক ক্লাস্টারের পডগুলোর মধ্যে ব্যালেন্স করে। এটি NodePort-এর উপরে কাজ করে।
ExternalName:
- এটি একটি DNS নেম অ্যাসাইন করে বাইরের সার্ভিসগুলোর সাথে সংযোগ স্থাপন করতে সাহায্য করে।
Service-এর একটি উদাহরণ:
apiVersion: v1
kind: Service
metadata:
name: my-app-service
spec:
selector:
app: my-app
ports:
- protocol: TCP
port: 80
targetPort: 8080
type: ClusterIP
ব্যাখ্যা:
- selector: এটি
app: my-appলেবেলযুক্ত পডগুলোকে টার্গেট করে, যা এই সার্ভিসের সাথে যুক্ত। - ports: সার্ভিসের
80পোর্টে ইনকামিং ট্র্যাফিক গ্রহণ করা হবে এবং তা পডের8080পোর্টে ফরওয়ার্ড করা হবে। - type:
ClusterIPটাইপের সার্ভিস, যা ক্লাস্টারের ভেতরে যোগাযোগের জন্য ব্যবহৃত হয়।
Routes এবং Services-এর মধ্যে সম্পর্ক
- Service পডগুলোর জন্য একটি স্টেবল ইন্টারফেস তৈরি করে এবং পডগুলোর মধ্যে যোগাযোগ এবং লোড ব্যালেন্সিং নিশ্চিত করে।
- Routes সার্ভিসগুলোর উপর ভিত্তি করে বাইরের ট্র্যাফিককে ক্লাস্টারের মধ্যে নিয়ে আসে এবং নির্দিষ্ট সার্ভিস বা অ্যাপ্লিকেশনে পৌঁছে দেয়।
- Routes সাধারণত HTTP/HTTPS বা TCP প্রোটোকল ব্যবহার করে ট্র্যাফিক পরিচালনা করে এবং সার্ভিসের মাধ্যমে পডগুলোর মধ্যে ট্র্যাফিক প্রবাহিত করে।
OpenShift-এ Routes এবং Service Management-এর ভূমিকা
অ্যাপ্লিকেশন এক্সপোজ এবং নিরাপত্তা:
- Routes এবং Services একসাথে কাজ করে অ্যাপ্লিকেশনকে বাইরের ট্র্যাফিকের জন্য উন্মুক্ত করে এবং TLS এর মাধ্যমে নিরাপত্তা প্রদান করে।
লোড ব্যালেন্সিং এবং স্কেলিং:
- Service পডগুলোর মধ্যে লোড ব্যালেন্স করে এবং অ্যাপ্লিকেশন স্কেলিংয়ের সময় সার্ভিস স্টেবিলিটি বজায় রাখে।
স্টেবল নেটওয়ার্কিং:
- Service এবং Routes ব্যবহার করে OpenShift অ্যাপ্লিকেশন এবং সার্ভিসের জন্য স্টেবল নেটওয়ার্কিং পরিবেশ তৈরি করে, যা অ্যাপ্লিকেশন ম্যানেজমেন্টকে সহজ এবং কার্যকরী করে।
সংক্ষেপে
| বৈশিষ্ট্য | Routes | Service |
|---|---|---|
| কাজ | বাইরের ট্র্যাফিক সার্ভিস বা অ্যাপ্লিকেশনে নিয়ে আসে | পডগুলোর জন্য একটি স্টেবল ইন্টারফেস তৈরি করে |
| প্রোটোকল | HTTP/HTTPS, TLS | TCP/UDP |
| টাইপ | Edge, Passthrough, Re-encrypt | ClusterIP, NodePort, LoadBalancer, ExternalName |
Routes এবং Service Management একসাথে OpenShift-এ পড এবং সার্ভিসগুলোর যোগাযোগ এবং এক্সপোজ নিশ্চিত করে। এগুলোর মাধ্যমে অ্যাপ্লিকেশনগুলো বাইরের ট্র্যাফিকের জন্য উন্মুক্ত করা যায় এবং একইসঙ্গে ক্লাস্টারের ভেতরে পডগুলোর মধ্যে সঠিক যোগাযোগ এবং লোড ব্যালেন্সিং বজায় রাখা যায়।
Service এবং Load Balancer এর ধারণা
OpenShift এবং Kubernetes-এ Service এবং Load Balancer দুটি গুরুত্বপূর্ণ ধারণা, যা কনটেইনারাইজড অ্যাপ্লিকেশনগুলির মধ্যে যোগাযোগ এবং ট্রাফিক ব্যবস্থাপনার জন্য ব্যবহৃত হয়। নিচে তাদের সংজ্ঞা, বৈশিষ্ট্য এবং ব্যবহারের পদ্ধতি ব্যাখ্যা করা হলো।
১. Service
সংজ্ঞা
Service হল একটি Kubernetes অবকাঠামো উপাদান যা Pods এর মধ্যে স্থিতিশীল যোগাযোগ নিশ্চিত করে। এটি একটি বিমূর্ত স্তর তৈরি করে যা Pods এর একটি সেটকে (যা সাধারণত একই অ্যাপ্লিকেশন বা পরিষেবা) একটি একক DNS নামের মাধ্যমে একত্রিত করে।
বৈশিষ্ট্য
- স্ট্যাটিক IP: Service একটি স্থির IP ঠিকানা প্রদান করে, যা Pods এর পরিবর্তনের সময়ও অপরিবর্তিত থাকে।
- DNS নাম: Service-কে DNS নামের মাধ্যমে এক্সেস করা যায়, যা Pods এর মধ্যে যোগাযোগ সহজ করে।
- লোড ব্যালান্সিং: Service, Pods এর মধ্যে লোড ব্যালান্সিং সম্পন্ন করে, যা অধিক কার্যকরী ট্রাফিক ব্যবস্থাপনা নিশ্চিত করে।
প্রকারভেদ
- ClusterIP: ডিফল্ট ধরনের Service, যা ক্লাস্টারের ভিতর অন্য Pods এর থেকে এক্সেসযোগ্য।
- NodePort: একটি নির্দিষ্ট পোর্টে ক্লাস্টারের Node-এ Service কে প্রকাশ করে, যা বাইরের ট্রাফিকের জন্য উপলব্ধ।
- LoadBalancer: ক্লাউড প্রদানকারী দ্বারা একটি লোড ব্যালেন্সার তৈরি করে, যা বাইরের ট্রাফিক পরিচালনা করে।
- ExternalName: DNS নাম ব্যবহারের মাধ্যমে বাহ্যিক সেবার সাথে সংযোগ স্থাপন করে।
উদাহরণ YAML কনফিগারেশন
apiVersion: v1
kind: Service
metadata:
name: example-service
spec:
type: ClusterIP
selector:
app: example
ports:
- port: 80
targetPort: 80
২. Load Balancer
সংজ্ঞা
Load Balancer হল একটি সার্ভার যা ইনকামিং ট্রাফিককে বিভিন্ন সার্ভারের মধ্যে বিতরণ করে, যাতে সার্ভারগুলির মধ্যে ভারসাম্য বজায় থাকে এবং কোনও একটি সার্ভার খুব বেশি লোড না হয়।
বৈশিষ্ট্য
- ট্রাফিক বিতরণ: Load Balancer ইনকামিং ট্রাফিককে বিভিন্ন Pods বা সার্ভারের মধ্যে সমানভাবে বিতরণ করে।
- স্ট্যাটাস চেক: এটি সার্ভারের স্বাস্থ্য পরীক্ষা করে এবং সমস্যা হলে ট্রাফিক সেই সার্ভারে পাঠায় না।
- স্কেলেবিলিটি: সহজে নতুন সার্ভার বা Pods যুক্ত করা যায় এবং ট্রাফিক স্বয়ংক্রিয়ভাবে তাদের মধ্যে বিতরণ করা হয়।
ব্যবহারের প্রক্রিয়া
- Kubernetes Service-এর মধ্যে
LoadBalancerপ্রকার ব্যবহার করে, যা ক্লাউড প্রদানকারীর সাথে সংযুক্ত একটি লোড ব্যালেন্সার তৈরি করে।
উদাহরণ YAML কনফিগারেশন
apiVersion: v1
kind: Service
metadata:
name: example-loadbalancer
spec:
type: LoadBalancer
selector:
app: example
ports:
- port: 80
targetPort: 80
সারসংক্ষেপ
Service এবং Load Balancer হল OpenShift এবং Kubernetes-এ কনটেইনারাইজড অ্যাপ্লিকেশনগুলির মধ্যে যোগাযোগ এবং ট্রাফিক ব্যবস্থাপনার জন্য অপরিহার্য উপাদান।
- Service Pods এর মধ্যে স্থিতিশীল যোগাযোগ নিশ্চিত করে এবং DNS নামের মাধ্যমে অ্যাক্সেসযোগ্য করে তোলে।
- Load Balancer ইনকামিং ট্রাফিককে বিভিন্ন সার্ভার বা Pods মধ্যে বিতরণ করে, যা ভারসাম্য বজায় রাখে এবং সার্ভারগুলির কার্যক্ষমতা বাড়ায়।
এই দুটি উপাদান ব্যবহার করে আপনি একটি উচ্চ কার্যক্ষমতা এবং স্থিতিশীল অ্যাপ্লিকেশন তৈরি করতে সক্ষম হবেন।
OpenShift Routes এবং External Access হল OpenShift ক্লাস্টারে অ্যাপ্লিকেশনগুলির জন্য বাইরের ট্রাফিক পরিচালনা করার গুরুত্বপূর্ণ উপাদান। এগুলি ব্যবহার করে, আপনি আপনার অ্যাপ্লিকেশনগুলিকে ইন্টারনেটের মাধ্যমে সহজে অ্যাক্সেসযোগ্য করতে পারেন। নিচে উভয় ধারণার ব্যাখ্যা এবং উদাহরণ দেওয়া হলো।
OpenShift Routes
সংজ্ঞা
OpenShift Routes হল একটি কনফিগারেশন অবজেক্ট যা বাইরের বিশ্ব থেকে আপনার অ্যাপ্লিকেশনগুলিতে HTTP এবং HTTPS ট্রাফিক প্রবাহিত করতে সহায়তা করে। Route তৈরি করার মাধ্যমে, আপনি ক্লাস্টারে চলমান Pods বা Services এর জন্য একটি DNS নাম এবং URI সরবরাহ করেন।
বৈশিষ্ট্য
- DNS নাম: Routes একটি ইউনিক DNS নাম তৈরি করে, যা আপনার অ্যাপ্লিকেশনকে ইন্টারনেটের মাধ্যমে অ্যাক্সেস করতে সহায়তা করে।
- SSL/TLS সমর্থন: Routes SSL/TLS সার্টিফিকেট ব্যবহার করে নিরাপদ HTTPS ট্রাফিক পরিচালনা করতে পারে।
- অ্যাপ্লিকেশন ভারসাম্য: Routes ব্যবহার করে আপনি আপনার ক্লাস্টারের মধ্যে বিভিন্ন অ্যাপ্লিকেশন ভারসাম্য বজায় রাখতে পারেন।
উদাহরণ YAML কনফিগারেশন
apiVersion: route.openshift.io/v1
kind: Route
metadata:
name: example-route
spec:
to:
kind: Service
name: example-service
port:
targetPort: 80
tls:
termination: edge # SSL/TLS এর জন্য edge termination
External Access
সংজ্ঞা
External Access OpenShift ক্লাস্টারে বাইরের ট্রাফিকের প্রবাহ পরিচালনা করার প্রক্রিয়া। এটি ক্লাস্টারের বাইরে থেকে অ্যাপ্লিকেশনগুলিতে অ্যাক্সেস করার জন্য বিভিন্ন কৌশল ব্যবহার করে।
উপায়
NodePort: একটি Service তৈরি করার সময় NodePort ব্যবহার করে, যা Node IP ঠিকানার নির্দিষ্ট পোর্টে অ্যাক্সেসের অনুমতি দেয়। উদাহরণস্বরূপ:
apiVersion: v1
kind: Service
metadata:
name: example-nodeport
spec:
type: NodePort
ports:
- port: 80
targetPort: 80
nodePort: 30000 # বাইরের ট্রাফিকের জন্য নির্দিষ্ট পোর্ট
selector:
app: example
LoadBalancer: যদি আপনি ক্লাউড প্রদানকারী (যেমন AWS, GCP, Azure) ব্যবহার করেন, তাহলে LoadBalancer টাইপের Service তৈরি করে বাইরের অ্যাক্সেস নিশ্চিত করতে পারেন। এটি একটি স্বয়ংক্রিয়ভাবে পরিচালিত লোড ব্যালেন্সার তৈরি করবে।
উদাহরণ YAML কনফিগারেশন
apiVersion: v1
kind: Service
metadata:
name: example-loadbalancer
spec:
type: LoadBalancer
ports:
- port: 80
targetPort: 80
selector:
app: example
সারসংক্ষেপ
OpenShift Routes এবং External Access উভয়ই আপনার ক্লাস্টারের বাইরের ট্রাফিক পরিচালনার জন্য অপরিহার্য।
- OpenShift Routes: অ্যাপ্লিকেশনগুলিতে HTTP/HTTPS ট্রাফিক প্রবাহিত করতে সহায়তা করে এবং DNS নাম সরবরাহ করে।
- External Access: ক্লাস্টারের বাইরে থেকে অ্যাপ্লিকেশনগুলিতে অ্যাক্সেসের জন্য বিভিন্ন কৌশল, যেমন NodePort এবং LoadBalancer ব্যবহার করে।
এই কৌশলগুলি ব্যবহার করে, আপনি আপনার OpenShift ক্লাস্টারের অ্যাপ্লিকেশনগুলিকে বাইরের ব্যবহারকারীদের জন্য সহজে উপলব্ধ করতে পারেন।
Ingress এবং Routing Policy হলো Kubernetes এবং OpenShift-এর গুরুত্বপূর্ণ নেটওয়ার্কিং ফিচার, যা বাইরের ট্র্যাফিককে ক্লাস্টারের মধ্যে নিয়ে আসে এবং অ্যাপ্লিকেশন বা সার্ভিসগুলোর মধ্যে সঠিকভাবে রাউট করে। এগুলোর মাধ্যমে অ্যাপ্লিকেশনের নিরাপত্তা, লোড ব্যালেন্সিং, এবং ট্র্যাফিক ম্যানেজমেন্ট নিশ্চিত করা যায়।
১. Ingress: সংজ্ঞা এবং কাজ
Ingress হলো Kubernetes-এর একটি অবজেক্ট, যা ক্লাস্টারের বাইরের HTTP এবং HTTPS ট্র্যাফিককে পড বা সার্ভিসগুলোর মধ্যে নিয়ে আসে এবং সঠিক রাউটিং পরিচালনা করে। Ingress ব্যবহার করে একাধিক সার্ভিসকে এক্সপোজ করা যায়, এবং এটি TLS সার্টিফিকেটের মাধ্যমে সিকিউর HTTP (HTTPS) ট্র্যাফিক পরিচালনা করতে পারে।
Ingress-এর বৈশিষ্ট্য:
- HTTP/HTTPS Routing:
- Ingress মূলত HTTP/HTTPS প্রোটোকলের মাধ্যমে বাইরের ট্র্যাফিক ক্লাস্টারের মধ্যে নিয়ে আসে এবং অ্যাপ্লিকেশনের নির্দিষ্ট রুট বা URI এর ভিত্তিতে রাউট করে।
- TLS Termination:
- Ingress TLS সার্টিফিকেট ব্যবহার করে HTTPS ট্র্যাফিক পরিচালনা করতে পারে। এটি ট্র্যাফিককে এনক্রিপ্ট করে, যা নিরাপত্তা নিশ্চিত করে।
- Path-based Routing:
- Ingress URI পাথের ভিত্তিতে বিভিন্ন সার্ভিস বা অ্যাপ্লিকেশনে ট্র্যাফিক রাউট করতে পারে। উদাহরণস্বরূপ,
/app1পাথ একটি সার্ভিসে এবং/app2পাথ অন্য সার্ভিসে রাউট করা যেতে পারে।
- Ingress URI পাথের ভিত্তিতে বিভিন্ন সার্ভিস বা অ্যাপ্লিকেশনে ট্র্যাফিক রাউট করতে পারে। উদাহরণস্বরূপ,
- Load Balancing:
- Ingress বিভিন্ন পডের মধ্যে লোড ব্যালেন্স করতে পারে, যাতে ইনকামিং ট্র্যাফিক সমানভাবে পডগুলোর মধ্যে বিতরণ হয়।
Ingress কনফিগারেশনের উদাহরণ:
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: example-ingress
spec:
rules:
- host: example.com
http:
paths:
- path: /app1
pathType: Prefix
backend:
service:
name: app1-service
port:
number: 80
- path: /app2
pathType: Prefix
backend:
service:
name: app2-service
port:
number: 80
tls:
- hosts:
- example.com
secretName: example-tls
ব্যাখ্যা:
- rules: এখানে
example.comহোস্টনেম ব্যবহার করে/app1এবং/app2পাথ দুটি ভিন্ন সার্ভিসে রাউট করা হয়েছে। - tls:
example-tlsনামে একটি TLS সার্টিফিকেট ব্যবহার করা হয়েছে, যা HTTPS ট্র্যাফিক পরিচালনা করবে।
Ingress Controller
Ingress Controller হলো Ingress পরিচালনার জন্য প্রয়োজনীয় একটি কম্পোনেন্ট, যা Kubernetes ক্লাস্টারে Ingress অবজেক্ট দেখে এবং সেই অনুযায়ী ট্র্যাফিক পরিচালনা করে। কিছু জনপ্রিয় Ingress Controller হলো:
- NGINX Ingress Controller
- HAProxy Ingress Controller
- Traefik Ingress Controller
Ingress Controller নিশ্চিত করে যে Ingress অবজেক্ট অনুযায়ী ট্র্যাফিক সঠিকভাবে সার্ভিস বা পডগুলোতে পৌঁছায় এবং TLS এবং লোড ব্যালেন্সিংয়ের ফিচারগুলো সঠিকভাবে কাজ করে।
২. Routing Policy: সংজ্ঞা এবং কাজ
Routing Policy হলো ট্র্যাফিক রাউটিং নিয়ন্ত্রণের একটি কৌশল, যা Ingress বা Routes-এর মাধ্যমে নির্দিষ্ট ট্র্যাফিক প্যাটার্ন এবং নিয়ম অনুযায়ী ট্র্যাফিক পরিচালনা করে। Kubernetes এবং OpenShift-এ Routing Policy ব্যবহার করে ট্র্যাফিক নিয়ন্ত্রণ এবং ব্যবস্থাপনা নিশ্চিত করা যায়। এটি প্রাথমিকভাবে নিম্নলিখিত বিষয়গুলো নিয়ন্ত্রণ করে:
Path-based Routing:
- নির্দিষ্ট URI পাথ অনুযায়ী ট্র্যাফিক রাউট করা হয়, যাতে বিভিন্ন অ্যাপ্লিকেশন বা সার্ভিস ট্র্যাফিক পায়। উদাহরণস্বরূপ,
/loginপাথ একটি অ্যাপ্লিকেশন সার্ভিসে এবং/dashboardঅন্য অ্যাপ্লিকেশনে রাউট করা যেতে পারে।
Host-based Routing:
- হোস্টনেম বা সাব-ডোমেইনের ভিত্তিতে ট্র্যাফিক রাউট করা যায়। উদাহরণস্বরূপ,
api.example.comএকটি API সার্ভিসে এবংapp.example.comএকটি ফ্রন্ট-এন্ড সার্ভিসে রাউট করা যেতে পারে।
TLS Policy:
- Routing Policy TLS/SSL ব্যবস্থাপনা করে HTTPS ট্র্যাফিক পরিচালনা করতে পারে। এটি TLS সার্টিফিকেট ব্যবহার করে ট্র্যাফিক এনক্রিপ্ট করে এবং নিরাপদ যোগাযোগ নিশ্চিত করে।
Traffic Splitting এবং Canary Releases:
- Routing Policy ট্র্যাফিক ভাগ করতে পারে, যাতে বিভিন্ন ভার্সনের অ্যাপ্লিকেশনে ট্র্যাফিক পাঠানো যায়। উদাহরণস্বরূপ, ১০% ট্র্যাফিক নতুন ভার্সনে এবং ৯০% ট্র্যাফিক পুরোনো ভার্সনে রাউট করা যেতে পারে।
Ingress এবং Routing Policy-এর মধ্যে সম্পর্ক
- Ingress হলো একটি Kubernetes অবজেক্ট যা Routing Policy অনুযায়ী ট্র্যাফিক পরিচালনা করে। Ingress একটি রুট বা URI নির্দিষ্ট করে সার্ভিসে ট্র্যাফিক রাউট করে এবং Routing Policy ব্যবহার করে ট্র্যাফিক নিয়ন্ত্রণ করে।
- Routing Policy Ingress-এর কাজ করার কৌশল নির্ধারণ করে এবং ট্র্যাফিক ম্যানেজমেন্টের নিয়ম অনুসরণ করে। এটি নির্ধারণ করে কোন URI বা হোস্টনেম কোন সার্ভিসে রাউট হবে, কিভাবে TLS ব্যবহৃত হবে, এবং ট্র্যাফিক ভাগাভাগি হবে।
উদাহরণ: Routing Policy সেটআপ করা
OpenShift বা Kubernetes-এ Ingress-এর মাধ্যমে Routing Policy সেটআপ করতে নিচের মত একটি YAML ফাইল ব্যবহার করা যায়:
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: my-ingress
spec:
rules:
- host: example.com
http:
paths:
- path: /api
pathType: Prefix
backend:
service:
name: api-service
port:
number: 8080
- path: /app
pathType: Prefix
backend:
service:
name: app-service
port:
number: 8080
tls:
- hosts:
- example.com
secretName: example-tls
ব্যাখ্যা:
- /api পাথটি
api-serviceসার্ভিসে রাউট করা হয়েছে এবং /app পাথটিapp-serviceসার্ভিসে রাউট করা হয়েছে। - TLS ব্যবহার করে ট্র্যাফিক এনক্রিপ্ট করা হয়েছে।
সংক্ষেপে
| বৈশিষ্ট্য | Ingress | Routing Policy |
|---|---|---|
| কাজ | বাইরের HTTP/HTTPS ট্র্যাফিক ক্লাস্টারে নিয়ে আসে | ট্র্যাফিক নিয়ন্ত্রণ করে এবং সার্ভিসগুলোতে রাউট করে |
| প্রোটোকল | HTTP/HTTPS এবং TLS | HTTP, HTTPS, এবং TLS |
| বৈশিষ্ট্য | Path-based, Host-based Routing, TLS | Path-based Routing, Host-based Routing, Traffic Splitting, TLS |
উপসংহার
Ingress এবং Routing Policy Kubernetes এবং OpenShift-এ ক্লাস্টারের মধ্যে ট্র্যাফিক রাউটিং এবং ম্যানেজমেন্ট নিশ্চিত করে। এগুলো ব্যবহার করে বিভিন্ন পাথ এবং হোস্টনেমের মাধ্যমে ট্র্যাফিক পরিচালনা করা, লোড ব্যালেন্সিং করা, এবং সিকিউরিটি নিশ্চিত করা যায়। Ingress এবং Routing Policy-এর মাধ্যমে অ্যাপ্লিকেশন এক্সপোজ করা এবং ম্যানেজ করা আরও সহজ এবং কার্যকরী হয়।
OpenShift-এ Service এবং Route তৈরি করার মাধ্যমে আমরা অ্যাপ্লিকেশনকে বাইরের ট্র্যাফিকের জন্য এক্সপোজ করতে পারি এবং পডগুলোর মধ্যে যোগাযোগ স্থাপন করতে পারি। নিচে উদাহরণসহ একটি Service এবং একটি Route তৈরি করার প্রক্রিয়া ব্যাখ্যা করা হয়েছে।
উদাহরণ অ্যাপ্লিকেশন: Nginx
এই উদাহরণে আমরা একটি Nginx অ্যাপ্লিকেশন তৈরি করবো এবং সেটি একটি Service এবং Route-এর মাধ্যমে বাইরের ট্র্যাফিকের জন্য এক্সপোজ করবো।
১. Service তৈরি করা
Service হলো Kubernetes বা OpenShift-এর একটি অবজেক্ট, যা পডগুলোর জন্য একটি লজিক্যাল ইউনিট তৈরি করে এবং পডগুলোর মধ্যে যোগাযোগ স্থাপন করে। এটি পডগুলোর জন্য একটি স্থিতিশীল IP প্রদান করে এবং লোড ব্যালেন্সিং নিশ্চিত করে।
Service তৈরি করার YAML ফাইল:
apiVersion: v1
kind: Service
metadata:
name: nginx-service
labels:
app: nginx
spec:
selector:
app: nginx
ports:
- protocol: TCP
port: 80
targetPort: 80
type: ClusterIP
ব্যাখ্যা:
- metadata:
name: সার্ভিসের নাম দেওয়া হয়েছেnginx-service।labels: সার্ভিসের লেবেল হিসেবেapp: nginxব্যবহার করা হয়েছে।
- spec:
selector: এই সার্ভিসapp: nginxলেবেলযুক্ত পডগুলোকে টার্গেট করবে।ports: সার্ভিস80পোর্টে ট্র্যাফিক গ্রহণ করবে এবং এটি পডের80পোর্টে ফরওয়ার্ড করবে।type:ClusterIPটাইপ ব্যবহার করা হয়েছে, যা ক্লাস্টারের মধ্যে যোগাযোগের জন্য ব্যবহৃত হয়।
Service তৈরি করার জন্য কমান্ড:
oc apply -f nginx-service.yaml
এটি সার্ভিস তৈরি করবে এবং ক্লাস্টারের মধ্যে app: nginx লেবেলযুক্ত পডগুলোর জন্য একটি স্টেবল IP প্রদান করবে।
২. Route তৈরি করা
Route হলো OpenShift-এর একটি ফিচার, যা সার্ভিসগুলোকে বাইরের (এক্সটারনাল) ট্র্যাফিকের জন্য এক্সপোজ করে। এটি সার্ভিসের উপর ভিত্তি করে কাজ করে এবং বাইরের ট্র্যাফিককে সার্ভিস বা পডে রাউট করে।
Route তৈরি করার YAML ফাইল:
apiVersion: route.openshift.io/v1
kind: Route
metadata:
name: nginx-route
spec:
host: nginx-app.example.com
to:
kind: Service
name: nginx-service
port:
targetPort: 80
tls:
termination: edge
ব্যাখ্যা:
- metadata:
name: রাউটের নাম দেওয়া হয়েছেnginx-route।
- spec:
host: এখানেnginx-app.example.comহোস্টনেম ব্যবহার করা হয়েছে, যা বাইরের ট্র্যাফিকের জন্য ব্যবহার করা হবে।to: এখানেnginx-serviceসার্ভিস টার্গেট করা হয়েছে, যাতে Route সার্ভিসের মাধ্যমে পডগুলোতে ট্র্যাফিক পৌঁছে দিতে পারে।port: সার্ভিসের80পোর্টে ট্র্যাফিক রাউট করা হবে।tls:edgeটার্মিনেশন ব্যবহৃত হয়েছে, যা ট্র্যাফিক ডিক্রিপ্ট করবে এবং সার্ভারে পাঠাবে।
Route তৈরি করার জন্য কমান্ড:
oc apply -f nginx-route.yaml
এই কমান্ডটি Route তৈরি করবে এবং nginx-app.example.com হোস্টনেমের মাধ্যমে সার্ভিসকে বাইরের ট্র্যাফিকের জন্য উন্মুক্ত করবে।
সার্ভিস এবং রাউট তৈরি করার পরে যাচাই করা
সার্ভিসের স্টেটাস যাচাই করা:
oc get svc nginx-service
এই কমান্ডটি সার্ভিসের স্টেটাস এবং এর বিস্তারিত দেখাবে, যেমন এর Cluster IP এবং পোর্ট।
রাউটের স্টেটাস যাচাই করা:
oc get route nginx-route
এই কমান্ডটি রাউটের স্টেটাস দেখাবে এবং রাউটটি যে হোস্টনেম ব্যবহার করে এক্সপোজ করা হয়েছে তা দেখাবে।
সার্ভিস এবং রাউটের সম্পর্ক
- Service: পডগুলোর জন্য একটি স্টেবল ইন্টারফেস তৈরি করে এবং তাদের মধ্যে যোগাযোগ স্থাপন করে। এটি ক্লাস্টারের ভেতরে অ্যাপ্লিকেশন লেভেলে লোড ব্যালেন্সিং করে।
- Route: সার্ভিসের উপর ভিত্তি করে বাইরের ট্র্যাফিককে ক্লাস্টারে নিয়ে আসে এবং সার্ভিসের মাধ্যমে পডগুলোর মধ্যে ট্র্যাফিক পৌঁছে দেয়। এটি HTTP/HTTPS বা TLS ব্যবহার করে সিকিউর ট্র্যাফিক পরিচালনা করতে পারে।
উপসংহার
এই উদাহরণে, আমরা একটি Nginx সার্ভিস এবং একটি Route তৈরি করেছি, যা OpenShift-এ একটি অ্যাপ্লিকেশনকে বাইরের ট্র্যাফিকের জন্য এক্সপোজ করতে ব্যবহৃত হয়। Service এবং Route একসাথে কাজ করে নিশ্চিত করে যে অ্যাপ্লিকেশনটি বাইরের ক্লায়েন্টদের কাছে সহজে এবং নিরাপদে পৌঁছায়।
Read more