CNFs Installer

Overview

The f5nxtctl BIGIP Next Control command line tool is used to:

  1. Abstract and automate the installation of f5 components such as Cert Manager, CWC etc.
  2. Ease license verification by automating generation of north bound certificates and abstracting curl commands used for verification.

This document guides you through installing and verifying the f5-specific components and services in demo and production environments.

Requirements

Ensure you have:

  • A Linux based workstation with Helm installed.
  • Connected to cluster.

Install f5nxtctl

Use these steps to install the f5nxtctl.

  1. Change into directory with the CNFs Software files, and list the files in the tar directory:

    In this example, the CNFs files are in the cnfinstall directory.

    cd cnfinstall
    
    ls -1 tar
    

    This procedure requires the f5nxtctl-0.1.19.tgz file.

    cnf-docker-images.tgz
    core-file-manager-0.0.8.tgz
    csrc-0.5.2-0.0.2.tgz
    cwc-0.14.15-0.0.8.tgz
    f5-cert-gen-0.9.2.tgz
    f5-cert-manager-0.22.22-0.0.4.tgz
    f5-crdconversion-0.9.4-0.0.3.tgz
    f5-dssm-0.67.7-0.0.4.tgz
    f5-toda-fluentd-1.23.36-0.0.1.tgz
    f5ingress-v0.480.0-0.1.52.tgz
    f5nxtctl-0.1.19.tgz
    rabbitmq-0.2.8-0.0.3.tgz
    
  2. Copy f5nxtctl software image TAR file to /home/[user]/workspace/:

    mkdir workspace
    cp f5nxtctl-0.1.19.tgz workspace/
    
  3. Extract the f5nxtctl software image TAR file:

    tar xvf f5nxtctl-0.1.19.tgz
    
    f5nxtctl/
    f5nxtctl/log/
    f5nxtctl/deploy-order.yaml
    f5nxtctl/tmpl/
    f5nxtctl/tmpl/resources/
    f5nxtctl/tmpl/resources/pod.f5-tools/
    f5nxtctl/tmpl/resources/pod.f5-tools/f5tools.tmpl
    f5nxtctl/tmpl/resources/pod.f5-tools/deploy.tmpl
    f5nxtctl/tmpl/resources/pod.f5-tools/cfg.tmpl
    f5nxtctl/tmpl/resources/crd.f5-common/
    f5nxtctl/tmpl/resources/crd.f5-common/deploy.tmpl
    f5nxtctl/tmpl/resources/crd.f5-common/cfg.tmpl
    f5nxtctl/tmpl/resources/ns.f5-utils/
    f5nxtctl/tmpl/resources/ns.f5-utils/deploy.tmpl
    f5nxtctl/tmpl/resources/ns.f5-utils/cfg.tmpl
    f5nxtctl/tmpl/resources/pod.f5-cert-manager/
    f5nxtctl/tmpl/resources/pod.f5-cert-manager/cert_values.tmpl
    f5nxtctl/tmpl/resources/pod.f5-cert-manager/deploy.tmpl
    f5nxtctl/tmpl/resources/pod.f5-cert-manager/cfg.tmpl
    f5nxtctl/tmpl/resources/crd.f5-product/
    f5nxtctl/tmpl/resources/crd.f5-product/deploy.tmpl
    f5nxtctl/tmpl/resources/crd.f5-product/cfg.tmpl
    f5nxtctl/tmpl/resources/ns.f5-controller/
    f5nxtctl/tmpl/resources/ns.f5-controller/deploy.tmpl
    f5nxtctl/tmpl/resources/ns.f5-controller/cfg.tmpl
    f5nxtctl/tmpl/resources/pod.f5-dssm/
    f5nxtctl/tmpl/resources/pod.f5-dssm/dssm_values.tmpl
    f5nxtctl/tmpl/resources/pod.f5-dssm/deploy.tmpl
    f5nxtctl/tmpl/resources/pod.f5-dssm/cfg.tmpl
    f5nxtctl/tmpl/resources/ns.f5-tools/
    f5nxtctl/tmpl/resources/ns.f5-tools/deploy.tmpl
    f5nxtctl/tmpl/resources/ns.f5-tools/cfg.tmpl
    f5nxtctl/tmpl/resources/pod.f5-cwc/
    f5nxtctl/tmpl/resources/pod.f5-cwc/production-cpcl-key.tmpl
    f5nxtctl/tmpl/resources/pod.f5-cwc/gen_api_srvr_certs.sh
    f5nxtctl/tmpl/resources/pod.f5-cwc/cwc_values.tmpl
    f5nxtctl/tmpl/resources/pod.f5-cwc/deploy.tmpl
    f5nxtctl/tmpl/resources/pod.f5-cwc/cpcl-key.yaml
    f5nxtctl/tmpl/resources/pod.f5-cwc/cfg.tmpl
    f5nxtctl/tmpl/resources/pod.f5-cwc/test-cpcl-key.tmpl
    f5nxtctl/tmpl/resources/none.general/
    f5nxtctl/tmpl/resources/none.general/cfg.tmpl
    f5nxtctl/tmpl/resources/pod.f5-rabbitmq/
    f5nxtctl/tmpl/resources/pod.f5-rabbitmq/deploy.tmpl
    f5nxtctl/tmpl/resources/pod.f5-rabbitmq/cfg.tmpl
    f5nxtctl/tmpl/resources/pod.f5-rabbitmq/rabbitmq_values.tmpl
    f5nxtctl/tmpl/resources/pod.f5-crd-conversion/
    f5nxtctl/tmpl/resources/pod.f5-crd-conversion/crdconversion_values.tmpl
    f5nxtctl/tmpl/resources/pod.f5-crd-conversion/deploy.tmpl
    f5nxtctl/tmpl/resources/pod.f5-crd-conversion/cfg.tmpl
    f5nxtctl/tmpl/resources/deploy.f5-controller/
    f5nxtctl/tmpl/resources/deploy.f5-controller/macvlan-bridge-netdev.tmpl
    f5nxtctl/tmpl/resources/deploy.f5-controller/cnf-vlan.tmpl
    f5nxtctl/tmpl/resources/deploy.f5-controller/ocp_f5controller_values.tmpl
    f5nxtctl/tmpl/resources/deploy.f5-controller/macvlan-passthru-netdev.tmpl
    f5nxtctl/tmpl/resources/deploy.f5-controller/robin_f5controller_values.tmpl
    f5nxtctl/tmpl/resources/deploy.f5-controller/deploy.tmpl
    f5nxtctl/tmpl/resources/deploy.f5-controller/cfg.tmpl
    f5nxtctl/tmpl/resources/deploy.f5-controller/sriov-netdev.tmpl
    f5nxtctl/tmpl/resources/deploy.f5-controller/k8s_f5controller_values.tmpl
    f5nxtctl/tmpl/resources/deploy.f5-controller/spk-vlan.tmpl
    f5nxtctl/tmpl/resources/pod.f5-fluentd/
    f5nxtctl/tmpl/resources/pod.f5-fluentd/fluentd_values.tmpl
    f5nxtctl/tmpl/resources/pod.f5-fluentd/deploy.tmpl
    f5nxtctl/tmpl/resources/pod.f5-fluentd/cfg.tmpl
    f5nxtctl/tmpl/help-strings.yaml
    f5nxtctl/bin/
    f5nxtctl/bin/f5nxtctl
    f5nxtctl/bin/mac-f5nxtctl
    

