Recently I undertook the FinOps Foundation training and became certified. If you are looking to expand your FinOps knowledge, I’d highly recommend it. The training is vast covering the FinOps framework and principles, stakeholders and the different phases of maturity - inform, optimize and operate.
At Fairwinds, we are focused on container and Kubernetes configuration and supporting the technology with a governance platform that includes ensuring K8s is optimized to avoid unnecessary cloud costs. As I undertook the training, there were three things that stuck out to me in regards to Kubernetes.
Cloud usage optimization is one of the core domains outlined by the FinOps Foundation. It says, “the organization identifies and takes action to match running cloud resources to the actual demand of the workloads running at any given time… Using the right resources, in the right size, only when we need them to produce business value is ultimately what the variable use model of cloud allows us to do to maximize value to our business.”
A challenge with Kubernetes is how to predict and then optimize your cloud spend to ensure you are not over provisioning, or worse over spending on resources. With Kubernetes, you need to right-size application CPU and memory and set it up to scale successfully. Users need to set specific resource requests and limits for each workload. With sensible and correct limits and requests, CPU and memory can be maximized. Setting limits too low on an application will cause problems. For example, if memory limits are too low, Kubernetes is bound to kill an application for violating its limits. Meanwhile, if set too high, resources will be overallocated resulting in higher bills.
While Kubernetes best practices dictate that resource limits and requests on workloads should consistently be set, without a tool, it’s guess work. Too often teams never set requests or limits at all, while others set them too high during initial testing and then never course correct. The key to ensuring scaling actions work properly is dialing in your resource limits and requests on each pod so workloads run efficiently.
When implementing a FinOps framework, be sure to consider what tools you can use to understand your CPU and memory usage. That will help inform (one of the stages of the Foundations’ model) how a team can only use what is needed.
There are two tools to note: Goldilocks, an open source project, that helps right size Kubernetes workloads to get them “just right” and Fairwinds Insights, a cost optimization tool that is also FinOps certified.
In the operate phase of the FinOps Foundation’s framework, it outlines that “Organizations start to continuously evaluate business objectives and the metrics they are tracking against those objectives, and how they are trending.” Success in this phase though is based on the strategic stakeholders working together. You need teams reporting results, discussing them and making informed decisions based on the earlier phases.
A key takeaway to the training, that really resonates with Kubernetes users, is to “Put information in the path of engineers (and others): Utilize dashboards, meet them where they work (Slack, Confluence, JIRA, Teams), or through product design tools.”
This is vital to the success of all tools you want teams to embrace, but with Kubernetes, not all teams are equipped to work in a command line. Your teams will be using a mix of tooling to help them “go faster” - code and ship faster. When you get in the way of the development lifecycle, you will have resistance. The information that becomes important to the FinOps model needs to be readily available and digestible to all stakeholders. That’s why it is so important that whatever the strategy you are undertaking, is put in the path of engineers.
At Fairwinds, we ensure that the cost outcomes available in Fairwinds Insights offer recommendations to avoid wasting cloud resources. Those recommendations are turned into Action Items within Insights, but we don’t make engineers jump into the dashboard to take action. Instead, we make those Action Items available through integrations with Jira, Slack, Azure DevOps and more. It helps make FinOps initiatives possible in Kubernetes.
Having the right tools in place to support your FinOps adoption makes sense. There are many tools available in varying degrees of functionality and price point. The Foundation says that “It is crucial to find the right tools to allow you to get the data you need at the right level of detail for your maturity level to make the real time decisions you need to make.”
Getting this “right data” in Kubernetes can be a big headache for teams. First, it's an ephemeral environment that constantly changes. How do you measure that? How do you know what a container used when it no longer exists? And do you need that level of detail as you start on your FinOps journey or do you simply need to know how to size an application to start?
Goldilocks is an open source tool that helps operations team right-size applications i.e. “get them just right.” It’s a good stepping stone as you embrace FinOps and use Kubernetes. As your cluster and node count grows, that’s where a team will need more data to make the right decisions. This is where tools like Fairwinds Insights help. Insights provides all the stakeholders involved in the FinOps adoption to see how many resources Kubernetes and containers are consuming. It offers suggestions on how to right-size and cost savings figures. Plus it’s easily digestible for a financial team and a DevOps team. This is especially important because a lot of FinOps leaders, or those launching a FinOps practice, do not always know the questions to ask of the DevOps team. You need the right tool and while you’ll need tooling at the cloud level, as you adopt cloud native/Kubernetes, you’ll need a tool that bridges the gap between FinOps and DevOps.
Kubernetes can be the blackhole of FinOps, but it needn’t be. By using the right tools, in the path of engineers, you can optimize your cloud native resources. Fairwinds Insights can help you embrace FinOps and a service ownership model, where devs and operations teams can optimize cost and partner with finance.
If you are working to apply a FinOps model to Kubernetes, get in touch. We can help.