Demystifying OpenShift Ingress Controller: A Practical Guide
Aloysius Pious
Websphere |JBoss |Apache |Tomcat| Bash Script | Python | Ansible | Jenkins | Cloud & Dev Ops | ?? Redhat Ansible ,OpenShift & IBM Websphere Certified | ?? Quantitative Finance enthusiast
Introduction:
Welcome to the world of OpenShift, where container orchestration meets simplicity. In this article, we'll explore the OpenShift Ingress Controller, a powerful tool for managing external access to services within your OpenShift cluster. Let's dive in with real-time examples to make the concept clear.
What is an Ingress Controller?
In Kubernetes and OpenShift, an Ingress Controller is responsible for managing external access to services within the cluster. It acts as a smart router, directing incoming traffic based on rules defined by the user.
Setting the Stage:
Assuming you have an OpenShift cluster up and running, let's start by creating a simple web application deployment. I'll use a basic Node.js application for demonstration purposes.
apiVersion: apps/v1
kind: Deployment
metadata:
name: sample-app
spec:
replicas: 3
selector:
matchLabels:
app: sample-app
template:
metadata:
labels:
app: sample-app
spec:
containers:
- name: web
image: your-nodejs-image
ports:
- containerPort: 8080
Deploying the Application:
Apply the deployment YAML with oc apply -f deployment.yaml. Now, you have a simple Node.js app running in your cluster.
oc apply -f deployment.yaml
Creating an Ingress Resource:
Let's expose this application to the external world using an Ingress resource.
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: sample-ingress
spec:
rules:
- host: sample-app.example.com
http:
paths:
- pathType: Prefix
path: "/"
backend:
service:
name: sample-app
port:
number: 8080
Applying the Ingress:
Apply the Ingress YAML with oc apply -f ingress.yaml. This sets up a routing rule that directs traffic from sample-app.example.com to your Node.js application.
oc apply -f ingress.yaml
Verifying the Setup:
Visit https://sample-app.example.com in your browser, and you should see your Node.js application in action. Congratulations! You've successfully configured the OpenShift Ingress Controller.
Advanced Configurations:
tls:
- hosts:
- sample-app.example.com
secretName: sample-app-tls
Apply the changes with oc apply -f ingress.yaml, and don't forget to create a TLS secret.
oc apply -f ingress.yaml
paths:
- pathType: Prefix
path: "/api"
backend:
service:
name: api-service
port:
number: 8080
Conclusion:
OpenShift's Ingress Controller simplifies external access management and allows for flexible routing strategies. In this article, we've covered the basics and explored some advanced configurations. Experiment, explore, and leverage the power of OpenShift to streamline your containerized applications.