SPK Artifacts Via F5 Artifact Registry

The Service Proxy for Kubernetes (SPK) manifest file, helm charts, docker images, and other utilities are now available via F5 Artifact Registry (FAR) at repo.f5.com. FAR is accessible to all, but only users with a valid Service Account Key can download and install the artifacts.

This document details the procedures for downloading a Service Account Key, and using the Service Account Key to download the SPK Manifest file and install Helm charts, docker images, and other utilities into the cluster from FAR (repo.f5.com).

Requirements

Ensure you have:

  • A workstation with Helm v3.8.0 or higher installed.

Procedures

1. Download the Service Account Key

To download the Service Account Key, do the following:

  1. Login to the MyF5.

  2. Navigate to Support Resources and click Downloads.

  3. Check the box for the End User License Agreement and Program Terms, then click Next.

  4. Choose BIG-IP_Next from the Select a Product Family Group drop-down.

  5. Select Service Proxy for Kubernetes (SPK) from the Product Line drop-down.

  6. Choose the desired version from the Product Version drop-down.

  7. Select the f5-far-auth-key.tgz file from the download file list. Choose a download location from the drop-down menu and click Download.

    The TGZ file contains a Service Account Key. This is Service Account Key in base64 format, used for logging into FAR.

2. Download the Manifest File

Download the manifest.yaml file for the current release or the specific release you are looking for.

To download the Manifest file, do the following:

  1. Perform a Helm Login to download the Manifest file from FAR:

    cat <service_account_key_base64 file> | helm registry login -u _json_key_base64 --password-stdin https://repo.f5.com
    

    In this example, cne_pull-base64.json is the Service Account Key.

    cat cne_pull_64.json | helm registry login -u _json_key_base64 --password-stdin https://repo.f5.com
    
  2. Perform a Helm Pull to pull the Manifest file from FAR:

    helm pull oci://repo.f5.com/<path of Manifest file> --version <version of Manifest file>  
    

    In this example, release/f5-bigip-k8s-manifest is the path for pulling manifest.yaml file and its version is 2.1.0-3.1736.1-0.1.27.

    helm pull oci://repo.f5.com/release/f5-bigip-k8s-manifest- --version 2.1.0-3.1736.1-0.1.27
    

    The f5-bigip-k8s-manifest-2.1.0-3.1736.1-0.1.27.tgz file is now pulled.

  3. Run list command to see newly downloaded Manifest tar file:

    ls   
    

    The file list shows the service_account_key_base64 file and the manifest file named f5-bigip-k8s-manifest-2.0.1-3.233.0-0.3.128.tgz:

  4. Extract the Manifest file:

    tar xvf f5-bigip-k8s-manifest-2.1.0-3.1736.1-0.1.27.tgz   
    
  5. Run list command on the f5-bigip-k8s-manifest-2.1.0-3.1736.1-0.1.27.tgz directory. It shall list f5-bigip-k8s-manifest-2.1.0-3.1736.1-0.1.27.yaml file:

ls f5-bigip-k8s-manifest-2.1.0-3.1736.1-0.1.27 

The f5-bigip-k8s-manifest-2.1.0-3.1736.1-0.1.27.yaml file: Contains names and version numbers of all SPK Helm charts and docker images.

Example of f5-bigip-k8s-manifest-2.1.0-3.1736.1-0.1.27.yaml file:

f5_helm_repo: oci://repo.f5.com
f5_docker_repo: repo.f5.com
releases:
 - version: 2.1.0-3.1736.1-0.1.27
helm_charts:
    - name: charts/cwc
      version: 0.43.1-0.0.15
    - name: utils/f5-cert-gen
      version: 0.9.3
    - name: charts/f5-cert-manager
      version: 0.23.35-0.0.10
    - name: charts/f5-crdconversion
      version: 0.23.2-0.1.1
    - name: charts/f5-dssm
      version: 1.27.1-0.0.20
    - name: charts/f5-cnf-crds-n6lan
      version: 13.7.1-0.3.22
    - name: charts/f5-spk-crds-common
      version: 13.7.1-0.3.22
    - name: charts/f5-spk-crds-deprecated
      version: 13.7.1-0.3.22
    - name: charts/f5-spk-crds-service-proxy
      version: 13.7.1-0.3.22
    - name: charts/f5-toda-fluentd
      version: 1.31.30-0.0.7
    - name: charts/f5ingress
      version: v13.7.1-0.3.22
    - name: charts/rabbitmq
      version: 0.6.1-0.0.13
    - name: charts/csrc
      version: 0.9.1-0.3.0
    - name: charts/coremond
      version: 0.7.56-0.0.5
    - name: charts/f5-toda-observer
      version: 5.7.5-0.1.0
    - name: utils/log-doc-f5ingress
      version: 13.7.1+0.3.22
    - name: utils/dnat-util
      version: v0.5.6
    - name: charts/f5-lifecycle-operator
      version: v1.198.4-0.1.36
    - name: charts/f5-ipam-controller
      version: v1.1.35-0.0.6
    - name: charts/node-labeler
      version: 0.6.5-0.0.2
    - name: charts/f5-license-proxy
      version: 1.29.0-0.10.12
    - name: utils/flp-setup
      version: 1.29.0-0.10.12
