Nick Chao
About me
Hey there, thanks for stopping by. I am Nick, who was the program lead of this VIP from 2023 Spring to 2024 Spring. At the same time, I was the team lead of the Deployments team. During my time in VIP, I have done many deployments projects related to CI/CD, Kuberentes, GitLab CI, and more. I have learned a lot from this VIP and I hope you will too!
Projects
2023 Spring
- Add linters and formatters for Corelink client Codebase in CI (merge request)
2023 Fall
- Customize a Bash middleware for GitLab to use KubeVirt VMs as CI runners on-demand (repo)
This project aimed to solve the limited OS environment support for our GitLab CI runner. At the time, we only had Linux-based runners. Some legacy windows workloads cannot run on Linux-based machine. To solve this issue, we decided to use Kubevirt and spined up Windows VMs to run it as CI runners. However, the GitLab does not support Kukevirt as underlying executor out of the box. So I wrote a custom executor (essentially a Bash middleware) to make it work. The project was a success and we were able to run Windows workloads on GitLab CI. I later packaged the solution into a helm chart as well.
- Build CI pipelines for ML model training that automates image build, K8s job deployment, and setup dynamic cluster bursting using Admiralty (repo)
This project aimed to showcase that we can burst our ML model training jobs to Nautilus. To circumvent library limitation on volume mount, I incoporated MLFlow to record the experiments and model artifacts. I also built a nice CI pipeline that automates builds the Docker image and deploys the K8s job through pull-based gitlab agent (deprecated) through cluster bursting. The project was a success and we were able to automate the ML model training process.
2024 Spring
- Node Priority Access Implementation with Kyverno (ticket)
This project aimed to incentivize researchers to join their machines in our cluster. We designed a prioritization mechanism such that they have priority over their own machines. Non-priority users can opt-in for more capacity at the risk of preemption.
- Node Traffic Logger via eBPF (ticket)
This project aimed to enable us obtain more granular observability into our Kuberentes node’s IPv4 and IPv6 inbound and outbound traffic. As no out-of-box solution provide the level of granularity we want, we decided to use eBPF to have track the traffic efficiently. Remi implemented a BPF program that tracks TCP/UDP packets using BCC framework, and I formated output and visualize in Grafana.