External access

The Bytewax Platform exposes two services outside the Kubernetes cluster:

  • Dashboard Web App
  • WaxAPI

This documentation shows you how to configure the Bytewax Platform Helm Chart to enable external access to both services.

Common Configuration

This section describes the common configuration of Dashboard and WaxAPI.

External Access through Ingress Controller

If your cluster has configured an Ingress Controller, you should configure this subblock in waxapi and dashboard block:

  ingress:
    enabled: false
    # For Kubernetes >= 1.18 you should specify the ingress-controller via the field ingressClassName
    # See https://kubernetes.io/blog/2020/04/02/improvements-to-the-ingress-api-in-kubernetes-1.18/#specifying-the-class-of-an-ingress
    # ingressClassName: nginx
    annotations: {}
    labels: {}
    hosts:
      - waxapi.yourdomain.com
    annotations:
      kubernetes.io/ingress.class: nginx
      kubernetes.io/tls-acme: "true"
    labels:
      name: value
    tls:
      # Secrets must be manually created in the namespace.
      - secretName: waxapi-tls
        hosts:
          - waxapi.yourdomain.com

External Access through External Load Balancer

In case you need to use a Kubernetes service of type LoadBalancer or NodePort to enable external access, you can configure the subblock service of waxapi and dashboard like this:

LoadBalancer

waxapi:
  service:
    annotations: {}
    labels: {}
    type: LoadBalancer
    # List of IP ranges that are allowed to access the load balancer (if supported)
    loadBalancerSourceRanges: []
    port: 8080

NodePort

  service:
    annotations: {}
    labels: {}
    type: NodePort
    # Specify a specific node port when type is NodePort
    nodePort: 32500
    port: 8080

Depending on the underlying cloud provider, the needed configuration for DNS and SSL will vary.

Commonly, those configurations are set in annotations, which are available to place in the block, as you can see.

Dashboard Exclusive Configuration

The dashboard block has two exclusive fields to configure in its block:

  • apiUrl: stores the URL where WaxAPI is exposed. Following the below example, it will be: https://waxapi.yourdomain.com/
  • baseUrl: stores the URL where the Dashboard itself is exposed. For example: https://dashboard.yourdomain.com/