|
| 1 | +# Kubebuilder Project Roadmap 2024 |
| 2 | + |
| 3 | +### **(Major Release for Kubebuilder CLI 4.x)** Removing Deprecated Plugins for Enhanced Maintainability and User Experience |
| 4 | + |
| 5 | +**Status:** :construction: Work in Progress |
| 6 | + |
| 7 | +**Objective:** To remove all deprecated plugins from Kubebuilder to improve project maintainability and |
| 8 | +enhance user experience. This initiative also includes updating the project documentation to provide clear |
| 9 | +and concise information, eliminating any confusion for users. |
| 10 | + |
| 11 | +**Motivation:** By focusing on removing deprecated plugins—specifically, versions or kinds that can no |
| 12 | +longer be supported—we aim to streamline the development process and ensure a higher quality user experience. |
| 13 | +Clear and updated documentation will further assist in making development workflows more efficient and less prone to errors. |
| 14 | + |
| 15 | +**More Info:** [GitHub Discussion #3622](https://github.com/kubernetes-sigs/kubebuilder/discussions/3622) |
| 16 | + |
| 17 | +### Providing Helpers for Project Distribution |
| 18 | + |
| 19 | +#### Distribution via Kustomize |
| 20 | + |
| 21 | +**Status:** :white_check_mark: Complete |
| 22 | + |
| 23 | +As of release ([v3.14.0](https://github.com/kubernetes-sigs/kubebuilder/releases/tag/v3.14.0)), |
| 24 | +Kubebuilder includes enhanced support for project distribution. |
| 25 | +Users can now scaffold projects with a `build-installer` makefile target. |
| 26 | +This improvement enables the straightforward deployment of solutions directly to Kubernetes clusters. |
| 27 | +Users can deploy their projects using commands like: |
| 28 | + |
| 29 | +```shell |
| 30 | +kubectl apply -f https://raw.githubusercontent.com/<org>/my-project/<tag or branch>/dist/install.yaml |
| 31 | +``` |
| 32 | + |
| 33 | +This enhancement streamlines the process of getting Kubebuilder projects running on clusters, providing a seamless deployment experience. |
| 34 | + |
| 35 | +#### (New Optional Plugin) Helm Chart Packaging |
| 36 | + |
| 37 | +**Status:** :raised_hands: Proposal in Progress; Seeking Contributions |
| 38 | + |
| 39 | +**Objective:** We aim to introduce a new plugin for Kubebuilder that packages projects as Helm charts, |
| 40 | +facilitating easier distribution and integration of solutions within the Kubernetes ecosystem. |
| 41 | + |
| 42 | +**Motivation:** The growth of the Kubernetes ecosystem underscores the need for flexible and |
| 43 | +accessible distribution methods. A Helm chart packaging plugin would simplify the distribution of the solutions |
| 44 | +and allow easily integrations with common applications used by administrators. |
| 45 | + |
| 46 | +**More Info:** For details on this proposal and how to contribute, |
| 47 | +see [GitHub Pull Request #3632](https://github.com/kubernetes-sigs/kubebuilder/pull/3632). |
| 48 | + |
| 49 | +### Proposal Pending: Seeking Contributions for kube-rbac-proxy's Role in Default Scaffold |
| 50 | + |
| 51 | +**Status:** :raised_hands: Open for Discussion/Proposal Pending; Contributions Welcome |
| 52 | + |
| 53 | +**Objective:** Evaluate potential modifications or the exclusion of [kube-rbac-proxy](https://github.com/brancz/kube-rbac-proxy) |
| 54 | +from the default Kubebuilder scaffold in response to deprecations and evolving user requirements. |
| 55 | + |
| 56 | +**Context:** [kube-rbac-proxy](https://github.com/brancz/kube-rbac-proxy) , a key component for securing Kubebuilder-generated projects, |
| 57 | +faces significant deprecations that impact automatic certificate generation. |
| 58 | +For more insights into these challenges, see [Issue #3524](https://github.com/kubernetes-sigs/kubebuilder/issues/3524). |
| 59 | + |
| 60 | +This situation necessitates a reevaluation of its inclusion and potentially prompts users to |
| 61 | +adopt alternatives like cert-manager by default. Additionally, the requirement to manually rebuild |
| 62 | +[kube-rbac-proxy images—due](https://github.com/kubernetes-sigs/kubebuilder/blob/master/RELEASE.md#to-build-the-kube-rbac-proxy-images) |
| 63 | +to its external status from Kubernetes-SIG—places a considerable maintenance |
| 64 | +burden on Kubebuilder maintainers. |
| 65 | + |
| 66 | +**Motivations:** |
| 67 | +- Address kube-rbac-proxy breaking changes/deprecations. |
| 68 | + - For further information: [Issue #3524 - kube-rbac-proxy warn about deprecation and future breaking changes](https://github.com/kubernetes-sigs/kubebuilder/issues/3524) |
| 69 | +- Feedback from the community has highlighted a preference for cert-manager's default integration, aiming security with Prometheus and metrics. |
| 70 | + - More info: [GitHub Issue #3524 - Improve scaffolding of ServiceMonitor](https://github.com/kubernetes-sigs/kubebuilder/issues/3657) |
| 71 | +- Desire for kube-rbac-proxy to be optional, citing its prescriptive nature. |
| 72 | + - See: [Issue #3482 - The kube-rbac-proxy is too opinionated to be opt-out.](https://github.com/kubernetes-sigs/kubebuilder/issues/3482) |
| 73 | +- Reduce the maintainability effort to generate the images used by Kubebuilder projects and dependency within third-party solutions. |
| 74 | + - Related issues: |
| 75 | + - [Issue #1885 - use a NetworkPolicy instead of kube-rbac-proxy](https://github.com/kubernetes-sigs/kubebuilder/issues/1885) |
| 76 | + - [Issue #3230 - Migrate away from google.com gcp project kubebuilder](https://github.com/kubernetes-sigs/kubebuilder/issues/3230) |
| 77 | + |
| 78 | +**Proposed Solutions:** |
| 79 | + |
| 80 | +- **Making kube-rbac-proxy Optional:** Offering users the option to include kube-rbac-proxy caters to diverse project |
| 81 | +requirements and simplifies the transition towards its potential externalization or removal, |
| 82 | +reducing future maintenance efforts. |
| 83 | + |
| 84 | +- **Leveraging NetworkPolicies:** This alternative focuses on minimizing external dependencies by |
| 85 | +utilizing Kubernetes-native solutions like NetworkPolicies, in line with our maintenance reduction goals. |
| 86 | + |
| 87 | +- **Default Enablement of cert-manager:** While not directly addressing the maintenance concerns related to |
| 88 | +kube-rbac-proxy, defaulting to cert-manager responds to community feedback and navigates the upcoming deprecations. |
| 89 | +This strategy also acknowledges cert-manager's existing role as a prerequisite for webhooks. |
| 90 | + |
| 91 | +**We encourage the Kubebuilder community to participate in this discussion, offering feedback and contributing ideas |
| 92 | +to refine these proposals. Your involvement is crucial in shaping the future of secure and efficient project scaffolding in Kubebuilder.** |
| 93 | + |
| 94 | +### :rocket: Overarching Goal for 2024: Reducing the Maintenance Burden with Major Release and Removal of Deprecated features/plugins |
| 95 | + |
| 96 | +**Objective:** Across all initiatives, our primary goal for 2024 is to significantly reduce the maintenance burden on |
| 97 | +Kubebuilder maintainers. This involves streamlining dependencies, improving documentation, and making strategic |
| 98 | +decisions on plugin inclusion. |
| 99 | + |
| 100 | +**Motivation:** By focusing on reducing the project's maintenance demands, we aim to foster a more sustainable |
| 101 | +development environment that can rapidly adapt to the Kubernetes ecosystem's changes without overwhelming our contributors. |
| 102 | + |
| 103 | +This roadmap reflects our commitment to making Kubebuilder more maintainable, |
| 104 | +user-friendly, and adaptable to future Kubernetes developments. We welcome the |
| 105 | +community's feedback and contributions as we embark on these initiatives to enhance |
| 106 | +the Kubebuilder project in 2024. |
0 commit comments