Deployment Guide

Deployment Overview

SD-Fabric is released with Helm chart and container images. We recommend using Kubernetes and Helm to deploy SD-Fabric. Here’s a list of high level steps required to deploy SD-Fabric:

  1. Provision switch

    We first need to install operating system with Docker and Kubernetes on the bare-metal switches.

  2. Prepare switches as special Kubernetes nodes

    Kubernetes label and taint are used to configure switches as special Kubernetes worker nodes. This is to make sure we deploy Stratum (and only Stratum) on switches.

  3. Prepare access credential for SD-Fabric images

    SD-Fabric images are hosted on an ONF member-only Docker registry. You need to obtain access token and supply that as part of the Helm value in Step 6.

  4. Prepare ONOS network configuration

    Network configuration defines properties such as switch pipeconf, subnet and VLAN.

  5. Prepare Stratum chassis configuration for each switch

    Chassis config defines switch properties such as port speed and breakout.

  6. Install SD-Fabric using Helm

    Finally, we are going to install SD-Fabric with the information we prepared in Step 1 to 5.

Step 1: Provision Switches

We follow Open Network Install Environment(ONIE) way to install Open Network Linux (ONL) image to switch. To work with the SD-Fabric environment, we have customized the ONL image to support related packages and dependencies.

Image source file can be found on ONF repository opennetworkinglab/OpenNetworkLinux. You can also download pre-compiled artifacts from Github Release page

Note

If you’re not familiar with ONIE/ONL environment, please check Getting Started to see how to install the ONL image to an ONIE supported switch.

Below is an example about how to install the ONL image.

1. Prepare a server which is accessible by the switch and then download the pre-compiled installer from the release page.

wget https://github.com/opennetworkinglab/OpenNetworkLinux/releases/download/v1.4.3/ONL-onf-ONLPv2_ONL-OS_2021-07-16.2159-5195444_AMD64_INSTALLED_INSTALLER
python -m http.server 8080
  1. Reboot the switch to enter ONIE installation mode

Note

Please access the switch via BMC or serial console to keep connection during the installation.

onl-onie-boot-mode rescue; reboot
  1. Install ONL installer

onie-nos-install http://$SERVER_IP:8080/ONL-onf-ONLPv2_ONL-OS_2021-07-16.2159-5195444_AMD64_INSTALLED_INSTALLER
  1. Setup switch IP and hostname after the installation.

Step 2: Configure switches as special Kubernetes nodes

Our ONL version includes all packages required by running the Kubernetes on top of it. Once the Kubernetes is ready, the Stratum application will be deployed to the switch to manage it.

Unlike server, switch has less CPU and memory resources and we should avoid deploying unnecessary workloads into switch. Besides, the Stratum application should only be deployed to all switches.

To achieve the above goals, please apply the resources to your Kubernetes cluster.

  1. Set up Label to all switch node, e.g node-role.kubernetes.io=switch

  2. Set up Taint with NoSchedule to all switch node, e.g node-role.kubernetes.io=switch:NoSchedule

  3. Properly configure the NodeSelector and Toleration when deploying Stratum via DaemonSet

Example of a five nodes Kubernetes cluster, two switches and three servers

╰─$ kubectl get node -o custom-columns=NAME:.metadata.name,TAINT:.spec.taints
NAME       TAINT
compute1   <none>
compute2   <none>
compute3   <none>
leaf1      [map[effect:NoSchedule key:node-role.kubernetes.io value:switch]]
leaf2      [map[effect:NoSchedule key:node-role.kubernetes.io value:switch]]
╰─$ kubectl get nodes -lnode-role.kubernetes.io=switch
NAME    STATUS   ROLES    AGE   VERSION
leaf1   Ready    worker   27d   v1.18.8
leaf2   Ready    worker   27d   v1.18.8

Step 3: Prepare access credential for SD-Fabric images

Container images can be download from ONF self-hosted container registry but you have to gain the access token first.

  1. Login to Aether Harbor Registry using your ONF Crowd credential,

  2. Select User Profile drop-down menu in the upper-right corner

  3. Generate the CLI secret and it’s the secret token you have to access the container registry via CLI tool.

  4. Login to the container registry with your username and access token by docker login command to ensure you can access it.

╰─$ docker login registry.aetherproject.org --username hwchiu
Password:
Login Succeeded

Step 4: Prepare ONOS network configuration

See Network Configuration for instructions

Step 5: Prepare Stratum chassis configuration

See See Stratum Chassis Configuration for instructions

Step 6: Install SD-Fabric with Helm

To install SD-Fabric into your Kubernetes cluster, follow instructions described on the SD-Fabric Helm Chart README