Your Journey To Kubernetes & EKS

From a junior developer’s perspective, it’s so cool to learn kubernetes and talk about cloud-native. It’s even a better thing if this developer has the urge to expert in the concept too. However, it’s a mystery for many to understand what kubernetes is and what kind of ecosystem it creates.

To overly simplify: kubernetes is helpful when you want to run multiple applications, for at least dozens of end users, in a repetitive form. Besides when all these applications need to communicate with each other. So, unless you are in top 1000 SaaS lists, most of the time you don’t need Kubernetes.

But the developers prefer using it, because it provides a lot of flexibility and it’s the climax of the open source world - so the community grows tons of addons and useful tools for Kubernetes periphery. CNCF itself is a Kubernetes centralized ecosystem, although the foundation primarily highlight cloud-native before kubernetes. You can still think of kubernetes and containers before anything, whenever you hear the word ‘cloud-native’.


Start with the basics

  1. If you want to reach to the highest level, before all you have to have your equipments set. First build an application with multiple layers separated: frontend, backend, data, network, possibly more. The application doesn’t have to be anything useful or complicated. Build a small game with some data. If you want to speed up, search for an example application in github and clone it. However, make sure that you have good overview on the source code, because at some point you will need to know what’s written there for network and security reasons.

  2. Once you manage to understand and build your application, go ahead and run it on your local device. Yes, simply put, open a few terminals and run each layer separately. Test your application. Check if it works as planned and performs as expected. Try to understand your tool and give yourself some moment to acknowledge how far you already made it.

Let’s go cloud

  1. EC2 in AWS is very powerful. You should always have the honors of deploying your application on an EC2 instance as well. Go ahead and deploy. Discover the good and bad sides of running your application on a web server. Try different systems. Ubuntu, Amazon Linux, CentOS, even Windows. See if you have the capabilities to run the application as expected. At this point do not worry about TLS certificates or domain setups. It’s already good enough if your application is served on a public IP without any issues.

  2. Containerize each layer of your application. Here, you will need to learn a lot about Docker. If you want to build quick, use support of your AI agent to containerize your application. Don’t mind with the size of your images. Just let it build at this point and see if your containerized layers of applications can also interact with each other. As this part is tricky, you will have to get back to the source code of your application and fix some network details in between. If you cloned someone else’s application at step 1, you may get stuck or suffer at this part.

  3. Once containerized, learn to push each layer of your containerized application to a container registry, such as Docker Hub. Here, you should consider optimizing your images, learn more about versioning and make sure that you keep your secrets and environment variables properly. It is a step to not underestimate and worth dedicating some time. Once you manage to push everything, you can give a try to pull your images on another local device running docker. If your containers run properly and can communicate with each other (same as in your local device) that means you are on a good track!

Approaching to kubernetes field

  1. Initially deploy your application on ECS. The concepts and definitions may feel a bit confusing at first hand. But after several try and fails, you should realize that the concept is almost same as running in a local machine, with a few additional benefits. You can easily scale, you can set who should have access to your application, and you can provide the performance that your application requires. This is also a good step to understand the networking between containers, or better said services and make sure that they communicate well.

  2. Almost there, it is time to learn about Kubernetes and you are ready to deploy your application on a local Kubernetes cluster such as Minikube. This is the moment that you can learn kubernetes at most. Do not rush to go cloud. Create multiple namespaces, clone the application, build a few deploys, learn how to check logs, internal logs, add a few daemon sets, understand persistent volumes etc. - if you are having fun, this is a good sign. If you are suffering, still a good sign. You are lucky that everything didn’t work well at first step and you are taking the hard parts to become a kubernetes expert in the future.

  3. Finally, deploy your application on EKS. You reached to the full administrative state of kubernetes development. The scale is not important yet. You already know more than most of the developers and IT professionals interacting with Kubernetes. Also learn about ekscli, ArgoCD and other capabilities that EKS brings with. There is so much to learn, but it’s worth going in that direction.

Hope you find this path still worth following and useful!