Upgrade BIG-IP Next for Kubernetes (BNK) from 2.3.x to 2.4.0 using F5 Lifecycle Operator

This document describes how to upgrade the F5 Lifecycle Operator (FLO) and upgrade the CNE Instance.

Upgrade the F5 Lifecycle Operator (FLO)

  1. Create or update the FLO values file.

    Example: flo-values_2.4.0.yaml

    global:
      imagePullSecrets:
        - name: far-secret
      certmgr:
        clusterIssuer: arm-ca-cluster-issuer
    
    image:
      repository: repo.f5.com/images
      pullPolicy: IfNotPresent
    
    f5-spk-crds-common:
      versionValidator:
        image:
          repository: repo.f5.com/images
    
    f5-spk-crds-service-proxy:
      versionValidator:
        image:
          repository: repo.f5.com/images
    
    f5-ipam-operator:
      image:
        repository: repo.f5.com/images
        pullPolicy: IfNotPresent
      namespace: "default"
      nameOverride: "f5-ipam-operator"
      fullnameOverride: "f5-ipam-operator"
    sharedComponentNamespace: "f5-utils"
    
  2. Execute the Helm upgrade using the values file.

    $ helm upgrade f5-lifecycle-operator \
    tar/f5-lifecycle-operator-v2.30.0-0.5.2.tgz \ # Need to change FLO to the correct version
    -f arm/tmp/flo-values_2.4.0.yaml
    
  3. Verify the Upgrade.

    $ helm list
    

Apply the CNE Instance

  1. Create the CNE Instance custom resource after the FLO upgrade completes.

    Example: cnegatewayclass-cr-2.4.0.yaml

    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.4.0
      wholeCluster: true
      telemetry:
        loggingSubsystem:
          enabled: true
        metricSubsystem:
          enabled: true
      certificate:
        clusterIssuer: arm-ca-cluster-issuer
      deploymentSize: "Small"
      registry:
        uri: repo.f5.com
        imagePullSecrets:
        - name: far-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
      dpu:
        enabled: true
      storageClassName: nfs
      advanced:
        envDiscovery:
          enabled: true
          stopOnFail: true
          runAfterSuccess: false
          disablecheckgenerics: true
          disablecheckannotations: true
          disablecheckvfs: true
          disablecheckhugepages: true
          disablechecksfconfig: true
          disablecheckserverconfig: true
          disablechecktaints: true
          disablechecklabels: 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"
     
    
  2. Apply the resource:

    $ kubectl apply -f arm/tmp/cnegatewayclass-cr-2.4.0.yaml -n f5-alpha
    

Verify CNE Pods

  1. Verify Pods in f5-utils

    $ kubectl get pods -n f5-utils
    
  2. Verify Pods in f5-alpha

    $ kubectl get pods -n f5-alpha