# Deploying HAProxy Ingress Controller If you don't have a Kubernetes cluster, please refer to [setup](/docs/dev/setup.md) for instructions on how to create a new one. ## Prerequisites This ingress controller doesn't yet have support for [ingress classes](/examples/PREREQUISITES.md#ingress-class). You MUST turn down any existing ingress controllers before running HAProxy Ingress controller or they will fight for Ingresses. This includes any cloudprovider controller. This document has also the following prerequisites: * Deploy a [web app](/examples/PREREQUISITES.md#test-http-service) for testing * Create a [TLS secret](/examples/PREREQUISITES.md#tls-certificates) named `tls-secret` to be used as default TLS certificate The web app can be created as follow: ```console $ kubectl run http-svc \ --image=gcr.io/google_containers/echoserver:1.3 \ --port=8080 \ --replicas=2 \ --expose ``` Creating the TLS secret: ```console $ openssl req \ -x509 -newkey rsa:2048 -nodes -days 365 \ -keyout tls.key -out tls.crt -subj '/CN=localhost' $ kubectl create secret tls tls-secret --cert=tls.crt --key=tls.key $ rm -v tls.crt tls.key ``` ## Default backend Deploy a default backend used to serve `404 Not Found` pages: ```console $ kubectl run ingress-default-backend \ --image=gcr.io/google_containers/defaultbackend:1.0 \ --port=8080 \ --limits=cpu=10m,memory=20Mi \ --expose ``` Check if the default backend is up and running: ```console $ kubectl get pod NAME READY STATUS RESTARTS AGE ingress-default-backend-1110790216-gqr61 1/1 Running 0 10s ``` ## Controller Deploy HAProxy Ingress: ```console $ kubectl create -f haproxy-ingress.yaml ``` Check if the controller was successfully deployed: ```console $ kubectl get pod -w NAME READY STATUS RESTARTS AGE haproxy-ingress-2556761959-tv20k 1/1 Running 0 12s ingress-default-backend-1110790216-gqr61 1/1 Running 0 3m ^C ``` Deploy the ingress resource of our already deployed web app: ```console $ kubectl create -f - <