README.md

June 24, 2026 ยท View on GitHub

Shows a black logo in light color mode and a white one in dark color mode.
Ingress Module

Release License Slack

Ingress Module provides Ingress Controllers to expose services and TLS certificate management solutions for SIGHUP Distribution (SD).

If you are new to SD please refer to the official documentation on how to get started with SD.

Overview

Ingress Module uses CNCF recommended, Cloud Native projects, such as Ingress NGINX and HAProxy Ingress Controller as URL path-based routing reverse proxies and load balancers, and cert-manager to automate the issuing and renewal of TLS certificates from various issuing sources.

The module also includes additional tools like Forecastle, a web-based global directory of all the services offered by your cluster, and ExternalDNS to manage DNS records natively from Kubernetes.

Architecture

The reference architecture used to deploy the Ingress Module is shown below:

flowchart LR
    User([End users])
    LB[Load Balancer]
    subgraph cluster[Kubernetes Cluster]
        direction LR
        IC[Ingress Controller]
        SVC[Service]
        P1[Pod 1]
        P2[Pod 2]
        P3[Pod 3]
        IC --> SVC
        SVC --> P1
        SVC --> P2
        SVC --> P3
    end
    User --> LB
    LB --> IC
  • The traffic from end users arrives first at a Load Balancer that distributes the traffic between the available Ingress Controllers (usually, one for each availability zone).
  • Once the traffic reaches the Ingress Controller, the Ingress proxies the traffic to the Kubernetes service based on the URL path of the request.
  • The service is a Kubernetes abstraction that makes the traffic arrive at the pods where the actual application is running, usually using iptables rules.

For more information, please refer to the Kubernetes Ingress official documentation.

Packages

The following packages are included in Ingress Module:

PackageVersionDescription
nginxv1.15.5-chainguardThe NGINX Ingress Controller for Kubernetes provides delivery services for Kubernetes applications.
dual-nginxv1.15.5-chainguardDeploys two identical NGINX ingress controllers but with two different scopes: public/external and private/internal.
cert-managerv1.20.2cert-manager is a Kubernetes add-on to automate the management and issuance of TLS certificates from various issuing sources.
external-dnsv0.21.0external-dns allows you to manage DNS records natively from Kubernetes.
haproxyv3.2.8The HAProxy Ingress Controller for Kubernetes, supporting single and dual deployment modes.
forecastlev1.0.159Forecastle gives you access to a control panel where you can see your ingresses and access them on Kubernetes.
aws-cert-manager-Terraform module for managing IAM permissions on AWS for cert-manager.
aws-external-dns-Terraform module for managing IAM permissions on AWS for external-dns.

Click on each package to see its full documentation.

Compatibility

Kubernetes VersionCompatibilityNotes
1.32.x:white_check_mark:No known issues
1.33.x:white_check_mark:No known issues
1.34.x:white_check_mark:No known issues
1.35.x:white_check_mark:No known issues

Check the compatibility matrix for additional information about previous releases of the module.

Usage

Ingress Module is part of SIGHUP Distribution (SD) and is deployed automatically by furyctl when you create or update a cluster. You don't need to download, vendor or install its packages manually.

Configuration

You configure the module under spec.distribution.modules.ingress in your furyctl.yaml. You set the baseDomain and choose the ingress controller via nginx.type (or haproxy.type): single, dual, or none to disable it. The other fields are optional and fall back to sensible defaults.

apiVersion: kfd.sighup.io/v1alpha2
kind: KFDDistribution
spec:
  distribution:
    modules:
      ingress:
        baseDomain: example.dev
        nginx:
          type: dual
          tls:
            provider: certManager
        certManager:
          clusterIssuer:
            name: letsencrypt
            email: example@sighup.io
            type: http01
        forecastle: {}

To use HAProxy as the ingress controller instead of NGINX, configure the haproxy block (and set nginx.type: none):

apiVersion: kfd.sighup.io/v1alpha2
kind: KFDDistribution
spec:
  distribution:
    modules:
      ingress:
        baseDomain: example.dev
        nginx:
          type: none
        haproxy:
          type: dual
          tls:
            provider: certManager
        certManager:
          clusterIssuer:
            name: letsencrypt
            email: example@sighup.io
            type: http01
        forecastle: {}

See the configuration reference for your cluster kind for the full list of available options: EKSCluster, KFDDistribution or OnPremises.

To install SD from scratch, follow the Getting started guide.

Contributing

Before contributing, please read first the Contributing Guidelines.

Reporting Issues

In case you experience any problem with the module, please open a new issue.

License

This module is open-source and it's released under the following LICENSE.