As we continue to deploy more applications and services to production in Kubernetes environments, our financial strategies around managing costs in Kubernetes must adapt accordingly. The FinOps Foundation offers a Maturity Model that describes a “Crawl, Walk, Run” approach to help organizations start small and mature these strategies:
This phase includes minimal reporting and tooling, basic key performance indicators (KPIs), basic process and policies, and measurements that will help you understand the benefits of maturing your FinOps function. As it relates to Kubernetes, the goal is to understand what’s happening in your clusters. Start by getting your CPU and memory settings right using open source tools, such as Goldilocks, to identify a baseline for setting your Kubernetes resource requests and limits. If you have a one to three cluster environment with only one or two engineers managing Kubernetes, a tool like Goldilocks can help you:
Set basic KPIs for resource allocation
Implement basic processes for configuring resource requests and limits properly
Begin measuring each application’s resource usage so you can start working on application right-sizing
In this next phase, your org already understands the FinOps capability, you have put automation and processes in place, and you are aware of some difficult edge cases that you have not addressed yet. You probably have more specific KPIs to enable you to measure success. If you’re using Kubernetes at this FinOps phase and are running multiple clusters, you probably also have a larger engineering team working with and managing it.
At this point, it’s important to understand your Kubernetes environment and set up alerts for when applications are not correctly configured. You need to understand how to allocate resources for each workload or group of workloads. This will help you allocate and group cost estimates by clusters, namespaces, or labels, making it easier to align cloud costs to business context. This also helps improve your KPIs, because you can prioritize individual applications based on overall usage and estimated potential savings and find ways to optimize your resource usage and reduce costs without negatively impacting application performance.
In this last FinOps phase, you have a robust model in place with aggressive goals for your KPIs. At this phase, Kubernetes service ownership maps to the FinOps Maturity Model. Service ownership is defined as the ability to enable developers to “code it, ship it, own it.” At the run phase, DevOps and platform engineering leaders have enabled devs by making it easy for them to see and understand the cost for each workload within a cluster and how to make improvements. To reach this step, dev teams need a solution, such as Fairwinds Insights, that automatically scans clusters to show a breakdown of cluster capacity and usage across namespaces, workloads, and labels. It also makes it easy for dev teams to see how much they are spending on idle capacity as well shared vs. app-specific resources.
The combination of FinOps and Kubernetes provides a powerful approach to managing cloud costs while using Kubernetes for container orchestration. The 'Crawl, Walk, Run' methodology allows your organization to adopt and improve these frameworks gradually, which can help your teams deliver improved cost efficiency and operational performance without slowing down the speed of software delivery.
The journey from understanding the basic principles to achieving a more advanced understanding of both FinOps and Kubernetes helps organizations maximize the benefits of both frameworks, which can result in improved operational efficiency and increased business agility. As more orgs and dev teams move apps and services to production environments in Kubernetes, this approach is a practical and effective way to adapt to the dynamic world of cloud-native technology while still maintaining a good understanding of cloud financial management.