Skip to main content

Blogs

Efficient Traffic Management: Using NGINX Ingress Controller with KubeOps PLATFORM

Efficient Traffic Management: Using NGINX Ingress Controller with KubeOps PLATFORM

In modern Kubernetes landscapes, managing and directing traffic efficiently is vital. The NGINX Ingress Controller, specifically designed for Kubernetes, offers precise control over inbound traffic. This blogpost provides an overview of the NGINX Ingress Controller and its integration with the KubeOps PLATFORM.

Kubernetes' growing ecosystem has brought about new challenges in traffic management. While traditional methods serve their purpose, they might not always meet the demands of current microservice structures. The NGINX Ingress Controller addresses these contemporary needs, and its integration with the KubeOps PLATFORM streamlines Kubernetes-related tasks.

What is an Ingress Controller?

At its core, an Ingress Controller is a vital component in a Kubernetes system. It governs and manages access to services within a Kubernetes cluster, typically HTTP traffic. In essence, it serves as a bridge between external traffic and services within the cluster.

While Kubernetes itself provides fundamental routing capabilities, an Ingress Controller augments this by introducing advanced routing rules and mechanisms. This not only ensures smoother traffic flow but also aligns with the scalability and flexibility mandates of Kubernetes. Simply put, while a Service can expose a single application, an Ingress Controller can direct traffic to multiple services based on various conditions such as path or domain.

 

 

Purpose of an Ingress Controller:

  • Manages traffic to Kubernetes services without needing multiple LoadBalancers.
  • Enables path-based routing. For example, /api can direct to a backend service, while / could lead to the frontend.
  • Facilitates SSL termination, JWT validation, rate limiting, among other functions.
  • Reduces the use of multiple load balancers, potentially cutting costs.
  • Allows routing rules to be managed from one point.
  • Distributes incoming traffic to multiple pods.
  • Provides content caching at the ingress point.
  • Supports custom annotations for extended functionality.

Features of the NGINX Ingress Controller

  • Known for its performance as a web server, NGINX also provides an Ingress Controller for Kubernetes.
  • Can handle multiple simultaneous requests.
  • Offers a wide range of configurations.
  • Supported by an active open-source community.
  • Requires fewer resources while operating.
  • Has demonstrated stability in high traffic conditions.
  • Includes built-in Prometheus support for monitoring.
  • Provides session persistence.
  • Has rate-limiting capabilities.
  • Uses algorithms such as Least Connections and IP Hash for load balancing.

Setting up NGINX Ingress Controller on KubeOps PLATFORM

Integration with the KubeOps PLATFORM requires a few YAML configurations.

Basic Steps:

In platform.yaml:

ingress: true #This has to be set!

Deploy the settings using:

kubeopsctl apply -f "platform.yaml"

After these initial configurations, further adjustments are required for the NGINX Ingress Controller.

Configuration Details for Nginx-Ingress-Controller

After initialization, a few more steps are needed.

To Locate the Service:

kubectl get service -A | grep ingress-nginx-controller

To Change Service Type to NodePort:

kubectl patch service ingress-nginx-controller -n kubeops -p '{"spec":{"type":"NodePort"}}'

For specific ports, such as 30080 and 30443:

kubectl patch service ingress-nginx-controller -n kubeops --type=json -p '[{"op":"replace","path":"/spec/type","value":"NodePort"}, {"op":"add","path":"/spec/ports/0/nodePort","value":30080}, {"op":"add","path":"/spec/ports/1/nodePort","value":30443}]'

To Add External IPs: Example using "192.168.0.1":

kubectl patch service ingress-nginx-controller -n kubeops -p '{"spec":{"externalIPs":["192.168.0.1"]}}'

Managing Kubernetes components can be intricate. Among these, traffic management is essential. The NGINX Ingress Controller offers a solution to this aspect, and when used with the KubeOps PLATFORM, it simplifies many Kubernetes deployment challenges. As Kubernetes continues to be a focal point in many infrastructures, such tools and platforms become increasingly important.

Check out our latest blogpost


Kubernetes 1.32 is here! With enhancements in scalability, security, and network performance, this release takes your clusters to the next level. Support up to 20,000 nodes, secure sensitive data with TLS 1.3, and leverage optimized storage and routing features.