Summary Introduction Quick Start Tutorial: Building CronJob What's in a basic project? Every journey needs a start, every program a main Groups and Versions and Kinds, oh my! Adding a new API Designing an API A Brief Aside: What's the rest of this stuff? What's in a controller? Implementing a controller You said something about main? Implementing defaulting/validating webhooks Running and deploying the controller Deploying the cert manager Deploying webhooks Epilogue Tutorial: Multi-Version API Changing things up Hubs, spokes, and other wheel metaphors Implementing conversion and setting up the webhooks Deployment and Testing Migrations Kubebuilder v1 vs v2 Migration Guide Single Group to Multi-Group Reference Generating CRDs Using Finalizers Kind cluster What's a webhook? Admission webhook Markers for Config/Code Generation CRD Generation CRD Validation CRD Processing Webhook Object/DeepCopy RBAC controller-gen CLI Artifacts Writing controller tests Using envtest in integration tests Metrics Appendix: The TODO Landing Page