The Continuous Deployment Lab provided by Enea and Arm. In Enea lab, there are two ThunderX1 servers on which we do nightly virtual deploys of IEC Type 2, run validation, and install SEBA usecase. In Arm internal lab, the Ampere server and MACCHIATObin board are used for validating the IEC Type 2 & Type 1.
Continuous Integration → Continuous Deployment Flow
Enea Lab
Enea's CI/CD validation lab is ran using Jenkins and it's connected to the Akraino Linux foundation Jenkins master.
The Jenkins jobs are configured via JJB in the Akraino ci-management project: https://gerrit.akraino.org/r/gitweb?p=ci-management.git;a=tree;f=jjb/iecThese jobs are loaded in the LF Jenkins master and triggered periodically: https://jenkins.akraino.org/view/iec/
Each job's has a master job that calls four subsequent jobs (e.g.: https://jenkins.akraino.org/view/iec/job/iec-type2-fuel-virtual-centos7-daily-master/)
- Deploy IEC
- The Installer will create the cluster VMs (using KVM), will clone the IEC repo and it will install the IEC platform on them (e.g.: https://jenkins.akraino.org/view/iec/job/iec-type2-deploy-fuel-virtual-centos7-daily-master/)
- Run validation k8s conformance tests
- The k8s conformance tests are ran against the cluster using the validation project (e.g.: https://jenkins.akraino.org/view/iec/job/validation-enea-daily-master/)
- Install SEBA use-case
- The scripts that install the SEBA usecase are ran (e.g.: https://jenkins.akraino.org/view/iec/job/iec-type2-install-seba_on_arm-fuel-virtual-centos7-daily-master/)
- Cleanup
- Destroy the setup (e.g.: https://jenkins.akraino.org/view/iec/job/iec-type2-destroy-fuel-virtual-centos7-daily-master/)
Enea Lab for Akraino IEC CI/CD
For IEC Type1, the jobs are running in an emulation way with the limited resources(memory, CPUs) of VMs and it uses Compass as the installer because we lack a bare-metal environment with public access for devices of IEC Type1 in this lab. The master job of IEC Type1 is given at https://jenkins.akraino.org/view/iec/job/iec-type1-compass-virtual-ubuntu1604-daily-master/
- Deploy IEC
- The Installer will create the cluster VMs (using KVM), will clone the IEC repo and it will install the IEC platform on them (e.g.: https://jenkins.akraino.org/view/iec/job/iec-type1-deploy-compass-virtual-ubuntu1604-daily-master/)
- Run validation k8s conformance tests
- The k8s conformance tests are ran against the cluster using the validation project (e.g.: https://jenkins.akraino.org/view/iec/job/validation-enea-daily-master/)
- Install SEBA use-case
- The scripts that install the SEBA usecase are ran (e.g.: https://jenkins.akraino.org/view/iec/job/iec-type1-install-seba_on_arm-compass-virtual-ubuntu1604-daily-master/)
- Cleanup
- Destroy the setup (e.g.: https://jenkins.akraino.org/view/iec/job/iec-type1-destroy-compass-virtual-ubuntu1604-daily-master/)
Logs from the CD installation of Integrated Edge Cloud (IEC) are available at: https://nexus.akraino.org/content/sites/logs/production/vex-yul-akraino-jenkins-prod-1/
Arm Lab
In Arm CI/CD lab, since the network reasons, we have to decide that only push log into community Nexus server. There are 6 jobs in Arm internal CI/CD.
For IEC Type1:
iec-type1-deploy-compass-virtual-ubuntu1604-daily-master: Deploy the Kubernetes on Mcbin board
iec-type1-install-seba_on_arm-compass-virtual-ubuntu1604-daily-master: Install SEBA applications
iec-type1-destroy-compass-virtual-ubuntu1604-daily-master: Destroy environments
For IEC Type2:
iec-type2-deploy-compass-virtual-ubuntu1604-daily-master:
- Deploy VMs by compass
- Deploy Kubernetes on VMs
iec-type2-install-seba_on_arm-compass-virtual-ubuntu1604-daily-master: Install SEBA applications
iec-type2-destroy-compass-virtual-ubuntu1604-daily-master: Destroy environments
Arm Lab for Akraino IEC CI/CD
Akraino Continuous Deployment Hardware
Enea Lab:
Sales Item | Description | QTY |
cn8890 | Gigabyte ThunderX R120-T32 (1U) | 2 |
Arm Lab:
Sales Item | Description | QTY |
Ampere Server | 1 | |
MACCHIATObin Double Shot | 2 |
Chassis Level Specification
Total Physical Compute Cores: 48
Total Physical Compute Memory: 256GB
Total SSD-based OS Storage: 480G
Networking per Server: 2x1G and 2x10G
IEC Cabling
Virtual Deploy using Fuel@OPNFV installer
Based on the configuration passed to the installer, it will handle creating the VMs, virtual networks, OS installation and IEC installation.
The setup is created based on a Pod Descriptor File (PDF) and Installer Descriptor File (IDF) . The files for the two servers in Enea lab are at https://gerrit.akraino.org/r/gitweb?p=iec.git;a=tree;f=ci/labs/arm
The PDF contains information about the VMs (RAM, CPUs, Disks). The IDF contains the virtual subnets that need to be created for the cluster and the interfaces on the Jumphost that are going to be connected to the clusters. The first two interfaces on the Jumphost will be used for Admin and Public subnets.
An installation will create 3 VMs and install the OS given as parameter. The supported OSes are Ubuntu16.04, Ubuntu 18.04 and Centos7. Each VM has three subnets:
- Admin: used during installation
- Mgmt: used by k8s
- Public: used for external access