Running f5nxtctl

To run f5nxtctl tool, you need the f5nxtctl installation directory path to execute commands.

Set environment variables

Set F5NXTDIR end KUBECONFIG environment variable.

export KUBECONFIG=<path to kube config file>[default values is ~/.kube/config]
export F5NXTDIR=$(pwd)/workspace/f5nxtctl
export PATH=$PATH:$(pwd)/workspace/f5nxtctl/bin

f5nxtctl Help commands

The supported help command and sub-commands of f5nxtctl are as follows:

f5nxtctl help

This displays help commands of f5nxtctl tool.

config
   -i | --interactive                   To generate configuration interactively
   -f | --file <absolute file path>     To generate configuration reading from the file passed as argument

deploy
  create                               To deploy the product
  delete                               To delete the product deployment
  verify                               To check the status of product deployment

license
  status                               To check license status
  report                               To download the config report in disconnected/offline mode
  submit-report                        To submit the report to myf5.com in disconnected/offline mode
  verify                               To verify the signed acknowledgment provided by myf5.com in disconnected/offline mode

Use 'f5nxtctl <command> --debug | -d' to enable debugging for a given command (this option should always be provided at the end).

Configurating Product Deployment

f5nxtctl supports two types of CNFs deployment:

  1. Production
  2. Demo

