==== Kubernetes ==== The following is a set of possible use cases for Kubernetes/Containers based on existing workflows - particularly related to CIS Undergraduate Courses. ==== Visual Studio Code ==== SoCS Students are increasingly using remote code execution through Visual Studio Code to write and test their assignments. Assignments are coded through VS Code on a students personal computer, which then connects to a remote environment in which it executes the code. This is currently typically done on the SoCS Linux/NoMachine cluster. It is also possible to use Kubernetes containers as a remote execution environment. This has two major benefits. * Each container is run independently of any other student environments. This makes it easier to limit resources * As each development environment is a Docker container, it is easy to provide a customized environment for courses or even individual requirements. Below are two VSCode Remote Kubernetes Options. === Okteto Extension === == Instructor Workflow == * Instructors will define the software required for their course/assignment/project. * SoCS IT will build a Docker Container based on these specifications. * A customized yaml file will be provided to each student which defines their work environment to use the specified Docker Container. See an example below. name: socslinux-test image: socsguelph/socslinux:latest autocreate: true workdir: /tmp command: ["bash"] namespace: vscodetest volumes: - /root/.vscode-server # persist vscode extensions securityContext: capabilities: add: - SYS_PTRACE persistentVolume: enabled: true storageClass: nfs-client == Student Workflow == First set up the dev environment to install the extensions and configuration files required to connect to Kubernetes. These steps only need to be done once. * Install the Okteto Extension in VSCode. * Download the Kubeconfig and add to local machine. Set up the project. This needs to be done once for each project. * Create a folder/git repo to hold code, and add the above yaml file to it. * Create a namespace in Kubernetes to work within. Daily Workflow. * Run Okteto Extension from within VSCode to connect to remote environment * Code and Test === Bridge To Kubernetes (Microsoft) Extension === ==== Gitlab Runners ==== ==== Gitlab CI/CD ====