EasyHAProxy Ingress Controller

Generated on 23 Oct 2026 from the EasyHAProxy Ingress Controller catalog page

EasyHAProxy is a Kubernetes Ingress controller built on HAProxy, the high-performance, battle-tested load balancer and reverse proxy for TCP and HTTP applications. It watches your cluster and configures HAProxy for every standard Ingress automatically, routing HTTP, HTTPS and TCP traffic with no HAProxy configuration to write. It can issue free certificates from Let’s Encrypt or use your own, and plugins add JWT validation, IP allow-lists and Cloudflare support. Installing it creates a DigitalOcean Load Balancer for you: open its address to see a page that guides you to the first Ingress, then add ingressClassName: easyhaproxy to your Ingress resources.

Software Included

Package Version License
haproxy 3.3.17 GPL2

Creating an App using the Control Panel

Click the Deploy to DigitalOcean button to install a Kubernetes 1-Click Application. If you aren’t logged in, this link will prompt you to log in with your DigitalOcean account.

Deploy to DO

Creating an App using the API

In addition to creating EasyHAProxy Ingress Controller using the control panel, you can also use the DigitalOcean API. As an example, to create a 3 node DigitalOcean Kubernetes cluster made up of Basic Droplets in the SFO2 region, you can use the following doctl command. You need to authenticate with doctl with your API access token and replace the $CLUSTER_NAME variable with the chosen name for your cluster in the command below.

doctl kubernetes clusters create --size s-4vcpu-8gb $CLUSTER_NAME --1-clicks easyhaproxy

Getting Started After Deploying EasyHAProxy Ingress Controller

EasyHAProxy creates a DigitalOcean Load Balancer for you. Its address takes a minute or two to appear in the EXTERNAL-IP column:

kubectl get svc -n easyhaproxy easyhaproxy

Open http://<EXTERNAL-IP>. Until you add your first Ingress, EasyHAProxy answers with a page that explains how to add one. Point your domains’ DNS to this address.

Set Up Your Application

Add ingressClassName: easyhaproxy to your application’s Ingress:

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: example-ingress
  namespace: example
spec:
  ingressClassName: easyhaproxy      # <-- here
  rules:
  - host: example.org
    http:
      paths:
      - path: /
        pathType: Prefix
        backend:
          service:
            name: example-service
            port:
              number: 8080

EasyHAProxy picks it up within seconds, and http://example.org reaches your service. A host with no Ingress gets a 404 page.

HTTPS with Let’s Encrypt

Set the e-mail used to register with Let’s Encrypt (it is not set by default):

helm upgrade easyhaproxy byjg/easyhaproxy --namespace easyhaproxy \
  --reset-then-reuse-values --set [email protected]

Then add the annotation easyhaproxy.certbot: "true" to the Ingress. The domain’s DNS must already point to the Load Balancer.

Troubleshooting

Check the pod and its log:

kubectl get pods -n easyhaproxy
kubectl logs -n easyhaproxy -l app.kubernetes.io/name=easyhaproxy --tail=100

An Ingress that EasyHAProxy cannot use is skipped with a warning in the log that names it and gives the reason. The other Ingresses are still routed.

If the pod is not starting, check its events with kubectl describe pod -n easyhaproxy -l app.kubernetes.io/name=easyhaproxy. The stack also needs a 1 Gi block storage volume for the certificates (kubectl get pvc -n easyhaproxy).

To test the routing with a sample site:

helm repo add byjg https://opensource.byjg.com/helm
helm upgrade --install mysite byjg/static-httpserver --namespace default \
  --set "ingress.hosts={www.example.org,example.org}" --set parameters.title=Welcome

Full documentation: opensource.byjg.com.

We can't find any results for your search.

Try using different keywords or simplifying your search terms.