Virtual labs on the cloud for academia.
Explore the docs »
View Demo
·
Report Bug
·
Request Feature
Table of Contents
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.
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.
The required dependencies are as follow:
- npm
- CloudLabs Backend
- Google Cloud Platform Account (authenticated with Application Default Credentials)
- Authenticate to GCP using the
gcloud
cli tool (follow the official installation guide from GCP)gcloud auth application-default login
- Clone the repo
git clone https://github.com/projectcatena/cloudlabs-app.git
- Install NPM packages
npm install
- Enter your URL for CloudLabs backend in
.env.local
NEXT_PUBLIC_API_URL="http://localhost:8080"
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
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.
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.
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.
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.
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.
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!
- Fork the Project
- Create your Feature Branch (
git checkout -b feature/AmazingFeature
) - Commit your Changes (
git commit -m 'Add some AmazingFeature'
) - Push to the Branch (
git push origin feature/AmazingFeature
) - Open a Pull Request
Distributed under the MIT License. See LICENSE.txt
for more information.
Kai - @DancinParrot
Boon Chong - @s10219129
Tristan - @loghogjog
Project Link: https://github.com/projectcatena/cloudlabs-app
We are eternally grateful to all our wonderful supporters and sponsors!