Upgrading CNFs from v1.2.1 to v1.3.0

Overview

The Cloud-Native Network Functions (CNFs) can be upgraded using the typical Helm upgrade process.

This document describes how to upgrade CNFs from v1.2.1 to v1.3.0.

Requirements

Ensure you have:

  • Installed the v1.2.1 CNFs CRDs.
  • Installed the v1.2.1 CNFs Cert Manager.
  • Installed the v1.2.1 RabbitMQ Pod.
  • Installed the v1.2.1 CNFs CWC.
  • Installed the v1.2.1 CRD Conversion Pod.
  • Installed the v1.2.1 CNFs Software - f5-dssm.
  • Installed the v1.2.1 Software - f5-toda-fluentd.
  • Installed the v1.2.1 CNFs Software - f5ingress.
  • A workstation with Helm installed.

Procedures

Use the step below to upgrade the CNFs from v1.2.1 to v1.3.0.

  1. Verify the installation STATUS of the CNFs CRDs:

    In this example, the CNFs CRDs are in the default Project.

    helm list -n default
    

    In this example, the release name is f5-cnf-crds.

    NAME          NAMESPACE   REVISION  STATUS     CHART 
    f5-cnf-crds   default     2         deployed   f5-cnf-crds-n6lan-0.145.3-0.2.2.tgz
    
  2. Verify the installation STATUS of the Cert Manager Pods:

    In this example, the Cert Manager Pods are in the cnf-cert-manager Project.

    oc get pods -n cnf-cert-manager
    

    In this example, the f5-cert-manager, f5-cert-manager-cainjector, and f5-cert-manager-webhook Pods STATUS are Running.

    NAME                                          READY   STATUS    
    f5-cert-manager-cainjector-5cfbf4ff75-drmh7   1/1     Running   
    f5-cert-manager-cbfc74b4d-kskjx               1/1     Running   
    f5-cert-manager-webhook-58bf4b7b76-bcn4p      1/1     Running   
    
  3. Verify the installation STATUS of the RabbitMQ Pod:

    In this example, the RabbitMQ Pod is in the cnf-telemetry Project.

    oc get pods -n cnf-telemetry
    

    In this example, the RabbitMQ Pod STATUS is Running.

    NAME                              READY   STATUS      
    f5-rabbit-5688f9c8c7-f7d9d        1/1     Running           
    
  4. Verify the installation STATUS of the CWC Pod:

    In this example, the CWC Pod is in the cnf-telemetry Project.

    oc get pods -n cnf-telemetry
    

    In this example, the CWC Pod STATUS is Running.

    NAME                              READY   STATUS      
    f5-cnf-cwc-94bcd64bd-42xdc        1/1     Running           
    
  5. Verify the installaton STATUS of the CRD Conversion pod:

    In this example, CRD Conversion Pod is installed in the cnf-crdconversion Project.

    oc get pod -n cnf-crdconversion 
    

    In this example, the CRD Conversion Pod STATUS is Running

    NAME                                  READY      STATUS       RESTARTS      AGE
    f5-crd-conversion-8478b9y96-asfd1     1/1        Running      0             30s
    
  6. Verify the installation STATUS of the dSSM Pod:

    In this example, the dSSM Pod is in the cnf-gateway Project.

    oc get pods -n cnf-gateway
    

    In this example, the dSSM Pods STATUS are Running.

    NAME                        READY    STATUS      
    f5-dssm-db-0                3/3      Running   
    f5-dssm-db-1                3/3      Running   
    f5-dssm-db-2                3/3      Running   
    f5-dssm-sentinel-0          3/3      Running   
    f5-dssm-sentinel-1          3/3      Running   
    f5-dssm-sentinel-2          3/3      Running             
    
  7. Verify the installation STATUS of the f5-toda-fluentd Pod:

    In this example, the f5-toda-fluentd Pod is in the cnf-gateway Project.

    oc get pods -n cnf-gateway
    

    In this example, the f5-toda-fluentd Pod STATUS is Running.

    NAME                                  READY   STATUS      
    f5-toda-fluentd-8cf96967b-jxckr       1/1     Running           
    
  8. Verify the installation STATUS of the f5-ingress Pod:

    In this example, the f5-ingress Pod is in the cnf-gateway Project.

    oc get pods -n cnf-gateway 
    

    In this example, all containers have a STATUS of Running.

    NAME                                    READY   STATUS    RESTARTS    AGE
    f5-afm-797d564479-zwlzw                 2/2     Running   0           2m44s 
    f5-downloader-69474bd866-7j7fv          2/2     Running   0           2m44s
    f5-dssm-db-0                            3/3     Running   0           4m52s
    f5-dssm-db-1                            3/3     Running   0           4m11s
    f5-dssm-db-2                            3/3     Running   0           3m37s
    f5-dssm-sentinel-0                      3/3     Running   0           4m52s
    f5-dssm-sentinel-1                      3/3     Running   0           4m4s
    f5-dssm-sentinel-2                      3/3     Running   0           3m30s
    f5-ipsd-846cb4db8c-pfhqv                2/2     Running   0           2m44s
    f5-tmm-6fc7f98774-b8cxh                 7/7     Running   0           2m44s
    f5-tmm-6fc7f98774-zl4gh                 7/7     Running   0           2m44s
    f5-toda-fluentd-69444c854-zrglf         1/1     Running   0           5m
    f5ingress-f5ingress-79ff4b7c99-hl8qd    5/5     Running   0           2m44s
    otel-collector-7778f8647b-9cnzb         1/1     Running   0           2m44s
    
  9. After bringing up the setup, apply the required protocol CRs to run the traffic.

  10. Upgrade CNF CRDs using newer version Helm chart of CNFs v1.3.0

    helm upgrade <release> tar/<helm-chart>.tgz -n <namespace> 
    

    In this example, the Helm chart new version of CNFs v1.3.0 is 0.161.0-0.1.2..

    helm upgrade f5crds tar/f5-cnf-crds-n6lan-0.161.0-0.1.2.tgz -n default 
    
  11. Upgrade the Cert Manager Pod using the newer version Helm chart of CNFs v1.3.0:

    helm upgrade <release> tar/<helm-chart>.tgz -n <namespace> -f <values>.yaml
    

    In this example, the Helm chart new version of CNFs v1.3.0 is 0.22.22-0.0.2.

    helm upgrade f5-certificate-manager tar/f5-cert-manager-0.22.22-0.0.2.tgz -n cnf-cert-manager -f cm_overrides.yaml
    
  12. Upgrade the RabbitMQ Pod using the newer version Helm chart of CNFs v1.3.0.

    helm upgrade <release> tar/<helm-chart>.tgz -n <namespace> -f <values>.yaml
    

    In this example, the Helm chart new version of CNFs v1.3.0 is 0.2.8-0.0.2.

    helm upgrade cnf-rabbit tar/rabbitmq-0.2.8-0.0.2.tgz -n cnf-telemetry -f rabbitmq_overrides.yaml
    
  13. Upgrade the CWC Pod using the newer version Helm chart of CNFs v1.3.0.

    helm upgrade <release> tar/<helm-chart>.tgz -n <namespace> -f <values>.yaml
    

    In this example, the Helm chart new version of CNFs v1.3.0 is 0.14.15-0.0.6

    helm upgrade cnf-cwc tar/cwc-0.14.15-0.0.6.tgz -n cnf-telemetry -f cwc_overrides.yaml
    
  14. Upgrade the CRD Conversion Pod using the newer version Helm chart of CNFs v1.3.0.

    helm upgrade <release> tar/<helm-chart>.tgz -n <namespace> -f <values>.yaml
    

    In this example, the Helm chart new version of CNFs v1.3.0 is 0.9.4-0.0.3

    helm upgrade f5-crd-conversion tar/f5-crdconversion-0.9.4-0.0.3.tgz -n cnf-crdconversion -f crd-conversion-values.yaml
    
  15. Upgrade the dSSM Pod using the newer version Helm chart of CNFs v1.3.0:

    helm upgrade <release> tar/<helm-chart>.tgz -n <namespace> -f <values>.yaml
    

    In this example, the Helm chart new version of CNFs v1.3.0 is 0.67.7-0.0.1.

    helm upgrade f5-dssm tar/f5-dssm-0.67.7-0.0.1.tgz -n cnf-gateway -f dssm-values.yaml
    
  16. Upgrade the f5-toda-fluentd Pod using the newer version Helm chart of CNFs v1.3.0:

    helm upgrade <release> tar/<helm-chart>.tgz -n <namespace> -f <values>.yaml
    

    In this example, the Helm chart new version of CNFs v1.3.0 is 1.23.36.

    helm upgrade f5-fluentd tar/f5-toda-fluentd-1.23.36.tgz -n cnf-gateway -f fluentd-values.yaml
    
  17. Upgrade the f5ingress Pod using the newer version Helm chart of CNFs v1.3.0:

    helm upgrade <release> tar/<helm-chart>.tgz -n <namespace> -f <values>.yaml
    

    In this example, the Helm chart new version of CNFs v1.3.0 is v0.480.0-0.1.30.

    helm upgrade f5ingress tar/f5ingress-v0.480.0-0.1.30.tgz -n cnf-gateway -f f5ingress_overrides.yaml
    

