development

Create your first Kubernetes operator

Ahoy there, fellow Kubernetes administrators! It is undeniable that the success of Kubernetes has taken the tech world by storm. And do you know what’s even better than mastering Kubernetes management? Of course! It’s learning how to extend it. That’s why I’m excited to share with you a fantastic course. It will help you to gain a deeper understanding of Kubernetes architecture and learn how to create our own Kubernetes operator.

Get the latest release tag from a Github repository

Sometimes I needed to programmatically get the tag name of the latest release from a GitHub repository. It’s often useful for automating tasks through scripts or for creating installer CLIs. The GitHub public API provides this information, so you’ll get it using your shell. Define the repository in the REPO environment variable. This way it will be easier for you to try other repositories later. REPO='kubernetes/kubernetes' Now use curl to issue a request to the GitHub REST API.

Local Kubernetes for devs

These days I’m learning how to develop Kubernetes operators in Go. Although I had developed programs in Go before, I never did that to extend Kubernetes. For this, a running cluster is required. So, I needed a Kubernetes cluster. The best option for this was to create a local one. Using a local Kubernetes cluster as development environment saves costs and reduces workload and time. Fortunately I have experience managing single node clusters with different distros.

Install multiple versions of Golang on Ubuntu

The Go language, better known as Golang, is a programming language that’s gaining a lot of popularity lately. My friend Brayan Bautista showed me his interest in this language, which ignited my curiosity. As well-known innovative projects such as Docker or Kubernetes use this language, I felt it would be useful for developing my career in DevOps engineering. That’s one of the reasons why I use Hugo for this blog.

Course completed: Go Programming

Today I finished the Go Programming by Example (Golang) course. Instructor Kam Hojati did a great job preparing the videos with lots of examples. In addition to teaching language usage through programming examples, he also shows implementations of some popular algorithms such as Fibonacci sequence calculation or how to search for repeated characters. The course ends with a final exercise that covers almost all the previous lessons. I felt the course as long and tedious, the previous one about Java had more fun, but I think it’s a worthwhile effort, and you learn a lot.

Undo last Git commit

Have you ever made changes that you regretted? Git relies heavily on its history, and you may feel that your latest commit only contributes to creating a big mess in it for the other developers of the project. If you already did a commit and now you want to delete it, don’t worry, there is a solution for that. You can remove the last commit from the git history with the command below:

Course completed: Spring Microservices

Today I finished Master Microservices with Spring Boot and Spring Cloud course, the first I complete in the Udemy learning platform. Thanks to the instructor Ranga Karanam for his good work and explanations, also for putting support material in this GitHub Repository. The first part is about Spring Boot, which is a framework to simplify the bootstrapping and development of new Spring applications. Here I built a RESTful service with Spring Boot looking at different and important aspects like REST specification, logging, database abstraction layer with JPA, exception handling, internationalization, HATEOAS, etc.

Replacing author for multiple Git commits

Some time ago I was taking the course Master Microservices with Spring Boot and Spring Cloud but I had to leave it because these days I was getting very busy. Yesterday, after three months, I returned back and after pushing changes to GitLab repo, I noticed that changes were made with my GitHub email address instead of using the GitLab one. Last commit could be easily changed with the command below: