From abd0d468a4d7ecc3f0a1085797a658f11de54c0e Mon Sep 17 00:00:00 2001 From: Camila Macedo Date: Sat, 30 Mar 2024 12:35:09 +0000 Subject: [PATCH] :book: Add Roadmaps to bring visibility and allow better collaboration --- roadmap/README.md | 58 ++++++++++++++++++++ roadmap/roadmap_2024.md | 114 ++++++++++++++++++++++++++++++++++++++++ 2 files changed, 172 insertions(+) create mode 100644 roadmap/README.md create mode 100644 roadmap/roadmap_2024.md diff --git a/roadmap/README.md b/roadmap/README.md new file mode 100644 index 00000000000..18577f14371 --- /dev/null +++ b/roadmap/README.md @@ -0,0 +1,58 @@ +# Kubebuilder Roadmaps + +Welcome to the Kubebuilder Roadmaps directory! This space is dedicated to housing the strategic roadmaps for the +Kubebuilder project, organized by year. Each document within this repository +outlines the key initiatives, objectives, and goals for Kubebuilder, reflecting our +commitment to enhancing the development experience within the Kubernetes ecosystem. + +## Navigation + +Below, you will find links to the roadmap document for each year. These documents provide insights into the +specific objectives set for the project during that time, the motivation behind each goal, and the progress +made towards achieving them: + +- [Roadmap 2024](roadmap_2024.md) + +## Important about Integrations with Other Projects + +As Kubebuilder evolves, we prioritize a focused project scope and minimal reliance on third-party dependencies, +concentrating on features that bring the most value to our community. + +While recognizing the need for flexibility, we opt not to directly support third-party project integrations. +Instead, we've enhanced Kubebuilder as a library, enabling any project to create compatible plugins. +This approach delegates maintenance to those with the deepest understanding of their projects, fostering higher +quality and community contributions. + +We're here to support you in developing your own Kubebuilder plugins. +For guidance on [creating your own plugins](https://kubebuilder.io/plugins/creating-plugins) and contributing, visit: +[Creating External Plugins](https://kubebuilder.io/plugins/external-plugins). + +This strategy empowers our users and contributors to innovate, +keeping Kubebuilder streamlined and focused on essential Kubernetes development functionalities. + +**Therefore, our primary objective remains to offer a CLI tool that assists users in developing +solutions for deployment and distribution on Kubernetes clusters using Golang. +We aim to simplify the complexities involved and speed up the development process, +thereby lowering the learning curve.** + +## Contributing + +Your input and contributions are what make Kubebuilder a continually +evolving and improving project. We encourage the community to participate in discussions, +provide feedback on the roadmaps, and contribute to the development efforts. + +If you have suggestions for future objectives or want to get involved +in current initiatives, please refer to our [contributing guidelines](./../CONTRIBUTING.md) +or reach out to the project maintainers. Please, feel free either +to raise new issues and/or Pull Requests against this repository with your +suggestions. + +## Stay Updated + +For the latest updates, discussions, and contributions to the Kubebuilder project, +please join our community channels and forums. Your involvement is crucial for the +sustained growth and success of Kubebuilder. + +** :tada: Thank you for being a part of the Kubebuilder journey.** + +Together, we are building the future of Kubernetes development. diff --git a/roadmap/roadmap_2024.md b/roadmap/roadmap_2024.md new file mode 100644 index 00000000000..db74dfa8ba8 --- /dev/null +++ b/roadmap/roadmap_2024.md @@ -0,0 +1,114 @@ +# Kubebuilder Project Roadmap 2024 + +## Introduction + +The Kubebuilder project is dedicated to enhancing the development experience in the Kubernetes ecosystem. +As we move into 2024, our focus is on streamlining the project's plugins, improving documentation, and +introducing new functionalities that align with our community's evolving needs. This roadmap outlines the +major initiatives planned for 2024, reflecting our commitment to project maintainability, user experience, +and embracing the latest in Kubernetes development practices. + +### **(Major Release for Kubebuilder CLI 4.x)** Removing Deprecated Plugins for Enhanced Maintainability and User Experience + +**Status:** Work in Progress + +**Objective:** To remove all deprecated plugins from Kubebuilder to improve project maintainability and +enhance user experience. This initiative also includes updating the project documentation to provide clear +and concise information, eliminating any confusion for users. + +**Motivation:** By focusing on removing deprecated plugins—specifically, versions or kinds that can no +longer be supported—we aim to streamline the development process and ensure a higher quality user experience. +Clear and updated documentation will further assist in making development workflows more efficient and less prone to errors. + +**More Info:** [GitHub Discussion #3622](https://github.com/kubernetes-sigs/kubebuilder/discussions/3622) + +### Providing Helpers for Project Distribution + +#### Distribution via Kustomize + +**Status:** Complete + +As of release ([v3.14.0](https://github.com/kubernetes-sigs/kubebuilder/releases/tag/v3.14.0)), +Kubebuilder includes enhanced support for project distribution. +Users can now scaffold projects with a `build-installer` makefile target. +This improvement enables the straightforward deployment of solutions directly to Kubernetes clusters. +Users can deploy their projects using commands like: + +```shell +kubectl apply -f https://raw.githubusercontent.com//my-project//dist/install.yaml +``` + +This enhancement streamlines the process of getting Kubebuilder projects running on clusters, providing a seamless deployment experience. + +#### (New Optional Plugin) Helm Chart Packaging + +**Status:** Proposal in Progress; Seeking Contributions + +**Objective:** We aim to introduce a new plugin for Kubebuilder that packages projects as Helm charts, +facilitating easier distribution and integration of solutions within the Kubernetes ecosystem. + +**Motivation:** The growth of the Kubernetes ecosystem underscores the need for flexible and +accessible distribution methods. A Helm chart packaging plugin would simplify the distribution of the solutions +and allow easily integrations with common applications used by administrators. + +**More Info:** For details on this proposal and how to contribute, +see [GitHub Pull Request #3632](https://github.com/kubernetes-sigs/kubebuilder/pull/3632). + +### Proposal Pending: Seeking Contributions for kube-rbac-proxy's Role in Default Scaffold + +**Status:** Open for Discussion/Proposal Pending; Contributions Welcome + +**Objective:** Evaluate potential modifications or the exclusion of [kube-rbac-proxy](https://github.com/brancz/kube-rbac-proxy) +from the default Kubebuilder scaffold in response to deprecations and evolving user requirements. + +**Context:** [kube-rbac-proxy](https://github.com/brancz/kube-rbac-proxy) , a key component for securing Kubebuilder-generated projects, +faces significant deprecations that impact automatic certificate generation. +For more insights into these challenges, see [Issue #3524](https://github.com/kubernetes-sigs/kubebuilder/issues/3524). + +This situation necessitates a reevaluation of its inclusion and potentially prompts users to +adopt alternatives like cert-manager by default. Additionally, the requirement to manually rebuild +[kube-rbac-proxy images—due](https://github.com/kubernetes-sigs/kubebuilder/blob/master/RELEASE.md#to-build-the-kube-rbac-proxy-images) +to its external status from Kubernetes-SIG—places a considerable maintenance +burden on Kubebuilder maintainers. + +**Motivations:** +- Address kube-rbac-proxy breaking changes/deprecations. + - For further information: [Issue #3524 - kube-rbac-proxy warn about deprecation and future breaking changes](https://github.com/kubernetes-sigs/kubebuilder/issues/3524) +- Feedback from the community has highlighted a preference for cert-manager's default integration, aiming security with Prometheus and metrics. + - More info: [GitHub Issue #3524 - Improve scaffolding of ServiceMonitor](https://github.com/kubernetes-sigs/kubebuilder/issues/3657) +- Desire for kube-rbac-proxy to be optional, citing its prescriptive nature. + - See: [Issue #3482 - The kube-rbac-proxy is too opinionated to be opt-out.](https://github.com/kubernetes-sigs/kubebuilder/issues/3482) +- Reduce the maintainability effort to generate the images used by Kubebuilder projects and dependency within third-party solutions. + - Related issues: + - [Issue #1885 - use a NetworkPolicy instead of kube-rbac-proxy](https://github.com/kubernetes-sigs/kubebuilder/issues/1885) + - [Issue #3230 - Migrate away from google.com gcp project kubebuilder](https://github.com/kubernetes-sigs/kubebuilder/issues/3230) + +**Proposed Solutions:** + +- **Making kube-rbac-proxy Optional:** Offering users the option to include kube-rbac-proxy caters to diverse project +requirements and simplifies the transition towards its potential externalization or removal, +reducing future maintenance efforts. + +- **Leveraging NetworkPolicies:** This alternative focuses on minimizing external dependencies by +utilizing Kubernetes-native solutions like NetworkPolicies, in line with our maintenance reduction goals. + +- **Default Enablement of cert-manager:** While not directly addressing the maintenance concerns related to +kube-rbac-proxy, defaulting to cert-manager responds to community feedback and navigates the upcoming deprecations. +This strategy also acknowledges cert-manager's existing role as a prerequisite for webhooks. + +**We encourage the Kubebuilder community to participate in this discussion, offering feedback and contributing ideas +to refine these proposals. Your involvement is crucial in shaping the future of secure and efficient project scaffolding in Kubebuilder.** + +### :rocket: Overarching Goal for 2024: Reducing the Maintenance Burden + +**Objective:** Across all initiatives, our primary goal for 2024 is to significantly reduce the maintenance burden on +Kubebuilder maintainers. This involves streamlining dependencies, improving documentation, and making strategic +decisions on plugin inclusion. + +**Motivation:** By focusing on reducing the project's maintenance demands, we aim to foster a more sustainable +development environment that can rapidly adapt to the Kubernetes ecosystem's changes without overwhelming our contributors. + +This roadmap reflects our commitment to making Kubebuilder more maintainable, +user-friendly, and adaptable to future Kubernetes developments. We welcome the +community's feedback and contributions as we embark on these initiatives to enhance +the Kubebuilder project in 2024.