Now, the CNFs is upgraded from v1.2.1 to v1.3.0.

CNFs Upgrade or Downgrade Support - Best Practices

Upgrade

This section describes the procedure to upgrade the CNFs from an older version to a new version while ensuring least possible disruptions. This approach can also be followed to perform the CNFs downgrade as well.

Note: Do not upgrade CRDs in first pass until the upgraded deployment is stable.

Sample scenario:

Upgrade from CNFs version 1.2.1 to 1.3.0 and downgrade if the upgrade fails.

  1. Do a helm upgrade from version 1.2.1 to 1.3.0 (do not perform the CRD bundle upgrade). Since it is an upgrade from 1.2.1 to 1.3.0 version, all the CRs will be compatible with 1.2.1 version and the upgrade will be successful even without the CRD bundle.

    Sample command:

    Upgrade only f5ingress 1.3.0

    helm upgrade <deployment-name> <1.3.x tarball-path> -f  <values.yaml>

    Example:

    In the following example, the Helm chart new version of CNFs v1.3.0 is 0.161.0-0.1.2.

    helm upgrade f5ingress tar/f5ingress-v0.480.0-0.1.30.tgz -n cnf-gateway -f f5ingress_overrides.yaml.

  2. If any issue occurs during the upgrade as the CRD bundle is not updated, you can always downgrade to a lower version again without any issues.

    Sample command:

    Upgrade to f5ingress 1.2.1

    helm upgrade <deployment-name> <1.2.x tarball path> -f  <values.yaml>

    Example:

    In the following example, the Helm chart new version of CNFs v1.2.1 is 0.434.1-0.2.19.

    helm upgrade f5ingress tar/f5ingress-0.434.1-0.2.19.tgz -n cnf-gateway -f f5ingress_overrides.yaml

  3. If the upgrade is successful, and the admin is satisfied with the traffic statistics, then the admin can apply the CRD bundle update explicitly after some time and start using the new CRs.

    Sample command:

    Upgrade CRDs to 1.3.0

    Helm upgrade <crd-deployment name> <1.3.0 crd-tarball path>

    Example:

    In the following example the Helm chart new version of CNFs v1.3.0 is 0.161.0-0.1.2..

    helm upgrade f5crds tar/f5-cnf-crds-n6lan-0.161.0-0.1.2.tgz -n default

  4. The above three steps will catch most of the common upgrade issues and are least disruptive.

  5. Once the upgrade is successful and the admin has applied the CRD bundle, in such a case, you have to delete all the F5 CRDs before performing a downgrade. This is similar to a fresh install and there is no workaround available as of now to avoid deleting the F5 CRDs.

Downgrade

Prerequisites:

Delete all the installed F5 CRs and CRDs on the cluster manually.

Sample command:

kubectl get crds -oname | grep f5-big  | xargs kubectl delete

Feedback

Provide feedback to improve this document by emailing cnfdocs@f5.com.

Supplemental