Skip to content

projectcatena/cloudlabs-app

Repository files navigation

Contributors Forks Stargazers Issues MIT License


Logo

CloudLabs

Virtual labs on the cloud for academia.
Explore the docs »

View Demo · Report Bug · Request Feature

Table of Contents
  1. About The Project
  2. Getting Started
  3. Usage
  4. Roadmap
  5. Contributing
  6. License
  7. Contact
  8. Our Supporters
  9. Acknowledgments

About The Project

Product Name Screen Shot

The CloudLabs project is an initiative sponsored by Google Cloud Platform (GCP) that aims to create a secure environment in the cloud for tutors to distribute Virtual Machines (VMs) to students and allow students to access the VMs through their web browser. As such, the project reduces technical and compatibility issues that may arise due to the physical limitations in the hardware and software of students’ computers and encourages sustainable use of IT resources by migrating physical IT infrastructure to the cloud.

By engaging in cloud services to run VMs, it enables the following:

  • Reduction of spending for a machine with higher specifications
  • Reduction of maintenance on machines
  • Improvement in accessibility
  • Reduction of energy consumption
  • Easier installation & access to applications and software
  • Scalability

Hence, this project will be able to enhance the overall learning experience and to promote environmental sustainability.

(back to top)

Built With

  • Next
  • Spring
  • GCP

(back to top)

Getting Started

This is an example of how you may setup the CloudLabs project locally for deployment or experimentation. To get a local copy up and running follow these simple example steps.

However, do note that the compute instances that are provisioned will not be accessible through a local deployment, as instances are only assigned private IPv4 addresses. This prevents instances from being exposed to the public internet, and only authorized users are able to access the cloud-native instances through the web applciation.

Prerequisites

The required dependencies are as follow:

  • npm
  • CloudLabs Backend
  • Google Cloud Platform Account (authenticated with Application Default Credentials)

Installation

  1. Authenticate to GCP using the gcloud cli tool (follow the official installation guide from GCP)
    gcloud auth application-default login
  2. Clone the repo
    git clone https://github.com/projectcatena/cloudlabs-app.git
  3. Install NPM packages
    npm install
  4. Enter your URL for CloudLabs backend in .env.local
    NEXT_PUBLIC_API_URL="http://localhost:8080" 

(back to top)

Usage

This section details the main features of the CloudLabs web application along with some screenshots. The features mentioned below do not represent the entirety of the web application.

For more examples, please refer to the Documentation

Architectural Diagram

Architecture The CloudLabs web application is deployed within a private Google Kubernetes Engine (GKE) autopilot cluster, and it will allow users to programmatically provision virtual machines that are in different subnets.

Compute Engine

Create-instance Authorized users with the TUTOR or ADMIN role are able to access a modal as seen above to create a compute instance with custom settings, including an image such as “debian-11” or “windows-server-2019”, and a subnet to be used by the compute instance.

Subnet

Create-subnet Authorized users with the TUTOR or ADMIN role are able to access a modal as seen above to create a subnet resource, by specifying a name and an IPv4 network address in CIDR notation, such as /24 or /28. A firewall will also be created along with the subnet to enable virtual machines within the same subnet to communicate with one another as intranet traffic is denied by default.

Snapshot

Snapshot Users are able to create snapshots of compute instances to preserve the state of the virtual machines in the event of corruption or data loss.

Browser-based Remote Access

Browser-access Apache Guacamole is implemented to enable browser-based remote access to virtual machines, in which users are able to remotely connect and use compute instances that are provisioned on the cloud with just a web browser.

(back to top)

Contributing

Contributions are what make the open source community such an amazing place to learn, inspire, and create. Any contributions you make are greatly appreciated.

If you have a suggestion that would make this better, please fork the repo and create a pull request. You can also simply open an issue with the tag "enhancement". Don't forget to give the project a star! Thanks again!

  1. Fork the Project
  2. Create your Feature Branch (git checkout -b feature/AmazingFeature)
  3. Commit your Changes (git commit -m 'Add some AmazingFeature')
  4. Push to the Branch (git push origin feature/AmazingFeature)
  5. Open a Pull Request

(back to top)

License

Distributed under the MIT License. See LICENSE.txt for more information.

(back to top)

Contact

Kai - @DancinParrot

Boon Chong - @s10219129

Tristan - @loghogjog

Project Link: https://github.com/projectcatena/cloudlabs-app

(back to top)

Our Supporters

We are eternally grateful to all our wonderful supporters and sponsors!

Dr Divyan  Dr Divyan  

(back to top)

Acknowledgments

(back to top)

Releases

No releases published

Packages

No packages published

Languages