Should You Dive Into Kubernetes?
Diving into Kubernetes doesn't magically solve all your infrastructure problems and can sometimes just complicate matters. Kubernetes won't inherently make your applications more resilient; in fact, it could make things worse if not approached correctly. It’s a vastly complex system that does require operators to run and develop it, even if you are running it hosted in Azure AKS or AWS EKS.
Kubernetes actually is more than just a runtime environment, it has become an ecosystem through its vast operator catalog. A Kubernetes Operator is something that takes a Kubernetes object (usually described in YAML) like this:
apiVersion: s3.services.k8s.aws/v1alpha1
kind: Bucket
metadata:
name: my-bucket
annotations:
services.k8s.aws/region: us-east-1
spec:
name: my-bucket
and creates things, like a S3 bucket in this case. Operators grant you the ability to specify everything you need from your infrastructure as a code. It simplifies things, as all things can be described as YAML.
Consider Kubernetes when managing different applications becomes challenging due to scale. The operator ecosystem enables organizations to create a comprehensive internal development platform, from cloud-native CI/CD environments to sophisticated runtime environments. The possibilities are vast, necessitating a carefully planned journey with an expert that has done this before.
Some tips after the decision has been made
Kubernetes itself consumes resources even without running business workloads. Therefore, an "all-in" approach is recommended. The true benefits of Kubernetes emerge when everything runs within it, leading to cloud-native applications on a state-of-the-art platform.
Carefully plan your Kubernetes execution, starting where you are going to run it. Running a full blown Kubernetes platform requires full-day engineers, as you need to make sure the platform is robust enough and has the necessary resources such as computing, networking and storage. Alternatively, Kubernetes can be run in various public clouds, where upgrades and all the hardware infrastructure is taken care of.
Developers need to be involved from day 1 as they are the ones that are going to use the platform. Too much control leads to a bad experience and forces developers to spend time circumventing badly designed platforms. Instead, consider allowing developers to have sandboxes where experiments and trying new things can be done easily.
When planning a Kubernetes rollout, you need to consider the platform services such as logging, monitoring, telemetry, container storage and so forth. These services must be robust and battle-tested as they are going to be the backbone of your services.
And if you think Kubernetes is not for you
As said, the requirements for running a platform, both hosted and self-hosted are not light. If you are not ready to jump to Kubernetes, alternatives do exist. Serverless frameworks and various cloud provider options like AWS ECS offer robust environments, still offering a lot of the goodies Kubernetes would bring.
At NorthCode, we are ready to guide you on your transformation journey, whether towards Kubernetes or another platform.