New to Voyager? Please start here.

Scaling Ingress

Replicas

For each Ingress resource, Voyager deploys HAProxy in a Deployment prefixed by voyager- and the name of the Ingress.

This Deployment has .spec.replicas = 1 by default. To change the desired number of replicas, use the ingress.appscode.com/replicas annotation.

apiVersion: voyager.appscode.com/v1beta1
kind: Ingress
metadata:
  name: my-app
  annotations:
    ingress.appscode.com/replicas: '2'
spec:
  backend:
    serviceName: my-app
    servicePort: '80'
$ kubectl get deploy voyager-my-app
NAME               DESIRED   CURRENT   UP-TO-DATE   AVAILABLE   AGE
voyager-my-app     2         2         2            2           1d

Horizontal Pod Autoscaling

Kubernetes has the HorizontalPodAutoscaler object for autoscaling pods.

With Horizontal Pod Autoscaling, Kubernetes automatically scales the number of pods in a replication controller, deployment or replica set based on observed CPU utilization (or, with alpha support, on some other, application-provided metrics).

To set up a HorizontalPodAutoscaler for a Voyager HAPRoxy deployment, you can use the kubectl autoscale command or defining a HorizontalPodAutoscaler resource.

kubectl autoscale deployment voyager-my-app --cpu-percent=20 --min=2 --max=10
apiVersion: autoscaling/v1
kind: HorizontalPodAutoscaler
metadata:
  name: voyager-my-app
  namespace: default
spec:
  scaleTargetRef:
    apiVersion: apps/v1beta1
    kind: Deployment
    name: voyager-my-app
  minReplicas: 2
  maxReplicas: 10
targetCPUUtilizationPercentage: 20%
$ kubectl get hpa
NAME                  REFERENCE                        TARGETS    MINPODS   MAXPODS   REPLICAS   AGE
voyager-my-app        Deployment/voyager-my-app        0% / 20%   2         10        2          1d

Node Autoscaling

If you are using autoscaler to dynamically add and remove nodes, you might be interested in using ingress.appscode.com/node-selector to control which hosts are selected to run HAProxy pods. This is a recommended annotation for HostPort type ingress.

Take your team where it needs to go.

Create your cluster in minutes. Our team is here to help and would be happy to chat with you.