Skip to content

Ingress & Traffic Management#

This guide covers configuring ingress for your Janssen deployment. Choose between the modern Gateway API (recommended) or the legacy Kubernetes Ingress.

The Kubernetes Gateway API provides a more expressive and extensible way to manage traffic.

Install Gateway API CRDs#

If your cluster does not have the Gateway API Custom Resource Definitions:

kubectl apply --server-side -f https://github.com/kubernetes-sigs/gateway-api/releases/download/v1.4.1/standard-install.yaml

Install a Gateway Controller#

You must have a conformant Gateway Controller installed.

Example using Nginx Gateway Fabric:

helm install ngf oci://ghcr.io/nginx/charts/nginx-gateway-fabric --create-namespace -n nginx-gateway

Configure Gateway IP#

Option A: Static IP (Recommended)

Reserve a static public IP with your cloud provider before installation. Add this IP to your override.yaml.

Option B: Dynamic IP

  1. Run initial Helm install without global.lbIp
  2. Wait for the cloud provider to assign an IP:
    kubectl get gateway -n jans
    
  3. Add the IP to global.lbIp in override.yaml
  4. Run helm upgrade to apply

Gateway API Configuration#

Add this to your override.yaml:

global:
  lbIp: ""  # Add your static IP here
  fqdn: demoexample.jans.io  # Your domain
  isFqdnRegistered: true  # Set to false if no registered domain
  gatewayApi:
    enabled: true
  nginx-ingress:
    enabled: false
gatewayApi:
  gatewayClassName: nginx  # Match your controller (nginx, istio, etc.)
  name: jans-gateway
  httpPort: 80
  httpsPort: 443

Option 2: Kubernetes Ingress (Legacy)#

Use this if you prefer the traditional Ingress resource.

Retirement Notice

The upstream ingress-nginx project is in a terminal maintenance window through March 2026 and will receive no further releases, bug fixes, or security updates after that date. Consider migrating to Gateway API (Option 1) or an alternative maintained ingress controller. See the upstream announcement for details.

Install Nginx Ingress Controller#

helm repo add ingress-nginx https://kubernetes.github.io/ingress-nginx
helm repo add stable https://charts.helm.sh/stable
helm repo update
helm install nginx ingress-nginx/ingress-nginx

Get the Load Balancer Address#

For GKE/AKS (IP address):

kubectl get svc nginx-ingress-nginx-controller --output jsonpath='{.status.loadBalancer.ingress[0].ip}'

For EKS (hostname):

kubectl get svc nginx-ingress-nginx-controller --output jsonpath='{.status.loadBalancer.ingress[0].hostname}'

Ingress Configuration#

Choose the configuration that matches your setup:

With a Registered Domain (FQDN)#

For GKE/AKS with a registered domain:

global:
  lbIp: ""  # Add LoadBalancer IP from previous command
  fqdn: demoexample.jans.io  # Your registered domain
  isFqdnRegistered: true
nginx-ingress:
  ingress:
    path: /
    hosts:
      - demoexample.jans.io  # Your domain
    tls:
      - secretName: tls-certificate
        hosts:
          - demoexample.jans.io  # Your domain

For EKS with a registered domain (uses hostname instead of IP):

global:
  fqdn: demoexample.jans.io  # Your registered domain
  isFqdnRegistered: true
config:
  configmap:
    lbAddr: http://YOUR-EKS-HOSTNAME.elb.amazonaws.com  # Add EKS hostname here
nginx-ingress:
  ingress:
    path: /
    hosts:
      - demoexample.jans.io  # Your domain
    tls:
      - secretName: tls-certificate
        hosts:
          - demoexample.jans.io  # Your domain

Without a Registered Domain#

If you don't have a registered domain, use the LoadBalancer address directly:

For GKE/AKS:

global:
  lbIp: ""  # Add LoadBalancer IP from previous command
  isFqdnRegistered: false

For EKS:

config:
  configmap:
    lbAddr: http://YOUR-EKS-HOSTNAME.elb.amazonaws.com  # Add EKS hostname here
global:
  isFqdnRegistered: false

Next Steps#

Proceed to Database Setup to configure persistence storage.