Upgrade BIG-IP Next for Kubernetes (Host) from 2.2.1 to 2.2.2 using F5 Lifecycle Operator

Introduction

The following instructions provides the step-by-step procedure to upgrade BNK (Host) from v2.2.1 to v2.2.2. Follow the steps in sequence to ensure a smooth, successful upgrade. Please review the Release notes to understand new features, fixes, and any potential impacts.

Note

You can upgrade using F5 Lifecycle Operator (FLO) only if the 2.2.1 was installed using FLO.

Prereqisites

Make sure the system is using BNK (Host) 2.2.1.

Upgrade to 2.2.1 using FLO

  1. In a terminal window on your computer, make sure you’re in the release-manifest directory.

  2. Upgrade the FLO to the 2.2.2 version.

$ helm upgrade f5-lifecycle-operator tar/<f5LifecycleOperatorVersion> \
     --namespace default \
     --values flo-values.yaml 

example

$ helm upgrade f5-lifecycle-operator tar/f5-lifecycle-operator-v2.9.27-0.3.4.tgz \
     --namespace default \
     --values flo-values.yaml 

output

Helm upgrade successful for f5-lifecycle-operator.
Release "f5-lifecycle-operator" has been upgraded. Happy Helming!
NAME: f5-lifecycle-operator
LAST DEPLOYED: Thu Feb 26 13:08:14 2026
NAMESPACE: default
STATUS: deployed
REVISION: 2
TEST SUITE: None
  1. Create the CNEInstance CR file (cneinstance-cr.yaml) for the 2.2.2 manifest version. For example,

apiVersion: k8s.f5.com/v1
kind: CNEInstance
metadata:
  labels:
    app.kubernetes.io/name: f5-lifecycle-operator
    app.kubernetes.io/managed-by: kustomize
  name: "f5-alpha-f5-cne-controller"
  namespace: f5-alpha
spec:
  product:
    gatewayAPI: true
    type: BNK
  manifestVersion: 2.2.1-3.2226.0-0.0.511 # Use the manifest version of the new release to which you are upgrading.
  wholeCluster: true
  dpu:
    enabled: true
  telemetry:
    loggingSubsystem:
      enabled: true
    metricSubsystem:
      enabled: true
  certificate:
    clusterIssuer: arm-ca-cluster-issuer
  deploymentSize: "Small"
  registry:
    uri: repo.f5.com
    imagePullSecrets:
    - name: far-pull-secret
    imagePullPolicy: Always
  networkAttachments:
  - external-nad-sf
  - internal-nad-sf
  dynamicRouting:
    enabled: true
  # AFM
  firewallACL:
    enabled: true
  pseudoCNI:
    enabled: true
  # Core dump files
  coreCollection:
    enabled: true
  advanced:
    envDiscovery:
      enabled: true
      stopOnFail: true
      runAfterSuccess: true
    cneController:
      env:
      - name: "TMM_DEFAULT_MTU"
        value: "9000"
    demoMode:
      enabled: false
    maintenanceMode:
      enabled: false
    tmm:
      env:
      - name: "TMM_CALICO_ROUTER"
        value: "default"
      - name: TMM_DEFAULT_MTU
        value: "9000"
      - name: "ZEBOS_STATE"
        value: legacy
    pseudoCNI:
      env:
      - name: "EXCLUDE_CIDR"
        value: "10.19.1.80/16,bb10::19:1:80/96"
      

Note: While upgrading BNK (Host) from 2.2.1 to 2.2.2 using FLO, the DSSM upgrade hook pod gets stuck in a container-creating state, preventing the DSSM pods from upgrading successfully. To mitigate this issue, before the upgrade:

  • Create a file named dssm-upgrade-cm.yaml containing the configuration for the ConfigMap in the lower version prior to performing the upgrade.

apiVersion: v1
kind: ConfigMap
metadata:
  name: f5-dssm-logs-config
  namespace: f5-alpha
data:
  .minlevel.yaml: |
  • Apply the following dssm-upgrade-cm.yaml cm.yaml in the same namespace where the DSSM pods are deployed.

$ kubectl apply -f dssm-upgrade-cm.yaml -n <dssm pods installed name space>
  1. Apply the CNEInstance CR file (cneinstance-cr.yaml), the custom resource for BNK (Host).

$ kubectl apply -f <cneInstanceFilename> - n namespace 

example

$ kubectl apply -f <cneinstance-cr.yaml> - n f5-alpha  
  1. Validate the deployment.

$ kubectl get -f <cneInstanceFilename> - n namespace 

example

$ kubectl get -f <cneinstance-cr.yaml> - n f5-alpha  

Note

Verify if all the components are available in the CNE Instance CR status.