How to adopt Kubernetes without an entire DevOps team

Kubernetes is great technology and there are significant benefits from it, if it’s employed properly.
— Shuveb Hussain

One of the main roadblocks for organizations looking to scale is the fear of “everything breaking” when they upgrade their infrastructure. In ‘14, startups loved Mark Zuckerberg’s motto “move fast and break things,” but for a growing business, there are significant downtime risks associated with upgrading infrastructure.

Man cannot decide whether to click the “upgrade” or “leave it alone” button. Either option may cause the app to break!

That’s where Kubernetes comes in. Kubernetes works hand-in-hand with continuous integration and continuous deployment (CI/CD) workflows, allowing your organization to:

  • Automate deployments and updates

  • Auto-scale resources in real-time

  • Prioritize higher availability 

  • And more!

In August 2019, Shuveb Hussain, the author of the blog Unixism, posted a manager’s guide to Kubernetes. In the post, Hussain addresses some of the benefits and “gotchas” of adopting Kubernetes in an organization—one of which is having a team of DevOps trained in the open-source container orchestration system.

But what if you don’t have an entire DevOps team at your disposal?

Does this mean that you cannot adopt Kubernetes, even though there are obvious benefits to your infrastructure? In ‘15, this was probably the case. However, as both Kubernetes and the state of DevOps continues to grow, in 2020 it is possible to adopt Kubernetes without an entire DevOps team.

Today, we’re going to tell you how you can modernize your stack without having to hire an entire DevOps team.

Get on the cloud

Although it is not necessary to be on the cloud to run Kubernetes, migrating to the cloud presents benefits such as cutting hardware costs, automating system maintenance (including security updates), and allowing your infrastructure to grow with your business. 

In 2019, the popular cloud platforms included: Amazon Web Services (AWS), Google Cloud (GCP), and Microsoft Azure. At stack.io, our preferred platform is Amazon Web Services and many of our tips and tricks are for AWS.

Containerize your app

Containerization allows Kubernetes and its tools to communicate with your app regardless of what language it's written in. The process differs by the language of the codebase and the app component(s) that need to be containerized. 

In theory, you could containerize every part of your app, but that doesn’t mean that you should! Some app components work best with Kubernetes when they’re not containerized. For example, the industry standard for using databases with Kubernetes is to migrate the data to a secure distributed relational database service like Amazon Relational Database Service (Amazon RDS). 

Part of the process is determining what to containerize and what to connect to Kubernetes via an alternative method.

Start developing a DevOps culture

After moving your app to the cloud and containerizing its components, although you don’t need an entire team, you will need someone who can update and maintain your cluster—this could be a dedicated hire or a developer who can commit some time to the operation side of things. 

At least one person in your organization will need to know how to use Kubernetes, but it never hurts to have all of your developers have an understanding of the topic!

The presence of a strong DevOps culture means that devs are responsible for running services they develop in production. They always look for ways to make themselves productive by finding means to automate things on the operations side.
— Shuveb Hussain

Participate in the Kubernetes community

In the meanwhile, if you don’t currently have a person dedicated to operations, get your team involved in the Kubernetes community. 

The Kubernetes community is filled with discussions from their discussion board, to Twitter, to the various Stack Overflow threads. Every year the community will also host tons of events and meetups across the world. The local Kubernetes and Cloud Native meetup group in Toronto can be found here.

These Kubernetes discussions and events will help you familiarize yourself with the container orchestration platform as well as where to find information when the time comes. What you’ll notice about the Kubernetes community is that we love documentation! For every basic Kubernetes function or common problem, someone will have recorded how to navigate the scenario.

Use a managed service

The years of work put into Kubernetes by the community also means that there now exist standardized ways to do many of Kubernetes’ basic functions. Tech giants like Amazon, Google, and Microsoft have used this knowledge to create what we call managed Kubernetes services.

A managed Kubernetes service will take care of major Kubernetes master services like setup and maintenance, so that you can spend more time using the container orchestration platform, rather than configuring it. 

Nowadays, it’s impractical to set up Kubernetes from scratch. A managed service is not only easier to set up, it is easier for one person to manage and update. 

In 2019, the popular managed Kubernetes services included: AWS Elastic Kubernetes Service (Amazon EKS), Google Kubernetes Engine (GKE), and Azure Kubernetes Service (AKS).

Outsource the grunt work

Despite the rise of managed Kubernetes services, it may be discouraging to find out that there’s still a steep learning curve for Kubernetes. However, we have some good news: the majority of the grunt work comes from the actual setup

Once your application is running on Kubernetes, the learning curve for deployments is much, MUCH lower. This stays true to the idea that when you outsource the setup to a team of Kubernetes experts, you’ll only need one dedicated ops member to continue maintaining and upgrading your infrastructure.

When it comes to a complete Kubernetes setup, a team of operation engineers can:

  1. Migrate your infrastructure to a public cloud

  2. Implement CI/CD pipelines in the cloud

  3. Optimize your use of a public cloud

  4. Deploy your applications to Kubernetes

  5. Expand the use of containers

  6. And more! 

Embrace fractional ops 

Fractional operations engineers, different from part-time operations engineers, work for multiple companies throughout the work week. The benefit of this type of employment structure is that you can:

  • Hire an entire team of operations, only when you need one

  • Leverage the experience and knowledge that the team gathers from working on projects for other companies

  • Save your operations person time wasted on solving problems that have already been solved

At the end of the day, if your cluster needs additional features or upgrades that your dedicated Kubernetes employee does not have time to do, stack.io is happy to act as an extension of your team and take on any additional cloud projects including the implementation of Infrastructure-as-Code, Application Performance Monitoring (APM) setup, as well as centralized logging and monitoring, and more.

Conclusion

In 2020, it is no longer necessary for you to hire an entire DevOps team to set up and manage Kubernetes for your infrastructure. Instead, by leveraging containerization and the cloud, the documentation and tools made available by the community, and fractional operations, you can start using Kubernetes with only one person dedicated to operations.

How can we help you adopt Kubernetes in 2020? Send us a message and let us know how we can help.