🎉 Ebbflow has launched! 🎊
Use coupon code LaunchParty to save 25% off of the base price!

Hosting websites with Kubernetes has never been easier. Simply deploy our container alongside yours inside your Pod and set up your Endpoint (i.e. Load Balancer) in the Ebbflow Console, the rest is taken care of.

When users navigate to a website hosted through Ebbflow, they will connect to Ebbflow's servers first and be presented a browser-trusted Let's Encrypt certificate. From there, Ebbflow will proxy the connection to the nearest server or container that is set up to host your website using our client. In this guide, we talk about an integration using Kubernetes, but Ebbflow can be used with other platforms at the same time with no additional configuration.

Ebbflow does not charge per endpoint/load balancer, only pay for access to the platform and the data that you send through the system. You can set up routing to any number of clusters for any number of domain names in any physical location, it doesn't matter to Ebbflow.

How It Works

Running Ebbflow with Kubernetes is very simple, especially compared to other load balancing solutions that integrate with Kubernetes. Ebbflow allows you to avoid ingress controllers, services, cloud-specific load balancer integrations, and paying for the load balancers themselves which cost more than Ebbflow.

As mentioned before, Ebbflow proxies connections through to your servers via the Ebbflow Client. This client will run inside of each pod alongside your container that runs your web server. The client will proxy the connection to your server inside the pod over localhost.

Getting Started

Before setting up Kubernetes, you will create your endpoint in the Ebbflow console. You can follow instructions on doing such from the quickstart guide.

Once your Endpoint is set up centrally, we need to run the client inside of your pod. To do so, we take the client's image and add it as another container inside of our pod. Then we need to configure it. The required changes are

  1. Add the Ebbflow image as another container in your Deployment
    • Image: ebbflow/ebbflow-client-linux-amd64:1.1 (Docker Hub)
  2. Run the Ebbflow image with arguments reflecting your Endpoint's settings
    • (Required) run-blocking The name of the command that runs the proxy
    • (Required) --dns VALUE the DNS entry of your endpoint, e.g. example.com
    • (Required) --port VALUE the port your service runs on, e.g. 80, 1500, 8080
    • (Recommended) --healthcheck-port VALUE The port to complete a simple TCP connect health check to, usually the same port as your service but it can be different
  3. Provide a host key via the EBB_KEY environment variable
    • You first create a key in the console (Console > IAM > Create New host Key). Then you add this secret to your cluster with a command like the following:

      $ kubectl create secret generic ebbkey --from-literal=ebbkey=ebb_hst_asdf1234

Overall, it takes a small amount of time to get the Ebbflow client running inside of your Pod. Each pod is atomic, there are no per-node or per-cluster containers running, just per-pod.

Examples

Here is an example deployment.yaml that shows the configuration required to run an example image which runs on port 8000, note that containerPort is specified so that the container has that port open.

apiVersion: apps/v1
kind: Deployment
metadata:
  name: example
  labels:
    app: example
spec:
  replicas: 1
  selector:
    matchLabels:
      app: example
  template:
    metadata:
      labels:
        app: example
    spec:
      containers:
      - name: example
        image: your/image
        ports:
        - containerPort: 8000
      - name: ebbflow
        image: ebbflow/ebbflow-client-linux-amd64:1.1
        args:
          - run-blocking
          - --dns
          - example.com
          - --port
          - '8000'
          - --healthcheck-port
          - '8000'
        env:
          - name: EBB_KEY
            valueFrom:
              secretKeyRef:
                name: ebbkey
                key: ebbkey
CLI It is easy to install the client on your local development machine to play around with the commands and CLI, just follow your OS specific instructions here. It should take minutes to get your site hosted using a command like sudo ebbflow run-blocking --dns example.com --port 8000.

Live Example A live example of using kubernetes with Ebbflow can be found at toby.pictures. The code for this site is on GitHub and is hosted on Google Cloud's Kubernetes Engine.

Simple Simple Simple

This guide is very short due to the fact that the integration is so simple. Networking with Ebbflow is just that, simple, while providing industry leading technology like multi-cloud reliability, nearest-server routing, health checking, and per-pod routing. It should take only minutes to use Ebbflow to route traffic to your cluster. Presently only Linux amd64 images are provided. If you ever run into trouble with the Ebbflow client, you can reach out to Ebbflow for help by contacting support@ebbflow.io. Some useful links:

  • (link) Container Image on DockerHub
  • (link) Example k8s project using Ebbflow
  • (link) The Client's Code on GitHub
  • (link) Client Documentation
  • (link) Ebbflow Quickstart Guide