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.
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 easyhaproxyGetting 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.