1M Lines of YAML: Wrangling Kubernetes Configuration for Hundreds of Teams


Authors:   Katrina Verey


The presentation discusses the design principles and implementation of a new system for managing configuration and deployment of applications. The system aims to strike a balance between exposing changes and ensuring meaningful review, while also accommodating the needs of a wide range of users.
  • The system was designed with the goal of making it easy for developers to get started and ensuring commonly needed changes would be simple to make
  • The system includes a config CLI and API, a version schema, and a customization system
  • The config CLI provides a familiar interactive workflow for developers to modify production configuration
  • The config API simplifies the user experience by explicitly encoding the main application properties that developers need to control
  • The version schema allows for formal versioning and evolution of the system over time
  • The customization system allows for advanced users to leverage the full power of Kubernetes APIs when needed
  • The system strikes a balance between exposing changes and ensuring meaningful review, while also accommodating the needs of a wide range of users
The speaker notes that the system was designed based on an analysis of all the applications they had at the time, and that they aimed to provide three buckets of feature sets to accommodate the needs of all users, from those building simple apps to those running key services with considerable customization. They also note that in hindsight, they could have taken the user experience further by hiding default bases and patches behind fields or APIs of their own.


Everyone working with Kubernetes is used to dealing with a lot of YAML. For individual apps, there is a vibrant ecosystem of options for managing it. But what if you're building a platform that will run bespoke workloads for hundreds of teams? How can you make the day one experience simple AND expose the power needed by apps with massive scale AND retain the control you need to keep the platform healthy? In this talk, Katrina will explore the key tenets of distributed configuration management through the lens of Shopify's real-world experience. When Shopify adopted Kubernetes, it chose a simple template-based approach–one that became a nightmare to manage at scale. In 2020, the company successfully transitioned its hundreds of apps to a modular system built around the Kubernetes Resource Model. Come learn the techniques that have made this approach so much more successful, and discover the next-generation SIG CLI tools that can help you apply this pattern in your own organization.


Post a comment

Related work

Conference:  CloudOpen 2022
Authors: Dave McAllister

Authors: Todd Ekenstam, Phillip Wittrock, Aparna Subramanian, Nagarajan Chinnakaveti Thulasiraman

Authors: Bob Killen, Christoph Blecker, Alison Dowdney