The integration of the IoT-NGIN framework is based on the principle of adopting the cloud-native computing paradigm, which provides the benefits of Increased efficiency, reduced costs and ensured availability and scalability. The Cloud Native Computing Foundation (CNCF) provides the Cloud Native Definition v1.0.

Aligned to this definition, IoT-NGIN builds a framework that is based on containerized microservices, which are built, tested, deployed and operated in the cloud, focusing on the automation of these processes to the extent possible.

The IoT-NGIN components are developed as stateless microservices which provide functionality almost independent from other microservices and run as containers or unikernels in the IoT-NGIN Kubernetes (K8s) cluster. The deployment of such containers relies on HELM charts [2].

Helm is a package manager for Kubernetes that makes it easy to take applications and services that are either highly repeatable or used in multiple scenarios and deploy them to a typical K8s cluster and HELM charts essentially describe how to manage a specific application or set of applications on Kubernetes. HELM charts provide the ability to provide, share, and use the containers built for Kubernetes, alleviating from the burden to manually author a set of configurations (YAML) files for the Kubernetes Deployments [3], Secrets [4], ConfigMaps [5], etc.

Therefore, in the case of IoT-NGIN, where the meta-architecture is quite complex and involves a number of different components and different partners require to manage their own instances, HELM proves a helpful tool to easily rollout new updates or keep track of different instances of the installations.

In addition, IoT-NGIN adopts a DevSecOps approach which is realized through GitLab CI/CD pipeline. This pipeline is used to safely deploy the IoT-NGIN components to the IoT-NGIN Kubernetes cluster in an automated but secure manner. IoT-NGIN has already delivered stable versions of individual components in the project’s GitLab group [6].

IoT-NGIN, adhering to the Cloud Native approach, provides automated delivery procedures realizing the CD part of the CI/CD pipeline through GitOps. GitOps is a deployment methodology centralized around a Git repository (GitLab) that advocates using versioned files in source control repositories to define and manage the underlying infrastructure. This agent based GitOps methodology for continuous deployment (CD) refers to running an active component within the infrastructure which handles the components’ deployments and is achieved with the GitLab agent. An agent is installed and deployed in the Kubernetes cluster and is used as a communication bridge between the source code in GitLab and the cluster. The agent is authorised to access all GitLab sub-groups and projects of the H2020 IoT-NGIN group.


References

[1] CNCF, “Cloud Native Computing Foundation (“CNCF”) Charter,” 2021

[2] HELM, “Helm – The package manager for Kubernetes

[3] Kubernetes, “Kubernetes Documentation – Deployments

[4] Kubernetes, “Kubernetes Documentation – Secrets,”

[5] Kubernetes, “Kubernetes Documentation – ConfigMaps,”

[6] IoT-NGIN, “IoT-NGIN GitLab Group,” 2022