My Summer 2022 Co-op Work Term at Tulip - Work Term Report
Written by: Himmat Mahal
Introduction
During the Summer of 2022, I started my third co-op work term. I got a job as a DevOps Engineer Coop at Tulip.io Inc. As part of the Cloud Platform team, I got deeper knowledge in the world of cloud technology, got more proficient using various tools, and learned new things.
About Tulip
Tulip (https://www.tulip.com/) is a SaaS company, founded in 2013, that focuses on building cloud software for the purpose of enhancing retail. Tulip provides an array of innovative solutions for retailers looking to improve the experience for their customers, which has a positive impact on their business.
What I Learned
I developed some goals to guide my learning throughout the work term. Here are the details on my goals, and what I learned.
- My first and foremost goal was to get better at working with Kubernetes. Going into the work term I had worked with Kubernetes previously but there were a lot of things I didn’t know. While working on modifying certain parts of our networking, monitoring and observability stack, I learned how to debug some common issues, such as pods failing on startup and going into CrashLoopBackOff. While debugging things on k8s clusters, I also got more familiar using kubectl to describe things, list certain resources, edit the yaml manifest of k8s resources, and do rolling restarts of deployments. Kubectl is a very powerful tool, and it can also allow you to re-label and re-annotate multiple resources in a single command which can be quite useful at times. Not only did I learn about Kubernetes & Kubectl, I also learned about a tool for installing things on Kubernetes clusters, called helm. Helm is a very powerful tool that can be used on the command line, or through other ways such as the Terraform Provider. Either way, it allows you to deploy things on a cluster with lots of flexibility and very quickly. It allows you to modify the configuration of something in a programmable way using templating; instead of getting the yaml for a deployment and manually editing in a nodeSelector to assign pods to certain nodes, we can simply pass this in as an argument when installing with helm, and it will automatically template the yaml to include this. This makes upgrading much easier, since all the modifications to the yaml are explicitly written in one place. Overall, I gained a ton of knowledge on working with kubernetes, debugging common problems, and installing things onto clusters. By the end of the work term, I felt very comfortable using helm to install new tools and services onto kubernetes clusters, even knowing how to deal with errors and technical issues by myself. I consider my achievement of this goal a great success.
- My second goal was to learn more about networking, in particular I wanted to learn about istio, which is a service mesh that makes it easier to observe and manage traffic on a kubernetes cluster. One of the things I did was research and see if we could improve the shutdown mechanism for our ingressgateway pods. This involved learning a lot more about how istio really works, and the moving parts. Without getting into too much detail, this gave me exposure to some of the details involving networking, like load balancers, preserving header information of requests, etc. Learning about Kiali and Jaeger, tools that can be used alongside Istio to observe a service mesh also really taught me more, since part of the job involved modifying and re-configuring certain parts of Kiali & Jaeger. This required knowing some surrounding context about networking and Istio, which was very useful knowledge. Having this knowledge & experience regarding Istio & networking in the context of kubernetes will most certainly help in my career.
- My final goal was focused a bit more on soft skills. I wanted to get better at presenting technical information in an easy-to-understand manner. I did this by participating in some bi-weekly demos where I briefly presented the newest thing I worked on to around 15-20 people. I also looked at a previous talk about presenting talks which went over how to communicate something technical to an audience who doesn’t know the full story. In my demos I made sure to present the context, why something is valuable, and tried to not over-complicate things. Practicing this by simply participating in demos certainly improved my ability to talk about complex technical topics with people who don’t have all of the context. This will be a valuable asset in my career as I go further in tech where communicating complex info and sharing knowledge is an essential skill. This is something where I believe practice makes perfect, so although I made considerable progress I would like to continue developing my communication and other soft skills.
In summary, I had goals of improving my ability to work with kubernetes, learn about networking & istio, and communication. I made great progress on all of these. Unrelated to my three goals, I also learned a lot during some company events to support learning for Software Developers, called VidQ and ReadQ where we watched a youtube video or read an article, then discussed it. These were also great opportunities to learn some interesting facts.
The Job
A DevOps Engineer is a type of Software Developer that is responsible for the infrastructure that runs the software. As an intern on the Cloud Platform Team, I spent my time dealing with kubernetes, using technologies like terraform & helm, maintaining & upgrading tools we use for networking, monitoring, and observability, as well as working on internal tools. Since I had already worked at Tulip for my fall work term in 2021, it was much easier to get started again. When dealing with infrastructure, experience is key but so is a willingness to learn. Apart from basic technical skills like knowing how to code, any experience working with containerized workloads, kubernetes, cloud providers, and monitoring/observability definitely helps.
Conclusion
My Summer work term on the Cloud Platform team at Tulip was an excellent opportunity to learn more about working with cloud technology. Learning these things will certainly help my career.
Acknowledgements
I would like to say thanks to Gaelan, Bill, and Carlos for being such great team members!