Kubernetes Maturity: Building Confidence

In our earlier articles, we introduced the Kubernetes Maturity Model, discussed how to prepare for Kubernetes, explored the transformation phase and planned deployment. Now, you’re ready to build confidence in your ability to deploy and ship features successfully.

To be effective in this phase, you need to have completed a few important steps. You have at least some workloads running in production, you’ve established your CI/CD pipeline as a tested and functional workflow to build and deploy workloads and you’ve started to use monitoring and observability tools to help you identify gaps in your Kubernetes infrastructure.

DevOps Connect:DevSecOps @ RSAC 2022

Building Kubernetes Confidence

The exciting part of this phase of Kubernetes maturity is that you’re building on a solid foundation. It may feel like a slow process, because even though you’re starting to understand the nuances of Kubernetes, you’re also repeating tasks and seeing similar results. Think of it as driving a car. When you first get behind the wheel, you don’t know a whole lot about what you’re doing, and there’s a lot to learn. How hard do you press the brake pedal or accelerator? How do you adjust your mirrors appropriately? How fast are you comfortable driving? As you build confidence, you’ll become comfortable turning, driving on the highway and even carrying passengers. Initially, you learned the basics of driving a car, but now you understand more of the details of this complex process and are becoming more comfortable with it.

Building your confidence in Kubernetes is a very similar experience. You’ll probably feel fairly comfortable with some of your regular activities, but lack confidence in others. For example, as you become more familiar with liveness and readiness probes, you’ll gain a better understanding of how seemingly minor configuration changes can impact the behavior of your workload. That increase in familiarity helps you make changes that improve the performance of your workloads. One area where you might lack confidence may be around the security policies you put in place, because you’re not sure how to ensure that all your clusters are properly configured to require compliance with those policies.

As familiarity with Kubernetes increases, you can build your confidence further by training others on your team. During that process, you’ll probably realize that you know more than you thought. As your confidence continues to increase, you’re ready to start experimenting with your own ideas for making improvements. This is a great phase, because you’re comfortable enough to get a little creative and indulge your curiosity. You’re ready to experiment—and you know that there’s no need to panic if something breaks in your Kubernetes cluster. Your increased confidence also means that you know how to fix it if something goes wrong.

Gaining Core Competency

This phase is when you’ll increase your competency around any non-standard activities that you’re performing and feel more comfortable when changing and customizing default settings. You’ll also become more comfortable selecting and implementing third-party tools that can enhance the Kubernetes experience in your organization. There are a lot of great open source tools available that can help you improve your Kubernetes security posture, including Polaris and Kubesec. Other tools can help set correct resource utilization (Goldilocks) or make upgrades easier (Nova). The Cloud Native Computing Foundation (CNCF) is a great place to look at different projects and help you find what you’re looking for.

Improving Troubleshooting Skills

In addition to your new confidence with experimentation, this maturity phase is when you gain confidence in your ability to troubleshoot. Now, instead of feeling anxious when one application crashes every time you deploy (for no reason you’ve been able to figure out), you’re now ready to look at the configuration and resource settings. It’s becoming easier for you to understand the impact these settings have on your application and why you need to give the application more resources so it can start up properly instead of crashing. This is also when you’ll create a repeatable cycle of troubleshooting, so you can make changes quickly and keep tweaking until it’s working as desired.

Challenges and Outcomes

Although this phase is really about building your confidence, that doesn’t mean that you won’t have some worries and setbacks. That’s OK; Kubernetes is complex, and even though you’re more comfortable exploring and troubleshooting, you’ll likely still worry about single points of failure and how to go about troubleshooting issues. Your team practices may not be unified, and you may second guess some of the decisions you made earlier. You may even find that you’re missing some functionality or that you’re seeing disappointing performance, but you haven’t yet figured out how to resolve those issues.

This is when you need to remember that, just like learning to drive a car, experience is what helps you truly build confidence in your Kubernetes cluster. Your team may lack the time necessary to learn on the job and truly gain confidence, but training, professional and managed services, audits and Kubernetes security and compliance software can help you manage some of the complexity. Remember, you’ve come a long way! One of the best outcomes of this phase is that you’re comfortable experimenting with Kubernetes, you’ve implemented standards around infrastructure as code (IaC) and configuration, you’re ready to start monitoring and better understand your service challenges and you’re confident in selecting add-ons. You’re ready to move to the next phase of the Maturity Model, where you’ll improve cluster security, efficiency and reliability. Soon, you’ll be ready to focus on your business instead of on maintaining Kubernetes.