Production Deployment

It is for the customers who already have the configuration and want to use f5nxtctl for deploying the CNFs using existing configuration files.

Demo Deployment

It is to bring up CNFs quickly with mostly default values. This is mainly used for demonstration purposes.

_images/spk_warn.png Important: Customers should use PRODUCTION mode.

To deploy the CNFs on the cluster, f5nxtctl needs necessary information and configuration files.

Run f5nxtctl config to provide configuration.

Config command supports below options to collects configuration:

  1. Interactive
  2. Reading an existing config file

Interactive Configuration

For first-time users or those creating new product deployment configurations, f5nxtctl collects configuration inputs interactively from the user, as shown below:

  1. Run the following command for interactive configuration:

    f5nxtctl config -i
    
  2. Enter the configuration details asked by f5nxtctl:

    Below example shows configuring CNFs deployment in interactive mode for production deployment.

    Configuring in interactive mode ...
    Enter[install-type]. supported values [demo production]. [default: production] Press return to choose default: production
    Enter[kubeconfig]. [default: ~/.kube/config]. Press return to choose default: ~/.kube/config
    Enter[cluster-type]. supported values [ocp robin k8s]. [default: ocp] Press return to choose default: ocp
    Enter[product-type]. supported values [spk cnf]. [default: cnf] Press return to choose default: cnf
    Enter[package-path]: /home/[user]/workspace/f5nxtctl/git-repos/f5-cnf-1.3.1.tgz
    Enter[f5-tools-namespace]. [default: f5-tools]. Press return to choose default: f5-tools
    Enter[f5-utils-namespace]. [default: f5-utils]. Press return to choose default: f5-utils
    Enter[cert-manager-values-file-path]: /home/[user]/workspace/f5nxtctl/git-repos/f5nxtctl/ocp5/cert_mgr_overrides.yaml
    Enter[rabbitmq-values-file-path]: /home/[user]/workspace/f5nxtctl/git-repos/f5nxtctl/ocp5/rabbitmq_overrides.yaml
    Enter[cwc-values-file-path]: /home/[user]/workspace/f5nxtctl/git-repos/f5nxtctl/ocp5/cwc_values.yaml
    Enter[license-type]. supported values [test production]. [default: test] Press return to choose default:
    Enter[crdconversion-values-file-path]: /home/[user]/workspace/f5nxtctl/git-repos/f5nxtctl/ocp5/crdconversion_values.yaml
    Enter[f5-controller-namespace]. [default: f5-controller]. Press return to choose default:
    Enter[fluentd-values-file-path]: /home/[user]/workspace/f5nxtctl/git-repos/f5nxtctl/ocp5/fluentd_values.yaml
    Enter[dssm-values-file-path]: /home/[user]/workspace/f5nxtctl/git-repos/f5nxtctl/ocp5/dssm_values.yaml
    Enter[use-watch-namespace]. supported values [yes no]. [default: yes] Press return to choose default: f5-controller
    Enter[watch-namespaces-comma-separated-list]. [default: f5-app]. Press return to choose default: f5-app
    Enter[number-of-tmm-interfaces]: 2
    Enter[tmm-nad-file-path-1]: /home/[user]/workspace/f5nxtctl/git-repos/f5nxtctl/ocp5/f5-controller-external-netdev.yaml
    Enter[tmm-vlan-crd-file-path-1]: /home/[user]/workspace/f5nxtctl/git-repos/f5nxtctl/ocp5/external_vlans_crd.yaml
    Enter[tmm-nad-file-path-2]: /home/[user]/workspace/f5nxtctl/git-repos/f5nxtctl/ocp5/f5-controller-internal-netdev.yaml
    Enter[tmm-vlan-crd-file-path-2]: /home/[user]/workspace/f5nxtctl/git-repos/f5nxtctl/ocp5/internal_vlans_crd.yaml
    Enter[f5controller-values-file-path]: /home/[user]/workspace/f5nxtctl/git-repos/f5nxtctl/ocp5/new_valuesvfio.yaml
    
    Configuration Successfull
    
  3. Verify the generated configuration file:

    cat deployment/cfg.yaml 
    
    basedir: /home/[user]/workspace/f5nxtctl/git-repos/tar/f5nxtctl
    ismac: true
    install_type: production
    kubeconfig: ~/.kube/config
    cluster_type: ocp
    product_type: cnf
    package_path: /home/[user]/workspace/f5nxtctl/git-repos/f5-cnf-1.3.1.tgz
    tools_ns: f5-tools
    tools_pod: f5tools.yaml
    utils_ns: f5-utils
    crd_product: f5-cnf-crds-n6lan-0.161.0-0.1.2.tgz
    img_cert_manager: f5-cert-manager-0.22.22-0.0.4.tgz
    cert-manager-values-file-path: /home/[user]/workspace/f5nxtctl/git-repos/f5nxtctl/ocp5/cert_mgr_overrides.yaml
    img_rabbitmq: rabbitmq-0.2.8-0.0.2.tgz
    rabbitmq-values-file-path: /home/[user]/workspace/f5nxtctl/git-repos/f5nxtctl/ocp5/rabbitmq_overrides.yaml
    img_cwc: cwc-0.14.15-0.0.6.tgz
    cwc-values-file-path: /home/[user]/workspace/f5nxtctl/git-repos/f5nxtctl/ocp5/cwc_values.yaml
    license_type: test
    img_crdconversion: f5-crdconversion-0.9.4-0.0.3.tgz
    crdconversion-values-file-path: /home/[user]/workspace/f5nxtctl/git-repos/f5nxtctl/ocp5/crdconversion_values.yaml
    controller_ns: f5-controller
    img_fluentd: f5-toda-fluentd-1.23.36.tgz
    fluentd-values-file-path: /home/[user]/workspace/f5nxtctl/git-repos/f5nxtctl/ocp5/fluentd_values.yaml
    img_dssm: f5-dssm-0.67.7-0.0.1.tgz
    dssm-values-file-path: /home/[user]/workspace/f5nxtctl/git-repos/f5nxtctl/ocp5/dssm_values.yaml
    img_controller: f5ingress-v0.480.0-0.1.30.tgz
    use-watch-namespace: yes
    watch_namespace: f5-app
    number_of_tmm_interfaces: 2
    tmm-nad-file-path_1: /home/[user]/workspace/f5nxtctl/git-repos/f5nxtctl/ocp5/f5-controller-external-netdev.yaml
    tmm_vlan_crd_file_path_1: /home/[user]/workspace/f5nxtctl/git-repos/f5nxtctl/ocp5/external_vlans_crd.yaml
    tmm-nad-file-path_2: /home/[user]/workspace/f5nxtctl/git-repos/f5nxtctl/ocp5/f5-controller-internal-netdev.yaml
    tmm_vlan_crd_file_path_2: /home/[user]/workspace/f5nxtctl/git-repos/f5nxtctl/ocp5/internal_vlans_crd.yaml
    f5controller-values-file-path: /home/[user]/workspace/f5nxtctl/git-repos/f5nxtctl/ocp5/new_valuesvfio.yaml
    

    Similarly, Click here to view the example configuring CNFs deployment in interactive mode for demo deployment.

