We as engineers have to adapt and change constantly as technology evolves so fast in our current generation. Knowing that we have to prepare ourselves to be able to learn something completely new for our daily work.
For me, I was working in mobile since the beginning of my professional career 2015 (I know this is not a long time 😅) but now I’ve decided to broaden my horizon and step into the world of Kubernetes and containerization. Being solely an iOS engineer, this is an interesting step into totally different territory to me. Most of my time I was focusing on user experience, thinking of great mobile business use cases and educating software developers and architects about the iOS platform and our great SAP Cloud Platform SDK for iOS. Now I have to think backend, containerization, application deployments and cloud integration.
While walking the path of learning, experimenting and experiencing the world of Kubernetes, I want you to join me. The goal is to share all the interesting things I will find and try out, as well as information sources I am using to learn more about the topic.
Important to understand is: With this series of Blog Posts I am not writing as an expert, in this Blog series I am on the same level as every other developer who is starting with Kubernetes & Docker themselves. This is going to be more of a diary for you to follow along and learn with me.
Saying that let’s get started…
Get an Understanding of Kubernetes
Before you get started you should first understand what the technology is all about, it’s terminology as well as the concepts behind Kubernetes.
What worked pretty well for me is the Kubernetes documentation. Kubernetes is an Open Source technology initially developed by Google to run applications in a containerized environment. With that you can build up an infrastructure which can support you by scaling your application deployments according to the traffic and calculation power you need.
Find a great overview about What is Kubernetes?
Reading this you will recognize that we have a new terminology in the Kubernetes world. We’re talking about Pods , Extensions and Kubelets, but for you to understand these terms in the context of Kubernetes you can use the Standardized Glossary for help.
Understanding not only the technology on a high level and the terminology but also the concepts behind the technology is essential for becoming an expert. This allows you to understand the thoughts behind Kubernetes and makes it easier to later on use it in a correct way.
The Concepts page of kubernetes.io gives you a great overview about the key concepts and components. If you’re looking for something outside the official Kubernetes website I’ve found the following resources which show you in an understandable way what Kubernetes is and why it is important:
If you feel like learning about Kubernetes and reading a good night story to your children, you can use these great and playful “Kubernetes Children Books” (Thank you Anna Jung 🙂 ).
And if you just punch in Kubernetes into your preferred search engine you should find tons of blogs, materials and tutorials. To not feel overwhelmed here are some names you should know in the community. These experts have great knowledge and insight, also most of them put out content in one form or the other. Here is my list of accounts you can follow:
Getting your Hands dirty
Now with a good overview of what Kubernetes is and how it generally works it is time to get your hands dirty. Luckily kubernetes.io provides us with a guided interactive tutorial series showing you all the basics. The tutorial uses a version of Minikube to provide a development sandbox to you. But not only kubernetes.io provides amazing learning material but I also found the following resources very helpful to get started:
Also Thomas Jung has some nice videos on how to setup your local development environment:
Is Kubernetes the right Technology for You?
Kubernetes is definitely one of the important technologies in 2020 and I think we as engineers working in the world of Cloud should at least have a fundamental understanding on what Kubernetes means and why it is important. For those of you who are in the same situation as I am where we have to become experts on the topic to develop, educate or define architectures for applications and infrastructure, here are some thoughts about when to use Kubernetes as an infrastructure and why.
First, to get an understanding who is using Kubernetes and what they do with it, you can take a look at the Kubernetes Case Studies.
But in general I think we can summarize the usage for Kubernetes as following:
- Use if in need for Automated Container Deployment
- Auto-scaling of containers
- Scheduling of containerization in a flexible way
- Automated provisioning and instantiation of containers
- Disaster Recovery
- Management of repeatable operations
When we think about application Use Cases we could think about:
- Different Micro-services with the requirement to scale on different levels to each other
- For applications in DevOps. Can be helpful for CI/CD (Continuous Integration/ Continuous Deployment)
- Applications with the need for high availability
- Managing State
This is just the first blog post of many about my path to the huge world of Kubernetes. I barely scratched the surface with this blog post but it hopefully gives you a quick introduction to how I approach this technology.
Please interact with me in the comments and let me know your thoughts and if you have additions you would think are important to the rest of the community.
For the future blog posts we will first focus on everything Kubernetes and at some later point transition into more SAP specific topics like integration, management and orchestration of clusters with help of Kyma and Gardener.
With that I want to close this blog post, and I am looking forward to exploring this path with all of you.
Let’s become experts together!