mirror of
https://github.com/avinal/avinal.github.io.git
synced 2026-07-04 07:40:09 +05:30
129 lines
5.6 KiB
Markdown
129 lines
5.6 KiB
Markdown
---
|
||
title: I am loving it! RedHat
|
||
date: 2022-02-25 20:47
|
||
category: development
|
||
tags: kubernetes, redhat, docker, golang, tekton, openshift, intern
|
||
description: I made it to the Red Hat as a DevTools intern. This post is about onboarding and how I prepared myself for working on the actual project.
|
||
---
|
||
# My internship at Red Hat
|
||
|
||
I have been contributing to open source for the last 3 years and Red Hat
|
||
was one of the companies that I was very fond of. I must say all my
|
||
contributions and consistency paid off, and I made it to the Red Hat as
|
||
a DevTools intern. This post is about onboarding and how I prepared
|
||
myself for working on the actual project.
|
||
|
||
On the first day of my internship, I met two amazing teammates
|
||
[Saytam](https://github.com/) and [Utkarsh](https://github.com/). We
|
||
were also introduced to a Senior Software Engineer [Piyush
|
||
Garg](https://github.com) who later mentored us. The initial few
|
||
meetings were more on the introduction and what to learn topics. Before
|
||
I jump into more details let me explain first what does a **DevTools
|
||
Developer/Engineer** do?
|
||
|
||
## What does a DevTools Developer/Engineer do?
|
||
|
||
From [MDN Web
|
||
Docs](https://developer.mozilla.org/en-US/docs/Glossary/Developer_Tools)
|
||
**Developer tools (or "development tools" or short "DevTools") are
|
||
programs that allow a developer to create, test, and debug software.**
|
||
At RedHat, a lot of open source developer tools of industry standards
|
||
are developed. There are many, OpenShift, Tekton, CodeReady containers,
|
||
and many more.
|
||
|
||
## Learning on the <img src="/images/golang.png" class="align-top" style="width:2.5em"
|
||
|
||
alt="golang_logo" />
|
||
|
||
There was a lot of learning and still a lot to learn. In a meeting with
|
||
my manager Pradeepto Bhattacharya, I was told that I will be working on
|
||
TektonCD or OpenShift Pipelines, and both of them require a sound
|
||
knowledge of Golang, CI/CD, Containers, Docker, and Kubernetes. I was
|
||
familiar with CI/CD, containers, and Docker but never used Golang and
|
||
Kubernetes. We were provided plenty of good resources and my teammates
|
||
also helped with many awesome resources. I am listing all the resources
|
||
with their category.
|
||
|
||
### [Golang](https://go.dev/)
|
||
|
||
<img src="/images/goladder.png"
|
||
class="float-md-right rounded ml-3 float-md-right rounded ml-3"
|
||
style="height:20em" alt="Gopher on the ladder" />
|
||
|
||
One of Golang’s biggest advantages is that it offers the clarity and
|
||
ease of use that other languages lack. Golang’s advantages make it easy
|
||
for new programmers to quickly understand the language and for seasoned
|
||
veterans to easily read each other’s code.
|
||
|
||
- [Official Go Documentation](https://go.dev/doc/) - *Start from here*
|
||
- [Go by Example](https://gobyexample.com/) - *bite-size examples for
|
||
most of the golang features*
|
||
- [Golang tutorial series -
|
||
GOLANGBOT.COM](https://golangbot.com/learn-golang-series/) - *in-depth
|
||
tutorial of golang*
|
||
- [Effective Go](https://go.dev/doc/effective_go) - *writing good golang
|
||
programs*
|
||
- [The Go Playground](https://go.dev/play/) - *official online golang
|
||
ide*
|
||
- [The Go Programming Language - Book](https://www.gopl.io/) *for
|
||
learning advanced level golang*
|
||
- [Golang Tutorial for Beginners \| Full Go Course - TechWorld with
|
||
Nana](https://youtu.be/yyUHQIec83I) *if you prefer video tutorials, I
|
||
don't :)*
|
||
|
||
### [Docker](https://www.docker.com/)
|
||
|
||
Docker takes away repetitive, mundane configuration tasks and is used
|
||
throughout the development lifecycle for fast, easy, and portable
|
||
application development - desktop and cloud. Docker’s comprehensive
|
||
end-to-end platform includes UIs, CLIs, APIs, and security that are
|
||
engineered to work together across the entire application delivery
|
||
lifecycle.
|
||
|
||
<img src="/images/docker-architecture.png"
|
||
class="float-md-right img-fluid my-3 float-md-right img-fluid my-3"
|
||
alt="The Docker Architecture" />
|
||
|
||
- [Docker and Containers -
|
||
Katacoda](https://www.katacoda.com/courses/docker) *interactive
|
||
lessons on docker and containers*
|
||
- [Docker for beginners](https://docker-curriculum.com/)
|
||
- [Docker Tutorial for Beginners \| TechWorld with
|
||
Nana](https://youtu.be/3c-iBn73dDE) *video tutorial*
|
||
|
||
### [Kubernetes](https://kubernetes.io/)
|
||
|
||
<img src="/images/kubernetes-meme.png"
|
||
class="float-md-left border mr-3 float-md-left border mr-3" width="200"
|
||
alt="Kubernetes tech" />
|
||
|
||
**Kubernetes** is the Greek word for a ship’s captain. We get the words
|
||
Cybernetic and Gubernatorial from it. The Kubernetes project focuses on
|
||
building a robust platform for running thousands of containers in
|
||
production.
|
||
|
||
- [Learn Kubernetes -
|
||
Katacoda](https://www.katacoda.com/courses/kubernetes) *interactive
|
||
lessons with kubernetes*
|
||
- [kube by example](https://kubebyexample.com/) *learn by doing*
|
||
- [Kubernetes Tutorial for Beginners](https://youtu.be/X48VuDVv0do)
|
||
*video tutorial*
|
||
|
||
## *Not so Minimal* Tekton Server
|
||
|
||
In late January, we were asked to implement our learnings and deep dive
|
||
into Kubernetes and TektonCD through an assignment project. Soon we
|
||
realized that whatever we were learning so far was not even close to
|
||
what we were going to implement. We were given a document containing the
|
||
requirements of the applications we were supposed to create along with
|
||
all the documentation and architectural diagrams.
|
||
|
||
The application was called **Minimal Tekton Server**. It is a set of
|
||
three different applications, i.e a server, a CLI, and a dashboard. In
|
||
short, this application is supposed to *listen to custom resources being
|
||
created and then transfer the request to Tekton API to create the
|
||
corresponding resource on the OpenShift/Kubernetes cluster.*
|
||
|
||
So are you interested in how it went? Please follow up with my [next
|
||
blog](https://avinal.space/posts/development/lovely-dangerous-things-redhat.html).
|