You are looking at the documentation of a prior release. To read the documentation of the latest release, please visit here.


In HostPort type Ingress, HAProxy pods are run via a Kubernetes deployment named voyager-${ingress-name} with hostNetwork: true. A headless Service is also created for the HAProxy pods. To enable this, apply the HostPort annotation on a Ingress object.

How It Works

  • First, install Voyager operator in your cluster following the steps here.

  • Now, deploy test servers using this script script.

curl -fsSL | bash

deployment "nginx" created
service "web" exposed
deployment "echoserver" created
service "rest" exposed
  • Now, create an Ingress object running
kubectl apply -f

Please note the annotaiton on ingress:

  annotations: HostPort
$ kubectl get pods,svc
NAME                                       READY     STATUS    RESTARTS   AGE
po/echoserver-566fcc4fdb-7fth7             1/1       Running   0          6m
po/nginx-d5dc44cf7-m4xcg                   1/1       Running   0          6m
po/voyager-test-ingress-668594cc46-5zswh   1/1       Running   0          4m

NAME                       TYPE        CLUSTER-IP     EXTERNAL-IP   PORT(S)   AGE
svc/kubernetes             ClusterIP      <none>        443/TCP   1h
svc/rest                   ClusterIP   <none>        80/TCP    6m
svc/voyager-test-ingress   ClusterIP   None           <none>        80/TCP    4m
svc/web                    ClusterIP   <none>        80/TCP    6m
  • Now, ssh into the minikube vm and run the following commands from host:
$ minikube ssh

$ curl -vv -H "Host:"
> GET / HTTP/1.1
> Host:
> User-Agent: curl/7.53.0
> Accept: */*
< HTTP/1.1 200 OK
< Server: nginx/1.13.8
< Date: Thu, 28 Dec 2017 04:27:20 GMT
< Content-Type: text/html
< Content-Length: 612
< Last-Modified: Tue, 26 Dec 2017 11:11:22 GMT
< ETag: "5a422e5a-264"
< Accept-Ranges: bytes
<!DOCTYPE html>
<title>Welcome to nginx!</title>
    body {
        width: 35em;
        margin: 0 auto;
        font-family: Tahoma, Verdana, Arial, sans-serif;
<h1>Welcome to nginx!</h1>
<p>If you see this page, the nginx web server is successfully installed and
working. Further configuration is required.</p>

<p>For online documentation and support please refer to
<a href=""></a>.<br/>
Commercial support is available at
<a href=""></a>.</p>

<p><em>Thank you for using nginx.</em></p>
$ curl -vv -H "Host:"
> GET / HTTP/1.1
> Host:
> User-Agent: curl/7.53.0
> Accept: */*
< HTTP/1.1 200 OK
< Server: nginx/1.10.0
< Date: Thu, 28 Dec 2017 04:27:39 GMT
< Content-Type: text/plain
< Transfer-Encoding: chunked
real path=/

server_version=nginx: 1.10.0 - lua: 10001


Now, if you run netstat, you should port 80 is listened on by haproxy.

$ netstat -tuln | grep 80
tcp        0      0    *               LISTEN
tcp        0      0*               LISTEN


Does Voyager configure firewalls for HostPort Ingress?

Voyager operator will configure firewall rules for HostPort Ingress for the following cloud providers: AWS, GCE/GKE .

What IAM permissions are reuired for Voyager operator to configure firewalls for HostPort Ingress in AWS?

  • Master: For aws clusters provisioned via Kops, no additional permission should be needed. Master instances already has ec2:* iam permissions.

  • Nodes: Describe* permissions are applied by default. Additional write permissions need to be applied are:

  "Effect": "Allow",
  "Action": [
  "Resource": "*"