How to configure a kubernetes bare-metal ingress controller to listen to port 80?

2 min read 06-10-2024
How to configure a kubernetes bare-metal ingress controller to listen to port 80?


Configuring a Kubernetes Bare-Metal Ingress Controller to Listen on Port 80

Kubernetes Ingress controllers act as the gateway to your applications, handling incoming traffic and directing it to the appropriate services. When deploying a bare-metal Kubernetes cluster, you might find yourself needing to configure your Ingress controller to listen on port 80, the standard HTTP port, for seamless access from the outside world.

Let's explore how to achieve this using Nginx Ingress Controller as an example.

The Problem:

By default, Nginx Ingress Controller listens on port 8080. This means external clients need to access your applications through this port, which isn't always desired. To ensure standard web traffic flow, you need to make the Ingress controller listen on port 80.

Understanding the Solution:

The key is to configure the Ingress controller deployment to expose the desired port. This involves modifying the deployment YAML file and ensuring proper communication with the external world.

Steps to Configure Nginx Ingress Controller:

  1. Deployment Modification:

    • Edit the Nginx Ingress Controller deployment YAML file.
    • Modify the service section to include port 80:
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: nginx-ingress-controller
    spec:
      # ...
      template:
        metadata:
          labels:
            app: nginx-ingress-controller
        spec:
          # ...
          containers:
            - name: nginx-ingress-controller
              # ...
              ports:
                - containerPort: 80
                  name: http
                - containerPort: 443
                  name: https
          # ...
    ---
    apiVersion: v1
    kind: Service
    metadata:
      name: nginx-ingress-controller
    spec:
      type: LoadBalancer
      ports:
        - port: 80
          targetPort: http
        - port: 443
          targetPort: https
      selector:
        app: nginx-ingress-controller
    
  2. Firewall Rules:

    • Ensure your firewall allows traffic on port 80 to reach the Kubernetes nodes. This can be done through specific firewall rules or by opening the necessary ports on your network.
  3. Ingress Resources:

    • Create Ingress resources to define rules for routing traffic to your services. Ensure these resources specify the hostnames and paths that will be used to access your applications.

Important Considerations:

  • Security: If you are configuring port 80, consider implementing security measures like TLS/SSL certificates to secure communication between your applications and the external world.
  • Load Balancing: For higher availability and performance, ensure your load balancer is configured to handle traffic on port 80 and distribute it across the Kubernetes nodes.
  • Monitoring and Logging: Monitor your Ingress controller and services for any issues or performance bottlenecks, and implement logging to help you troubleshoot problems.

Additional Resources:

Conclusion:

Configuring a Kubernetes bare-metal Ingress controller to listen on port 80 is a crucial step for exposing your applications to the outside world. By following the steps outlined above and considering the necessary security and performance factors, you can create a robust and reliable ingress setup for your Kubernetes cluster.