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.
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!
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:
Migrate your infrastructure to a public cloud
Implement CI/CD pipelines in the cloud
Optimize your use of a public cloud
Deploy your applications to Kubernetes
Expand the use of containers
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.