Showing posts with label ingress. Show all posts
Showing posts with label ingress. Show all posts

Saturday

Kubernetes Ingress

Kubernetes Ingress is an API object that provides HTTP and HTTPS routing to services based on rules. It acts as an entry point for external traffic into the cluster, managing external access to services. Ingress allows you to define how external HTTP/S traffic should be processed and routed to different services within the cluster.

If you want to start with the beginning then you can click here

Key components and concepts of Kubernetes Ingress include:


1. Ingress Resource:

   - An Ingress resource is created to define the rules for how external HTTP/S traffic should be handled.

2. Rules:

   - Rules define how requests should be routed based on the host and path specified in the incoming request.

3. Backend Services:

   - Ingress directs traffic to backend services based on the defined rules.

4. TLS Termination:

   - Ingress can handle TLS termination, allowing you to configure HTTPS for your services.

5. Annotations:

   - Annotations provide additional configuration options, allowing you to customize Ingress behavior.


Example Ingress YAML:


```yaml

apiVersion: networking.k8s.io/v1

kind: Ingress

metadata:

  name: my-ingress

spec:

  rules:

    - host: example.com

      http:

        paths:

          - path: /app

            pathType: Prefix

            backend:

              service:

                name: app-service

                port:

                  number: 80

  tls:

    - hosts:

        - example.com

      secretName: tls-secret

```


In this example:

- Requests to `example.com/app` are directed to the `app-service`.

- TLS termination is configured using the secret `tls-secret` for HTTPS.


Key Benefits:

- Simplifies external access management.

- Allows centralized control of routing rules.

- Supports TLS termination for secure communication.


Kubernetes Ingress controllers (like NGINX Ingress Controller, Traefik, etc.) are responsible for implementing Ingress rules and managing traffic accordingly. The choice of Ingress controller may depend on specific requirements and features needed for your environment.

Kubernetes Ingress is similar to how a reverse proxy like NGINX works, but it operates at the Kubernetes cluster level. 

Ingress in Kubernetes is an API object that defines how external HTTP/S traffic should be processed and routed to different services within the Kubernetes cluster. The Ingress resource itself is just an abstraction. To make it effective, you need an Ingress controller, and NGINX is one of the popular choices for that.


Here's the breakdown:

1. Ingress Resource:

   - Defines the rules for routing external HTTP/S traffic to different services within the Kubernetes cluster.

2. Ingress Controller:

   - Actively watches for changes to Ingress resources.

   - Implements the rules defined in Ingress resources.

   - Manages the actual routing and traffic processing.

3. NGINX Ingress Controller:

   - One of the many available Ingress controllers for Kubernetes.

   - Implements Ingress rules using NGINX as a reverse proxy.

   - Handles the actual HTTP/S traffic based on the defined rules.


So, in a sense, you can think of Kubernetes Ingress working in conjunction with an Ingress controller like NGINX to manage external access and routing within your Kubernetes cluster.