logo

Kubernetes is Your Platform: Design Patterns For Extensible Controllers

2022-05-18

Authors:   Fabrizio Pandini, Rafael Fernández López


Summary

The presentation discusses the extensible design pattern for Kubernetes controllers and the challenges and opportunities in developing them as a community.
  • The extensible design pattern allows for running plugins in a separate process with a dedicated security context and the ability to add or remove plugins at any time.
  • The pattern requires careful consideration of dependencies with external services and organizational implications.
  • The community needs to work together to solve problems such as documenting behavioral dependencies and defining contracts for extensibility points.
  • Frameworks and libraries can be developed to make implementing extensible controllers easier and more standardized.
The speaker gives an example of a plugin that requires a different security context than the core controller and the benefits of running it in a separate process. They also discuss the challenges of documenting behavioral dependencies and the need for a community framework to make implementing extensible controllers easier.

Abstract

Developing Controllers -- as well as other Kubernetes native extensions like admission webhooks -- is quickly becoming a mainstream practice to solve problems in a Kubernetes native way; but while developing a simple controller is pretty straightforward, things become complex as soon as you have behavioral dependencies with other components. But don't worry, this talk will provide you with reusable design patterns derived from the concrete experience and the hard lessons learned by the maintainers of Cluster API and Kubewarden, two projects built around the idea of extensible controllers. How to develop a plug-in system for your controller/admission webhook? How to add to your controller the capability to do RPC calls to pluggable external components? How to orchestrate many controllers co-operating in solving complex tasks? Come to this talk, we got you covered!Click here to view captioning/translation in the MeetingPlay platform!

Materials: