So much of the pain teams experience in rolling out Kubernetes comes from having wrong expectations about what this technology can really solve for them. For example, some organizations expect K8s to be cloud vendor agnostic. While the underlying K8s code may be the same no matter the cloud, the tooling and configurations you’ll likely end up using are specific to the K8s service you use. Most oragnizations also expect K8s to be easy to use and maintain. In reality, realizing its full potential requires functional systems and security expertise, which will in turn mean multiple senior ICs with different skill sets.
For Ops, the combination of dependent resources, different environments, legacy and new technology can all crank up K8s migration complexity. Most teams opt for a Helm-based approach to config management, which can quickly blow up the surface area they have to maintain. Because of this, rollouts can be very tricky and even fail. From a developer perspective, being thrown into K8s without the right guardrails and abstractions can significantly hinder productivity.
As a result, organizations are often faced with high lead times and high rollout failure rates, ticket ops and a bunch of frustrated developers.
"Before using Score and the Orchestrator our delivery speed on Kubernetes was frankly a disaster. Now it’s smooth and 3X faster. "
Markus Schünemann - CTO Lano
How Humanitec products help you nail Kubernetes migration and usage
What most teams get wrong is that they expose developers to the fully-fledged complexity of K8s out of the gate. While it’s vital for developers to understand the context under which their workloads run, it's unnecessary to expose all the complexity upfront. This is where the idea of “layered abstractions” comes into play. Humanitec’s approach is to let developers choose how much detail they want to go into.
The workload specification Score provides a unified interface that allows developers to describe their workload and its dependencies in an environment-agnostic way. Score feels like Docker Compose and is an approach individual contributors can master in 30 minutes. Rather than having to deal with dozens of config files per workload, developers use Score as the single config format for all workloads, in any environment.
Reduce # of config files required by 95% and drive standardization
The Score file is a single file that sits next to the workload source code in the repo. The developer describes their workload and the dependencies in an abstract way and with every single deployment and git-push, the Score file finds its way through the CI pipeline to the Platform Orchestrator. The Orchestrator interprets the Score file and identifies the context (e.g., I’m deploying to an environment of type staging). It then fetches the baseline configs for the respective workload (think of them like empty baseline Helm Charts) and creates “fresh” manifests for the target environment.
This is how a “baseline Helm Chart” could look. It allows the organization to enforce certain labels and annotations, side-cars, things like CPU min allocation, or even specific variables. This level of config standardization keeps maintenance and error rate to the minimum.
The bottom line is that this methodology allows developers to master K8s by just tweaking the Score file. This simplicity makes adoption fast and easy. At the same time, Opsdon’t take context away from developers. It’s still absolutely clear how the final K8s manifests are created and the developers can consume these at any point in time, either by downloading them or using Humanitec’s GitOps approach and placing them directly in a repository with every deployment.
Kubernetes is only the start
Humanitec’s rules-driven approach to platform orchestration encompasses much more than K8s and compute. Using the same config structure, developers are able to request and configure resources inside their cluster, as well as out of cluster, e.g. a managed AWS RDS, Cloudflare DNS entries, or a blob storage.
Enable continuous delivery
In addition to creating configs dynamically, Humanitec offers easy integrations with pre-commit tools such as GitLab or Jenkins. This allows you to automate your deployment process, from building your container images to deploying them to your K8s clusters.
Humanitec’s product leaves interface choice to the developers on a workload-to-workload basis. Besides the code-based approach using Score, developers can also use the CLI, UI or API to manage K8s and adjacent resources.