Kubernetes (Generic)

This section shows you how to install the HAProxy Kubernetes Ingress Controller into your Kubernetes cluster.

Pre-installation checklist

  • A running Kubernetes cluster
  • The helm command-line tool
  • The kubectl command-line tool


Choose one of the following installation methods:

Install with Helm

  1. Add the HAProxy Technologies Helm repository:

    $ helm repo add haproxytech https://haproxytech.github.io/helm-charts
  2. Update your list of charts:

    $ helm repo update
  3. Install the latest version of the ingress controller:

    $ helm install kubernetes-ingress haproxytech/kubernetes-ingress

Install a Specific Version

  1. You can use helm search repo with the --versions flag to list all of the available versions of the Helm chart:

    $ helm search repo haproxy --versions
      NAME                            CHART VERSION  APP VERSION  DESCRIPTION
      haproxytech/kubernetes-ingress  1.4.2          1.4.5        A Helm chart for HAProxy Kubernetes Ingress Con...
      haproxytech/kubernetes-ingress  1.2.0          1.4.4        A Helm chart for HAProxy Kubernetes Ingress Con...
  2. Then, use a specific version when you call helm install:

    $ helm install kubernetes-ingress haproxytech/kubernetes-ingress \
      --version 1.4.4

Install with kubectl

  1. Use the kubectl apply command to deploy the controller:

    $ kubectl apply -f https://raw.githubusercontent.com/haproxytech/kubernetes-ingress/v1.5/deploy/haproxy-ingress.yaml
    You can also download the YAML file and modify it for your needs before you apply it (such as changing the namespace in which the controller runs and/or its exposed ports).

Check your installation

Verify that the controller is installed into your Kubernetes cluster by using the command kubectl get pods -A:

$ kubectl get pods -A

  NAMESPACE   NAME                                                  READY   STATUS    RESTARTS   AGE
  default     kubernetes-ingress-7dd4cc4b-x5fkv                     1/1     Running   0          1m
  default     kubernetes-ingress-default-backend-5579b8796c-dkk4v   1/1     Running   0          1m

Call kubectl get svc -A to see which ports were mapped. In this example, port 32063 forwards to port 80 on the ingress controller.

$ kubectl get svc -A

default  kubernetes-ingress  NodePort  <none>  80:32063/TCP,443:30286/TCP,1024:32290/TCP  26m

Next up