Hey everyone! I'm aiming to level up my Kubernetes skills by diving into building operators and controllers that serve custom needs. I'm struggling to come up with a project idea that truly adds value and addresses common issues faced by Kubernetes users. There are already so many operators and CRDs available that it feels daunting to create something that stands out.
Could you suggest some small to medium-sized project ideas that I can develop? I'd love to leverage custom resources, build admission controllers, and work with Golang in the process. Also, if any of you have built operators for broader company solutions, could you share examples that are versatile rather than tied to specific use cases? Thanks in advance!
6 Answers
Why not try re-implementing an existing operator to learn? For example, take a look at the Harbour operator and see how it’s built. It’s a great way to understand the fundamentals while giving you something tangible to compare with. I do this when picking up new languages too; it’s fun until I lose interest!
Check out the sample-controller on GitHub! There are tools like kube-builder and operator-sdk that can help you get started, though I haven’t used them myself. For your project, think small—there are lots of little problems within Kubernetes that need solving. For instance, I’m frustrated with how random secret generation is handled; that could be a great small project!
I've created an operator that scales deployments in a given namespace based on time—like scaling down after hours and back up in the morning. It uses a custom resource definition to define scaling schedules, which can be quite complex but incredibly educational. You'd be surprised how many little details there are to manage, like idempotency and race conditions. It's definitely a rewarding challenge!
You don't need to create a groundbreaking operator to improve your skills. A project like distributing secrets across different namespaces could be a practical exercise and very useful!
One interesting idea could be to develop an operator that commits resource changes to Git, enabling other clusters to pull those changes. Start with something simple like ConfigMaps or Deployments and ensure you clean up any resources. This could support use cases like multi-cluster scheduling or config mirroring, and you can expand it as you get comfortable.
I'd love to see an operator that sets up an entire stack automatically. For example, one that pulls the latest cert-manager, Prometheus, configures monitoring, and handles policy enforcement. This would save a lot of initial setup time before deploying any actual applications!

Absolutely! It’s all about iterating and learning through practical applications.