File-based configuration

In this process, instead of the user providing the configuration interactively, f5nxtctl reads an existing configuration file that is passed as an argument.

  1. Example of an existing configuration file for CNFs production deployment:

    cat <path-to-exisitng-cfg-file>/cfg.yaml
    
    basedir: /home/[user]/workspace/f5nxtctl/git-repos/tar/f5nxtctl
    ismac: true
    install_type: production
    kubeconfig: ~/.kube/config
    cluster_type: ocp
    product_type: cnf
    package_path: /home/[user]/workspace/f5nxtctl/git-repos/f5-cnf-1.3.1.tgz
    tools_ns: f5-tools
    tools_pod: f5tools.yaml
    utils_ns: f5-utils
    crd_product: f5-cnf-crds-n6lan-0.161.0-0.1.2.tgz
    img_cert_manager: f5-cert-manager-0.22.22-0.0.4.tgz
    cert-manager-values-file-path: /home/[user]/workspace/f5nxtctl/git-repos/f5nxtctl/ocp5/cert_mgr_overrides.yaml
    img_rabbitmq: rabbitmq-0.2.8-0.0.2.tgz
    rabbitmq-values-file-path: /home/[user]/workspace/f5nxtctl/git-repos/f5nxtctl/ocp5/rabbitmq_overrides.yaml
    img_cwc: cwc-0.14.15-0.0.6.tgz
    cwc-values-file-path: /home/[user]/workspace/f5nxtctl/git-repos/f5nxtctl/ocp5/cwc_values.yaml
    license_type: test
    img_crdconversion: f5-crdconversion-0.9.4-0.0.3.tgz
    crdconversion-values-file-path: /home/[user]/workspace/f5nxtctl/git-repos/f5nxtctl/ocp5/crdconversion_values.yaml
    controller_ns: f5-controller
    img_fluentd: f5-toda-fluentd-1.23.36.tgz
    fluentd-values-file-path: /home/[user]/workspace/f5nxtctl/git-repos/f5nxtctl/ocp5/fluentd_values.yaml
    img_dssm: f5-dssm-0.67.7-0.0.1.tgz
    dssm-values-file-path: /home/[user]/workspace/f5nxtctl/git-repos/f5nxtctl/ocp5/dssm_values.yaml
    img_controller: f5ingress-v0.480.0-0.1.30.tgz
    use-watch-namespace: yes
    watch_namespace: f5-app
    number_of_tmm_interfaces: 2
    tmm-nad-file-path_1: /home/[user]/workspace/f5nxtctl/git-repos/f5nxtctl/ocp5/f5-controller-external-netdev.yaml
    tmm_vlan_crd_file_path_1: /home/[user]/workspace/f5nxtctl/git-repos/f5nxtctl/ocp5/external_vlans_crd.yaml
    tmm-nad-file-path_2: /home/[users]/workspace/f5nxtctl/git-repos/f5nxtctl/ocp5/f5-controller-internal-netdev.yaml
    tmm_vlan_crd_file_path_2: /home/[users]/workspace/f5nxtctl/git-repos/f5nxtctl/ocp5/internal_vlans_crd.yaml
    f5controller-values-file-path: /home/[users]/workspace/f5nxtctl/git-repos/f5nxtctl/ocp5/new_valuesvfio.yaml
    
  2. Run the following command to debug the file:

    f5nxtctl config -f <path-to-exisitng-cfg-file>/cfg.yaml -d
    
    2024-01-11T16:07:00.755+05:30 [DEBU] logging/logger.go:65 Logging Level: debug
    
    Configuring in file mode ...
    
    Configuration Successfull
    
  3. Verify the generated configuration file:

    cat deployment/cfg.yaml
    
    basedir: /home/[user]/workspace/f5nxtctl/git-repos/tar/f5nxtctl
    ismac: true
    install_type: production
    kubeconfig: ~/.kube/config
    cluster_type: ocp
    product_type: cnf
    package_path: /home/[user]/workspace/f5nxtctl/git-repos/f5-cnf-1.3.1.tgz
    tools_ns: f5-tools
    tools_pod: f5tools.yaml
    utils_ns: f5-utils
    crd_product: f5-cnf-crds-n6lan-0.161.0-0.1.2.tgz
    img_cert_manager: f5-cert-manager-0.22.22-0.0.2.tgz
    cert-manager-values-file-path: /home/[users]/workspace/f5nxtctl/git-repos/f5nxtctl/ocp5/cert_mgr_overrides.yaml
    img_rabbitmq: rabbitmq-0.2.8-0.0.2.tgz
    rabbitmq-values-file-path: /home/[users]/workspace/f5nxtctl/git-repos/f5nxtctl/ocp5/rabbitmq_overrides.yaml
    img_cwc: cwc-0.14.15-0.0.6.tgz
    cwc-values-file-path: /home/[users]/workspace/f5nxtctl/git-repos/f5nxtctl/ocp5/cwc_values.yaml
    license_type: test
    img_crdconversion: f5-crdconversion-0.9.4-0.0.3.tgz
    crdconversion-values-file-path: /home/[users]/workspace/f5nxtctl/git-repos/f5nxtctl/ocp5/crdconversion_values.yaml
    controller_ns: f5-controller
    img_fluentd: f5-toda-fluentd-1.23.36.tgz
    fluentd-values-file-path: /home/[users]/workspace/f5nxtctl/git-repos/f5nxtctl/ocp5/fluentd_values.yaml
    img_dssm: f5-dssm-0.67.7-0.0.1.tgz
    dssm-values-file-path: /home/[users]/workspace/f5nxtctl/git-repos/f5nxtctl/ocp5/dssm_values.yaml
    img_controller: f5ingress-v0.480.0-0.1.30.tgz
    use-watch-namespace: true
    watch_namespace: f5-app
    number_of_tmm_interfaces: 2
    tmm-nad-file-path_1: /home/[users]/workspace/f5nxtctl/git-repos/f5nxtctl/ocp5/f5-controller-external-netdev.yaml
    tmm_vlan_crd_file_path_1: /home/[users]/workspace/f5nxtctl/git-repos/f5nxtctl/ocp5/external_vlans_crd.yaml
    tmm-nad-file-path_2: /home/[users]/workspace/f5nxtctl/git-repos/f5nxtctl/ocp5/f5-controller-internal-netdev.yaml
    tmm_vlan_crd_file_path_2: /home/[users]/workspace/f5nxtctl/git-repos/f5nxtctl/ocp5/internal_vlans_crd.yaml
    f5controller-values-file-path: /home/[users]/workspace/f5nxtctl/git-repos/f5nxtctl/ocp5/new_valuesvfio.yaml
    

    Similarly, Click here to view the example of existing configuration file for CNFs demo deployment.

