Introduction and Project Overview
Introduction
In this initial chapter, we will explore several key aspects that set the foundation for the rest of the report. The chapter is divided into three main sections. The first section provides an overview of the Work-Context, Accomplished Work, and Report Structure. This section will give you an insight into the internship experience at IRISA, the tasks accomplished during this period, and how this report is organized to present the information. Following this, we will introduce the NaviDEC Project, offering a brief introduction to the project. Finally, we will touch upon the Project Context and Use Cases, providing a snapshot of the project's operational context and its use cases.
Work-Context
This report presents the work carried out during my five-month internship at IRISA, a renowned research institute, as part of the Master2 program in Cloud and Network Infrastructure at the University of Rennes. The focus of my work was the development of components for a composite service orchestration platform in the maritime domain, a project of significant complexity and innovation. This period provided a unique opportunity to apply and expand my technical skills in a real-world setting.
Accomplished Work
During my internship, I accomplished approximately 12 tasks, each contributing to the development and enhancement of the IRISA platform. My journey began with understanding the existing codebase, developed a comprehensive logging system which laid the foundation for my subsequent work. The tasks ranged from infrastructure automation with Ansible Playbook, Docker container automation, to migrating the framework from Flask to FastAPI. Each task contributed to the project's progress and enriched my technical skills. Significant milestones of my internship included developing an interactive web-based terminal using xterm.js and creating the bandwidth visualization using Apache ECharts from scratch. I also used Sphinx to develop a user guide from scratch and published it on a website using GitLab Pages. The build and deployment process of the user guide was automated using GitLab CI/CD. The culmination of these tasks resulted in a robust platform capable of orchestrating composite services in the maritime domain. This platform is a testament to the hard work and dedication during my internship and is a significant contribution to the NaviDEC project.
Report Structure
This report is structured into three main chapters. The first chapter provides an overview of the project and the context in which it was carried out. The second chapter delves into the enhanced characteristics of the IRISA platform, detailing the various tasks executed and the challenges overcome. The final chapter explores the work organization methodology, providing a comprehensive account of the technical growth experienced during the internship. The report concludes with a reflection on the internship experience and the knowledge gained. Finally, this chapter includes a summary in English and a résumé in French of the work done.
Project Context and Use Cases
IRISA Platform Architecture Overview
This section explores how the IRISA lab's Proof of Concept team demonstrates the platform's architecture. To set up the platform, one can connect to a remote Ubuntu v20 operating system from a laptop via an SSH terminal. Using Containernet for network emulation, two Docker containers and a RabbitMQ container for messaging are created. These containers, named "boat" and "land," represent the deep-edge and edge locations, respectively. Each container is equipped with Docker, a Minikube cluster, and Nginx for traffic handling.
Inside each Minikube cluster, the NaviDEC REST API is deployed, which governs the following behaviors:
Clients communicate with the REST API through HTTP requests.
The REST API translates these requests into kubectl API requests.
Responses are generated based on the outputs of the kubectl commands.
The master boat Minikube cluster communicates with the other master land Minikube cluster via HTTP for requests.
To manage this platform, four separate terminals are required:
The first terminal runs the NaviDEC REST API from the first Docker container in the master boat Minikube cluster.
The second terminal runs the NaviDEC REST API from the second Docker container in the master land Minikube cluster.
The third terminal operates the Meta orchestrator:
It is responsible for listing live clusters.
It makes decisions based on boat cluster prompts. For instance, when bandwidth improves, it provides the destination cluster's IP, enabling the boat cluster to move the classifier to cluster 2.
Communication between clusters and the Meta orchestrator is facilitated through RabbitMQ RPC.
The fourth terminal acts as a remote client, sending deployment and service requests to the boat cluster.
Principles of Operation for the IRISA Platform
Here are the key principles of operation for the IRISA Platform:
The client sends requests to the NaviDEC REST API in the master boat for the deployment and service deployment of streaming and classifier from the host 1 terminal.
The NaviDEC REST API in the master boat cluster interacts with the Kubernetes API, deploying streaming and classifier pods and services, figure 6.
When the boat cluster bandwidth improves, it requests the Meta orchestrator for the destination cluster to move the classifier. The Meta orchestrator provides the Edge cluster's IP address.
The boat cluster requests the Edge cluster to deploy the classifier resources. Once ready, the classifier is removed from the boat cluster, figure 7.
Conversely, when boat cluster bandwidth drops, the classifier is redeployed, and the Edge classifier is deleted.
Streaming always remains on the boat cluster.
Nginx on each cluster tailors streaming and classifier configurations based on its deployment location.
IRISA platform is operating at a low bandwidth speed, streaming and classifier resources remain on boat.
IRISA platform is operating at a good bandwidth speed, only classifier resource are relocated to the Edge
Conclusion: Exploring the IRISA Platform Architecture
As we conclude our exploration of the IRISA platform architecture, we acknowledge its pivotal role in the project timeline. Born out of Phase One as a Proof of Concept, the IRISA platform sets the stage for the next phases of this innovative project. The initial design and setup, successfully carried out by a dedicated team member, provide a strong foundation for the current phase.
The complexities of the IRISA platform serve as a testament to the technical acumen involved and a bridge between theory and practice. By understanding its architecture, we gain insights into its workings, preparing us for the enhancements and refinements in Phase Two.
As we transition into the next chapter, we'll delve into my internship work during Phase Two. We'll detail the tasks executed, challenges overcome, and features enhanced, providing a comprehensive understanding of the platform's evolution. This narrative aligns with the project goal of advancing the platform, bringing us closer to the ultimate integration phase.