Skip to content

Switch to F5 Ingress from ingress-nginx

This page outlines the process for migrating from the legacy ingress-nginx controller to the F5 NGINX Ingress Controller within kdb Insights Enterprise deployments.

As ingress-nginx is being retired, migrating to the F5 NGINX Ingress Controller is strongly recommended starting from version 1.18.3. Beginning with 1.19.0, F5 NGINX will be the default ingress controller for all new installations and is the preferred solution going forward.

Install the F5 NGINX Ingress Controller

The process for installing the F5 NGINX Ingress Controller will depend on how you have deployed your cluster.

F5 NGINX on 1.18

If you switched to F5 ingress, then future upgrades must be to 1.18.3 or later. 1.18.0, 1.18.1 and 1.18.2 do not support F5 ingress.

  • KX Terraform Scripts

  • Azure Marketplace

    Note

    The Azure Marketplace docs include steps to install the F5 NGINX Ingress Controller, upgrade kdb Insights Enterprise and remove the Legacy Ingress Controller. Once completed no further action is required.

kdb Insights migration steps

The migration procedure is driven by your installation configuration within your values file, which you can retrieve and use alongside the kxi-cli.

  1. Add to the base config file $INSTALL_CONFIG_FILE with the recommended settings for the F5 NGINX Ingress Controller:

    global:
        ingress:
            class: nginx-community
            controllerType: f5-nginx
    

    Default ingress controller behavior

    If ingress.class and controllerType are not set within the values file, then the old ingress-nginx is installed.

  2. insights-on-k8s must be updated to the latest version. If you are using the --insights-on-k8s-version you must update the version to the latest or remove the flag.

  3. Run the following command, which steps through the upgrade, prompting you as required.

    kxi install upgrade --filepath $INSTALL_CONFIG_FILE --version $INSIGHTS_VERSION --skip-packages
    

    The output should look similar to the following:

    running nginx-f5 encryption in flight task
    Deploying task encryption-in-flight-f5 deploy
    Task action: [JobStart        ]
    
    ...
    running nginx-f5 config task
    Deploying task ingress-mgmt-f5 configure-nginx-f5
    Task action: [JobStart        ]
    ...
    Upgrade to version x.x complete
    ...
    
  4. Validate the new ingress class is deployed.

    kubectl get ingress
    NAME                          CLASS             ...
    insights-api-gateway          nginx-community   ...
    insights-api-gateway-minion   nginx-community   ...
    
  5. Update DNS to point to F5 NGINX Ingress Loadbalancer/IP.

Once upgraded, your ingress will point to the F5 NGINX Ingress Loadbalancer/IP.

To access the kdb Insights Enterprise Web Interface, you need to update your DNS Record following the DNS setup instructions.

Monitoring Stack migration steps

If you have deployed the Monitoring Stack into your cluster and have an ingress for Grafana then this must also be migrated to the F5 NGINX Ingress Controller using the steps below.

Prerequisites

Before beginning the migration, ensure that:

  • helm and yq (version v4.45.1 or above) utilities are installed
  • You have sufficient cluster permissions to create namespaces, deploy resources, and upgrade deploys using helm
  • Your current monitoring installation uses ingress-nginx as the ingress controller

Migration Steps

Firstly, add the prometheus-community helm repository to your helm repositories:

helm repo add prometheus-community https://prometheus-community.github.io/helm-charts
helm repo update
  1. Create the base configuration file kx-prom-f5-overlay.yaml with the settings for the F5 NGINX Ingress Controller:

    grafana:
      ingress:
        annotations:
          nginx.org/location-snippets: ""
          nginx.org/mergeable-ingress-type: minion
          nginx.org/proxy-read-timeout: 900s
        ingressClassName: nginx-community
    
  2. Extract and preserve the configuration from your existing ingress-nginx based Prometheus deployment

    helm get values -n monitoring kx-prom -o yaml > kx-prom.yaml
    
  3. Helm upgrade your Prometheus deployment with your F5 overlay values

    helm upgrade -n monitoring kx-prom prometheus-community/kube-prometheus-stack -f kx-prom.yaml -f kx-prom-f5-overlay.yaml
    
  4. Check your kx-prom-grafana ingress now points to your F5 NGINX Ingress LoadBalancer or IP and its Ingress Class is now nginx-community

    kubectl get ingress -n monitoring
    

Remove the Legacy Ingress Controller

Note

Remove the Legacy Ingress Controller only when all kdb Insights Enterprise installations across the cluster have been successfully upgraded and traffic is flowing through the new F5 NGINX Ingress Controller.

The process for removing the Legacy Ingress Controller depends on how you have deployed your cluster.

  • KX Terraform Scripts: To remove the legacy Ingress Controller follow the steps here

  • Azure Marketplace: The legacy Ingress Controller removal should already be complete as part of the switchover guide here