docker_images:
    - name: images/cert-manager-cainjector
      version: v2.3.0
    - name: images/cert-manager-controller
      version: v2.3.0
    - name: images/cert-manager-startupapicheck
      version: v2.3.0
    - name: images/cert-manager-webhook
      version: v2.3.0
    - name: images/crd-conversion
      version: v1.69.3-0.0.5
    - name: images/crdupdater
      version: v0.4.32-0.0.2
    - name: images/f5-blobd
      version: v1.23.1-0.0.5
    - name: images/f5-cert-client
      version: v3.1.2-0.0.3
    - name: images/f5-csm-qkview
      version: v0.10.37-0.0.4
    - name: images/f5-debug-sidecar
      version: v10.5.0-0.1.32
    - name: images/f5-downloader
      version: v0.27.9-0.0.12
    - name: images/f5-dssm-store
      version: v5.1.7-0.0.3
    - name: images/f5-dssm-upgrader
      version: v2.0.17-0.0.3
    - name: images/f5-fluentbit
      version: v1.2.8-0.0.5
    - name: images/f5-fluentd
      version: v2.0.11-0.0.11
    - name: images/f5-l4p-engine
      version: v1.127.13-0.0.5
    - name: images/f5-license-helper
      version: v0.12.10-0.0.4
    - name: images/f5-nsec-ips-daemon
      version: v3.5.1-0.0.4
    - name: images/f5-toda-tmstatsd
      version: v1.11.19-0.0.3
    - name: images/f5dr-img
      version: v3.2.14-0.0.4
    - name: images/f5dr-img-init
      version: v3.2.14-0.0.4
    - name: images/f5ing-tmm-pod-manager
      version: v1.0.18-0.0.7
    - name: images/f5ingress
      version: v13.7.1-0.3.22
    - name: images/init-certmgr
      version: v0.23.35-0.0.10
    - name: images/opentelemetry-collector-contrib
      version: 0.123.0
    - name: images/rabbit
      version: v0.5.9-0.0.11
    - name: images/spk-cwc
      version: v0.35.0-0.0.5
    - name: images/tmm-img
      version: v10.50.7-0.2.9
    - name: images/tmrouted-img
      version: v2.3.0-0.0.3
    - name: images/spk-csrc
      version: v0.6.1-0.0.5
    - name: images/f5-dwbld
      version: v1.161.0-0.2.11
    - name: images/f5-coremond
      version: v0.7.56-0.0.5
    - name: images/f5-toda-observer
      version: v5.7.5-0.1.0
    - name: images/f5-bdosd
      version: v0.72.0-0.1.3
    - name: images/dnsx-img
      version: v0.10.21-0.0.4
    - name: images/f5-lifecycle-operator
      version: v1.198.4-0.1.36
    - name: images/f5-ipam-controller
      version: v1.1.35-0.0.6
    - name: images/f5-node-labeler
      version: v0.0.15-0.0.2
    - name: images/f5-eowyn-install
      version: v0.5.4
    - name: images/crd-installer
      version: v13.7.1-0.3.22
    - name: images/postgresql
      version: 17.5.0
    - name: images/vault
      version: 1.20.1
    - name: images/vault-init
      version: 1.29.0-0.10.12
    - name: images/f5-license-proxy
      version: 1.29.0-0.10.12
    - name: images/f5-env-discovery
      version: v1.198.4-0.1.36
    - name: images/f5-fqdn-resolver
      version: v0.8.1-0.0.3
    - name: images/gslb-engine
      version: v0.111.15-0.0.2
    - name: images/gslb-probe-agent
      version: v0.31.4-0.0.2
    - name: images/f5-analyzer
      version: v0.0.3-0.0.5

3. Install the Helm charts

Following are the two different procedures described to install the Helm charts. Perform the steps mentioned in either Procedure 1 or Procedure 2 to complete the installation.

Note: Perform any one of the following procedures.

Procedure 1: Download the SPK Helm charts, Docker Images and other Utilities

