Articles in this section
Category / Section

How to Migrate Bold BI from ingress‑nginx to Traefik on Kubernetes with zero downtime

Published:
Updated:

Migrating Bold BI from ingress-nginx to Traefik (Zero Downtime)


Overview

This article explains how to migrate an existing Bold BI deployment from ingress-nginx to Traefik in a Kubernetes cluster without downtime.
The migration process allows both ingress controllers to run in parallel, ensuring uninterrupted access during the transition.

You can migrate using one of the following methods:

  1. Using kubectl (manual YAML configuration)
  2. Using Helm (chart-based deployment)

1. Prerequisites

Ensure the following requirements are met before starting the migration:

  • A running Kubernetes cluster.
  • Bold BI deployed and accessible using ingress-nginx.
  • DNS access to update the domain A-record.
  • helm and kubectl installed and configured.
  • Sufficient permissions to modify Kubernetes resources.

2. Install Traefik on Kubernetes

Install Traefik alongside ingress-nginx so that both controllers can coexist during the migration process.

2.1 Add the Traefik Helm Repository

Add the official Traefik Helm repository to your local Helm configuration.

helm repo add traefik https://traefik.github.io/charts
helm repo update

image.png

2.2 Install Traefik Using Helm

Deploy Traefik in a dedicated namespace.

helm install traefik traefik/traefik --namespace traefik --create-namespace

image.png

Once installed, verify that the Traefik pods are running:

kubectl get pods -n traefik

Official documentation:
https://doc.traefik.io/traefik/getting-started/


3. Migration Option A: Using kubectl

Use this method if Bold BI was deployed using Kubernetes manifests (non-Helm deployment).

Step 1 — Download traefik.yaml

Download the Traefik IngressRoute YAML file from:

https://raw.githubusercontent.com/boldbi/boldbi-kubernetes/refs/heads/main/deploy/traefik.yaml

Step 2 — Update Domain, TLS, and Namespace

Edit the downloaded YAML file and update the following values:

  • Domain name for all services
  • TLS secret name
  • Namespace (default: bold-services)

image.png

Step 3 — Apply the Traefik Configuration

kubectl apply -f traefik.yaml

image.png

Step 4 — Verify IngressRoute

kubectl get ingressroute -n <your-namespace>

image.png

Ensure the IngressRoute resources are created successfully.

Step 5 — Get Traefik External IP

kubectl get svc -n traefik

image.png

Identify the external IP address assigned to Traefik.

Step 6 — Update DNS

Update your domain’s A-record to point to the Traefik external IP.

Step 7 — Validate the Application

Open the Bold BI base URL in a browser and verify that dashboards and login pages load correctly.

Step 8 — Cleanup Old nginx Ingress (Optional)

After confirming successful access through Traefik, remove the old ingress resources:

kubectl delete ingress bold-ingress bold-etl-ingress -n <your-namespace>

image.png


4. Migration Option B: Using Helm

Use this method if Bold BI was installed using Helm.

Step 1 — Preserve Existing Ingress Resources

Prevent Helm from deleting existing ingress resources during the upgrade:

kubectl annotate ingress bold-ingress helm.sh/resource-policy=keep -n <your-namespace> --overwrite
kubectl annotate ingress bold-etl-ingress helm.sh/resource-policy=keep -n <your-namespace> --overwrite

image.png

Step 2 — Update values.yaml

Modify your values.yaml file to configure Traefik as the load balancer:

loadBalancer:
  type: traefik

image.png

Step 3 — Upgrade Bold BI

Apply the changes by upgrading the Helm release:

helm upgrade boldbi boldbi/boldbi -f <your-values.yaml> -n <your-namespace>

image.png

Step 4 — Verify IngressRoute

kubectl get ingressroute -n <your-namespace>

image.png

Step 5 — Get Traefik External IP

kubectl get svc -n traefik

image.png

Step 6 — Update DNS

Update your domain’s A-record to point to the Traefik external IP.

Step 7 — Validate the Application

Open the Bold BI base URL and confirm that the application is functioning correctly.

Step 8 — Cleanup Old nginx Ingress (Optional)

kubectl delete ingress <ingress-name> -n <your-namespace>

image.png


5. Zero-Downtime Best Practices

Follow these recommendations to ensure a smooth migration:

  • Install Traefik before removing ingress-nginx.
  • Verify IngressRoute resources before updating DNS.
  • Keep both ingress controllers active during the transition.
  • Ensure TLS secrets are correctly configured.
  • Validate application functionality before cleanup.

6. Summary

This guide provides a structured approach to migrate Bold BI from ingress-nginx to Traefik without service interruption.
Both kubectl and Helm-based deployments are supported, allowing flexibility based on your existing setup.


Additional References

  1. https://support.boldbi.com/kb/article/22688/viewing-kubernetes-logs-in-centralized-cloud-logging
  2. https://support.boldbi.com/kb/article/22644/dynatrace-log-integration-for-bold-bi-deployment-on-oke
Was this article useful?
Like
Dislike
Help us improve this page
Please provide feedback or comments
Comments (0)
Access denied
Access denied