Deploying CNFs

The f5nxtctl tool offers deploy commands equipped with options for the creation and deletion of deployments.

Once the Configuration mentioned above is complete, run deploy create command.

Creating CNFs Deployment

Click here to view the command for creating a production deployment.

Verifying CNFs Deployment

Click here to view the command for viewing the production deployment.

Deleting CNFs Deployment

Click here to view the command for deleting the production deployment.

Checking License Status

The f5nxtctl tool offers license commands to check the license status in disconneted/offline and connected modes.

Connected Mode

License Status

Run the following command to check the license status in connected mode:

f5nxtctl license status
2023-12-07T09:22:58.691Z [DEBU] logging/logger.go:65                          Logging Level: debug
Using the URL: https://10.218.36.51:30881/status
Status:  {
 "ClusterDetails": {
     "Name": "CNFs Cluster"
 },
 "LicenseDetails": {
     "DigitalAssetID": "bf6e07fb-7708-4991-9b33-0f63549c56e7",
     "EntitlementType": "paid",
     "LicenseExpiryDate": "2024-12-03T00:00:44Z",
     "LicenseExpiryInDays": "361"
 },
 "LicenseStatus": {
     "State": "Verification Complete"
 }
}
TelemetryStatus:  {
 "NextReport": {
     "StartDate": "2023-12-07 09:16:37.709734284 +0000 UTC m=+72.884051052",
     "EndDate": "2023-12-31 09:16:37 +0000 UTC",
     "State": "Telemetry In Progress"
 }
}  