Do the following steps to download the SPK Helm charts, Docker Images and other Utilities:

  1. Perform a Helm Login to download the Helm charts from FAR:

    cat <service_account_key_base64 file> | helm registry login -u _json_key_base64 --password-stdin https://repo.f5.com
    

    In this example, cne_pull-base64.json is the Service Account Key.

    cat cne_pull_64.json | helm registry login -u _json_key_base64 --password-stdin https://repo.f5.com
    
  2. Perform a Helm Pull to pull the Helm charts from FAR:

    helm pull oci://repo.f5.com/<path of Helm chart> --version <version of Helm chart>  
    

    In this example, charts/f5ingress is the path for pulling f5ingress Helm chart and its version is v13.7.1-0.3.22 as retrieved from the manifest.yaml file.

    helm pull oci://repo.f5.com/charts/f5ingress --version v13.7.1-0.3.22
    
  3. Perform a Utilities Pull to pull the other utilities from FAR:

    helm pull oci://repo.f5.com/<path of Utilities> --version <version of Utility> 
    

    In this example, utils/log-doc-f5ingress is the path for pulling log-doc-f5ingress utility and its version is 13.7.1+0.3.22 as retrieved from the manifest.yaml file.

    helm pull oci://repo.f5.com/utils/log-doc-f5ingress --version 13.7.1+0.3.22
    
  4. Perform a Docker Login to download the docker images from FAR:

    cat <service_account_key_base64 file> | docker login -u _json_key_base64 --password-stdin <URL of F5 Artifact Registry>
    

    In this example, cne_pull_64.json is the same Service Account Key.

    cat cne_pull_64.json | docker login -u _json_key_base64 --password-stdin https://repo.f5.com
    
  5. Perform a Docker Pull to pull the docker images from FAR:

    docker pull repo.f5.com/<path of Docker Image>:<version of Docker Image> 
    

    In this example, images/rabbit is the path for pulling rabbit docker image and its version is v0.5.9-0.0.11 as retrieved from the manifest.yaml file.

    docker pull repo.f5.com/images/rabbit:v0.5.9-0.0.11
    

Procedure 2: Installing the helm chart via imagePullSecrets

The imagePullSecrets feature is used to securely install helm chart from a FAR directly into a cluster by using the Service Account Key from the TGZ file as authentication credentials.

Use the following steps to install the helm chart directly from FAR into a cluster:

  1. Perform a Helm Login, as shown in Step 1 of Procedure 1: Download the SPK Helm charts, Docker Images and other Utilities section.

  2. Perform a Docker Login to download the docker images as shown in step 4 of Procedure 1: Download the SPK Helm charts, Docker Images and other Utilities section.

  3. Copy and paste the below bash script into a .sh file and run it.

    Note: The bash script here is using cne_pull_64.json as a Service Account Key. This script is written for Linux. Remove -w 0 as arguments to base64 from the script when using on Mac.

      #!/bin/bash
    
      # Read the content of pipeline.json into the SERVICE_ACCOUNT_KEY variable
      SERVICE_ACCOUNT_KEY=$(cat cne_pull_64.json)
    
      # Create the SERVICE_ACCOUNT_K8S_SECRET variable by appending "_json_key_base64:" to the base64 encoded SERVICE_ACCOUNT_KEY
      SERVICE_ACCOUNT_K8S_SECRET=$(echo "_json_key_base64:${SERVICE_ACCOUNT_KEY}" | base64 -w 0)
    
      # Create the secret.yaml file with the provided content
      cat << EOF > far-secret.yaml
      ---
      apiVersion: v1
      kind: Secret
      metadata:
        name: far-secret
      data:
        .dockerconfigjson: $(echo "{\"auths\": {\
      \"repo.f5.com\":\
      {\"auth\": \"$SERVICE_ACCOUNT_K8S_SECRET\"}}}" | base64 -w 0)
      type: kubernetes.io/dockerconfigjson
      EOF
    

    The far-secret.yaml secret file will be generated according to the secret name provided in the bash script.

  4. Apply a far-secret.yaml secret file to the namespace where you want to install the helm chart:

    oc create -f far-secret.yaml -n <namespace>  
    

    In this example the far-secret.yaml secret is install to the demo-ns Project.

    oc create -f far-secret.yaml -n demo-ns  
    
  5. In this Fluentd example, configure the fluentd_values.yaml file with imageCredentials and image.repository parameters to install the helm chart from FAR:

    imageCredentials:
      name: far-secret    
    
    image:
      repository: repo.f5.com/images
    
  6. Install the helm chart:

    helm install <release name> oci://repo.f5.com/<path of helm chart> --version <version number> -f <values>.yaml
    

    In this example, charts/f5-toda-fluentd is the path for installing f5-toda-fluentd helm chart its version is 1.31.30-0.0.7, values file is fluentd_values.yaml (Created in Step 3).

    helm install f5-fluentd oci://repo.f5.com/charts/f5-toda-fluentd --version 1.31.30-0.0.7 -f fluentd_values.yaml
    
  7. Verify the status of the helm chart:

    oc get pods -n demo-ns   
    

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

    NAME                               READY   STATUS   RESTARTS   AGE  
    f5-toda-fluentd-6fcdb48d8b-4dkcc   1/1     Running         0    9s
    

Feedback

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