Notes from discussion with Nebula team about possible options for the Cluster Loadbalancer.

Overview

The basic requirement is to allow NDS Labs Workbench users to securely access workbench services, which include both HTTP and TCP services. This means implementing TLS for all services. Services run as Pods in Kubernetes. Via Kubernetes network model, each service is assigned a unique IP. Internally, services can run on well-known ports (e.g, 80, 8080, 1247, etc).

Options

We discussed three different solutions for routing traffic from a load balancer to services running in Kiubernetes.

  1. Path: Loadbalancer serves as re-writing proxy.  HTTP requests are in the form labs.nds.org/project/service and routed to the correct Pod by monitoring changes to etcd
  2. Port: Loadbalancer exposes non-HTTP services as ports and routes to the correct Pod by monitoring changes to etcd.
  3. IP Blocks
    1. Nebula team allocates a fixed block of IPs
    2. Each project is assigned an IP address and CNAME (e.g., project.labs.nds.org)

 

Other notes

 

General questions