Disconnected Mode

License Status

Run the following command to check the license status in disconnected mode:

f5nxtctl license status
2024-01-11T20:11:36.378+05:30 [DEBU] logging/logger.go:65                          Logging Level: debug
Using the URL: https://10.145.64.5:30881/status
IntiailRegistrationStatus:  {
 "ClusterDetails": {
     "Name": "CNFs Cluster"
 },
 "LicenseDetails": {
     "DigitalAssetID": "25f2a27f-ca24-479c-9b2a-8bf1fb47fbc8",
     "EntitlementType": "paid"
 },
 "LicenseStatus": {
     "State": "Config Report Ready to Download"
 }
}
TelemetryStatus:  {}

Downloading Report in Disconnected/Offline Mode

Run the following command to download the config report in disconnected/offline mode:

f5nxtctl license report
2024-01-11T20:11:46.036+05:30 [DEBU] logging/logger.go:65                          Logging Level: debug
{"report":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJwYXlsb2FkIjp7ImRvY3VtZW50VHlwZSI6IkNsb3VkLU5hdGl2ZSBUZWxlbWV0cnkiLCJkb2N1bWVudFZlcnNpb24iOiIxIiwiZGlnaXRhbEFzc2V0SWQiOiIyNWYyYTI3Zi1jYTI0LTQ3OWMtOWIyYS04YmYxZmI0N2ZiYzgiLCJkaWdpdGFsQXNzZXROYW1lIjoiQ05FIiwiZGlnaXRhbEFzc2V0VmVyc2lvbiI6IjEuMi4wIiwicmVwb3J0TmFtZSI6IlNQSy0xMzM2MmIzYS03ZmE1LTRiNzItYTFlMS0yYjg2ZGZiYWEzMWIiLCJyZXBvcnRUeXBlIjoiaW5pdGlhbGl6ZSIsImN1c3RvbWVyUHJvdmlkZWRJZCI6IlNQSyBDbHVzdGVyIiwib3JkZXJUeXBlIjoicGFpZCIsImVwb2NoVGltZSI6MTcwNDk4MzE4MSwib2JzZXJ2YXRpb25TdGFydFRpbWUiOiIyMDI0LTAxLTExVDE0OjI2OjIxWiIsIm9ic2VydmF0aW9uRW5kVGltZSI6IjIwMjQtMDEtMTFUMTQ6MjY6MjFaIiwiZW5hYmxlZEZlYXR1cmVzIjpudWxsLCJ0ZWxlbWV0cnlSZWNvcmRzIjpbeyJtZXRyaWNOYW1lIjoiY2x1c3Rlcl9rcnUiLCJ0aW1lc3RhbXAiOiIyMDI0LTAxLTExVDE0OjI2OjE2WiIsIm1vZGVWYWx1ZSI6MTJ9LHsibWV0cmljTmFtZSI6ImNyZF9jbHVzdGVyIiwidGltZXN0YW1wIjoiMjAyNC0wMS0xMVQxNDoyNjoyMVoiLCJjcmRVc2FnZVJlY29yZHMiOltdfSx7Im1ldHJpY05hbWUiOiJjcmRfbnMiLCJ0aW1lc3RhbXAiOiIyMDI0LTAxLTExVDE0OjI2OjIxWiIsImNyZFVzYWdlUmVjb3JkcyI6W119XSwib3BlcmF0aW5nRW52aXJvbm1lbnQiOnsiY2x1c3Rlck5hbWUiOiJTUEsgQ2x1c3RlciIsImt1YmVybmV0ZXNWZXJzaW9uIjoidjEuMjcuMyIsImNvbnRhaW5lclJ1bnRpbWUiOiJjb250YWluZXJkOi8vMS42LjEyIiwiY2x1c3RlcldpZGVDb250cm9sbGVyVmVyc2lvbiI6InY1LjAuOCIsInByb2R1Y3RWZXJzaW9uIjoic3BrLTguMC4xOSJ9fX0.w089Y2I2-gS_vs8Njn_s1AHi-vecq9vVE3uqonE_BoY"}

Submitting the Report in Disconnected/Offline Mode

Run the following command to submit the report to myf5.com in disconnected/offline mode:

f5nxtctl license submit-report
2024-01-11T20:18:46.113+05:30 [DEBU] logging/logger.go:65                          Logging Level: debug
Using the URL: https://10.145.64.5:30881/status
IntiailRegistrationStatus:  {
 "ClusterDetails": {
     "Name": "CNFs Cluster"
 },
 "LicenseDetails": {
     "DigitalAssetID": "25f2a27f-ca24-479c-9b2a-8bf1fb47fbc8",
     "EntitlementType": "paid"
 },
 "LicenseStatus": {
     "State": "Config Report Downloaded"
 }
}
TelemetryStatus:  {}

Verifying Signed Acknowledgment

Run the following commands to verify the signed acknowledgment provided by myf5.com in disconnected/offline mode:

f5nxtctl license verify
f5nxtctl license status
2024-01-11T20:19:58.954+05:30 [DEBU] logging/logger.go:65                          Logging Level: debug
Using the URL: https://10.145.64.5:30881/status
Status:  {
 "ClusterDetails": {
     "Name": "CNFs Cluster"
 },
 "LicenseDetails": {
     "DigitalAssetID": "25f2a27f-ca24-479c-9b2a-8bf1fb47fbc8",
     "EntitlementType": "paid",
     "LicenseExpiryDate": "2025-01-07T00:01:04Z",
     "LicenseExpiryInDays": "361"
 },
 "LicenseStatus": {
     "State": "Verification Complete"
 }
}
TelemetryStatus:  {
 "NextReport": {
     "StartDate": "2024-01-11 14:49:50.212186318 +0000 UTC m=+1440.362397350",
     "EndDate": "2024-01-31 14:49:50 +0000 UTC",
     "State": "Telemetry In Progress"
 }
}

Debugging

In f5nxtctl, use the -d or –-debug argument to enable debugging, ensuring it is the last argument for proper functionality.

Run the following command to enable debugging:

f5nxtctl config -i --debug
2024-01-03T22:56:46.542+05:30 [DEBU] logging/logger.go:65                          Logging Level: debug

Configuring in interactive mode ...
Enter [install-type]. supported values [demo production]. [default: production] Press return to choose default: hello
Error: Failed to initialize the configuration. Error: Failed to handle configuration for resource none.general, Error: Failed to validate the configuration parameter install-type in resource none.general

panic: Failed to initialize the configuration. Error: Failed to handle configuration for resource none.general, Error: Failed to validate the configuration parameter install-type in resource none.general

goroutine 1 [running]:
main.f5panic({0x3208440, 0xc000206470}, 0xc0004b6348)
/home/[users]/workspace/f5nxtctl/git-repos/f5nxtctl/src/main.go:102 +0xcc
main.main()
/home/[user]/workspace/f5nxtctl/git-repos/f5nxtctl/src/main.go:172 +0xdab

Logging

The f5nxtctl logs transactions in the log/f5nxtctl.log file and important information on the terminal.

Platforms Support in Demo and Production Deployment

The table below shows the platform support tested in demo and production deployment:

Platforms Install Types Comments
K8s Demo With 1 tmm interface as macvlan-passthru
K8s Production With 1 tmm interface as macvlan-passthru
OCP Demo With 2 tmm interfaces as sriov
OCP Production With 2 tmm interfaces as sriov

Feedback

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