Skip to content

Commit 51e36a5

Browse files
📖 Add Roadmaps to bring visibility and allow better collaboration
1 parent cdc9c48 commit 51e36a5

File tree

2 files changed

+206
-0
lines changed

2 files changed

+206
-0
lines changed

roadmap/README.md

+57
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
# Kubebuilder Roadmaps
2+
3+
**Welcome to the Kubebuilder Roadmaps directory!**
4+
5+
This space is dedicated to housing the strategic roadmaps for the
6+
Kubebuilder project, organized by year. Each document within this repository
7+
outlines the key initiatives, objectives, and goals for Kubebuilder, reflecting our
8+
commitment to enhancing the development experience within the Kubernetes ecosystem.
9+
10+
Below, you will find links to the roadmap document for each year. These documents provide insights into the
11+
specific objectives set for the project during that time, the motivation behind each goal, and the progress
12+
made towards achieving them:
13+
14+
- [Roadmap 2024](roadmap_2024.md)
15+
16+
## :point_right: New plugins/RFEs to provide integrations within other Projects
17+
18+
As Kubebuilder evolves, we prioritize a focused project scope and minimal reliance on third-party dependencies,
19+
concentrating on features that bring the most value to our community.
20+
21+
While recognizing the need for flexibility, we opt not to directly support third-party project integrations.
22+
Instead, we've enhanced Kubebuilder as a library, enabling any project to create compatible plugins.
23+
This approach delegates maintenance to those with the deepest understanding of their projects, fostering higher
24+
quality and community contributions.
25+
26+
We're here to support you in developing your own Kubebuilder plugins.
27+
For guidance on [Creating Your own plugins](https://kubebuilder.io/plugins/creating-plugins).
28+
29+
This strategy empowers our users and contributors to innovate,
30+
keeping Kubebuilder streamlined and focused on essential Kubernetes development functionalities.
31+
32+
**Therefore, our primary objective remains to offer a CLI tool that assists users in developing
33+
solutions for deployment and distribution on Kubernetes clusters using Golang.
34+
We aim to simplify the complexities involved and speed up the development process,
35+
thereby lowering the learning curve.**
36+
37+
## :steam_locomotive: Contributing
38+
39+
Your input and contributions are what make Kubebuilder a continually
40+
evolving and improving project. We encourage the community to participate in discussions,
41+
provide feedback on the roadmaps, and contribute to the development efforts.
42+
43+
If you have suggestions for future objectives or want to get involved
44+
in current initiatives, please refer to our [contributing guidelines](./../CONTRIBUTING.md)
45+
or reach out to the project maintainers. Please, feel free either
46+
to raise new issues and/or Pull Requests against this repository with your
47+
suggestions.
48+
49+
## :loudspeaker: Stay Tuned
50+
51+
For the latest updates, discussions, and contributions to the Kubebuilder project,
52+
please join our community channels and forums. Your involvement is crucial for the
53+
sustained growth and success of Kubebuilder.
54+
55+
**:tada: Thank you for being a part of the Kubebuilder journey.**
56+
57+
Together, we are building the future of Kubernetes development.

roadmap/roadmap_2024.md

+149
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,149 @@
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+
---
18+
### Proposal Pending: Seeking Contributions for kube-rbac-proxy's Role in Default Scaffold
19+
20+
**Status:** :raised_hands: Open for Discussion/Proposal Pending; Contributions Welcome
21+
22+
**Objective:** Evaluate potential modifications or the exclusion of [kube-rbac-proxy](https://github.com/brancz/kube-rbac-proxy)
23+
from the default Kubebuilder scaffold in response to deprecations and evolving user requirements.
24+
25+
**Context:** [kube-rbac-proxy](https://github.com/brancz/kube-rbac-proxy) , a key component for securing Kubebuilder-generated projects,
26+
faces significant deprecations that impact automatic certificate generation.
27+
For more insights into these challenges, see [Issue #3524](https://github.com/kubernetes-sigs/kubebuilder/issues/3524).
28+
29+
This situation necessitates a reevaluation of its inclusion and potentially prompts users to
30+
adopt alternatives like cert-manager by default. Additionally, the requirement to manually rebuild
31+
[kube-rbac-proxy images—due](https://github.com/kubernetes-sigs/kubebuilder/blob/master/RELEASE.md#to-build-the-kube-rbac-proxy-images)
32+
to its external status from Kubernetes-SIG—places a considerable maintenance
33+
burden on Kubebuilder maintainers.
34+
35+
**Motivations:**
36+
- Address kube-rbac-proxy breaking changes/deprecations.
37+
- For further information: [Issue #3524 - kube-rbac-proxy warn about deprecation and future breaking changes](https://github.com/kubernetes-sigs/kubebuilder/issues/3524)
38+
- Feedback from the community has highlighted a preference for cert-manager's default integration, aiming security with Prometheus and metrics.
39+
- More info: [GitHub Issue #3524 - Improve scaffolding of ServiceMonitor](https://github.com/kubernetes-sigs/kubebuilder/issues/3657)
40+
- Desire for kube-rbac-proxy to be optional, citing its prescriptive nature.
41+
- See: [Issue #3482 - The kube-rbac-proxy is too opinionated to be opt-out.](https://github.com/kubernetes-sigs/kubebuilder/issues/3482)
42+
- Reduce the maintainability effort to generate the images used by Kubebuilder projects and dependency within third-party solutions.
43+
- Related issues:
44+
- [Issue #1885 - use a NetworkPolicy instead of kube-rbac-proxy](https://github.com/kubernetes-sigs/kubebuilder/issues/1885)
45+
- [Issue #3230 - Migrate away from google.com gcp project kubebuilder](https://github.com/kubernetes-sigs/kubebuilder/issues/3230)
46+
47+
**Proposed Solutions:**
48+
49+
- **Making kube-rbac-proxy Optional:** Offering users the option to include kube-rbac-proxy caters to diverse project
50+
requirements and simplifies the transition towards its potential externalization or removal,
51+
reducing future maintenance efforts.
52+
53+
- **Leveraging NetworkPolicies:** This alternative focuses on minimizing external dependencies by
54+
utilizing Kubernetes-native solutions like NetworkPolicies, in line with our maintenance reduction goals.
55+
56+
- **Default Enablement of cert-manager:** While not directly addressing the maintenance concerns related to
57+
kube-rbac-proxy, defaulting to cert-manager responds to community feedback and navigates the upcoming deprecations.
58+
This strategy also acknowledges cert-manager's existing role as a prerequisite for webhooks.
59+
60+
---
61+
### Transition from Google Cloud Platform (GCP)
62+
63+
**Status:** :construction: In Progress / (Blocker due challenges faced)
64+
65+
**Objective:** Shift Kubernetes (k8s) project infrastructure from GCP to shared infrastructures, addressing the need
66+
for image re-tagging and rebuilding without GCP reliance. Move away from the registry `k8s.gcr.io` to `registry.k8s.io`.
67+
68+
**Context:** The initiative to move away from GCP aligns with the broader k8s project's
69+
goal of utilizing shared infrastructures. This transition is crucial for enhancing
70+
collaboration and reducing dependencies on specific cloud providers.
71+
[Issue #2647](https://github.com/kubernetes/k8s.io/issues/2647) provides more details on the move.
72+
73+
Currently, Google Cloud is used only:
74+
75+
- **(Need A)Rebuild and provide the images for kube-rbac-proxy:**
76+
77+
A particular challenge has been the necessity to rebuild images for the
78+
[kube-rbac-proxy](https://github.com/brancz/kube-rbac-proxy), which is in the process of being
79+
donated to kubernetes-sig. This transition was expected to eliminate the need for
80+
continuous re-tagging and rebuilding of its images to ensure their availability to users.
81+
The configuration for building these images is outlined
82+
[here](https://github.com/kubernetes-sigs/kubebuilder/blob/master/RELEASE.md#to-build-the-kube-rbac-proxy-images).
83+
84+
- **(Need B) Build and Promote EnvTest binaries**:
85+
86+
The development of Kubebuilder Tools and EnvTest binaries,
87+
essential for controller tests, represents another area reliant on k8s binaries
88+
traditionally built within GCP environments. Our documentation on building these artifacts is
89+
available [here](https://github.com/kubernetes-sigs/kubebuilder/blob/master/RELEASE.md#to-build-the-kubebuilder-tools-artifacts-required-to-use-env-test).
90+
91+
**Challenges/Actions and Status:**
92+
- **kube-rbac-proxy Images:** **(Blocked)** Ensuring images are available to users while moving away from GCP. We've been implementing a new recipe for non-GCP image pushing [seen here](https://github.com/kubernetes/test-infra/blob/master/config/jobs/image-pushing/k8s-staging-kubebuilder.yaml). However, we confirmed that does not work because the project is outside from Kubernets-Sig org.
93+
- **EnvTest binaries:** We seek assistance from k8s-infra to know how we could use this shared infrastructures to build those. Maybe an alternative option is to use go-releaser and publish the artifacts via GitHub.
94+
95+
---
96+
### Providing Helpers for Project Distribution
97+
98+
#### Distribution via Kustomize
99+
100+
**Status:** :white_check_mark: Complete
101+
102+
As of release ([v3.14.0](https://github.com/kubernetes-sigs/kubebuilder/releases/tag/v3.14.0)),
103+
Kubebuilder includes enhanced support for project distribution.
104+
Users can now scaffold projects with a `build-installer` makefile target.
105+
This improvement enables the straightforward deployment of solutions directly to Kubernetes clusters.
106+
Users can deploy their projects using commands like:
107+
108+
```shell
109+
kubectl apply -f https://raw.githubusercontent.com/<org>/my-project/<tag or branch>/dist/install.yaml
110+
```
111+
112+
This enhancement streamlines the process of getting Kubebuilder projects running on clusters, providing a seamless deployment experience.
113+
114+
#### (New Optional Plugin) Helm Chart Packaging
115+
116+
**Status:** :raised_hands: Proposal in Progress; Seeking Contributions
117+
118+
**Objective:** We aim to introduce a new plugin for Kubebuilder that packages projects as Helm charts,
119+
facilitating easier distribution and integration of solutions within the Kubernetes ecosystem.
120+
121+
**Motivation:** The growth of the Kubernetes ecosystem underscores the need for flexible and
122+
accessible distribution methods. A Helm chart packaging plugin would simplify the distribution of the solutions
123+
and allow easily integrations with common applications used by administrators.
124+
125+
**More Info:** For details on this proposal and how to contribute,
126+
see [GitHub Pull Request #3632](https://github.com/kubernetes-sigs/kubebuilder/pull/3632).
127+
128+
---
129+
### Updating Scaffolding to Align with the Latest changes of controller-runtime
130+
131+
**Status:** :raised_hands: Seeking help from the contributors
132+
133+
**Objective:** Update Kubebuilder's controller scaffolding to align with the latest changes
134+
in controller-runtime, focusing on compatibility and addressing recent updates and deprecations
135+
related to webhooks.
136+
137+
**Context:** Kubebuilder's plugin system is designed for stability, yet it depends on controller-runtime,
138+
which is evolving rapidly with versions still under 1.0.0. Notable changes and deprecations,
139+
especially around webhooks, necessitate Kubebuilder's alignment with the latest practices
140+
and functionalities of controller-runtime. We need update the Kubebuilder scaffolding,
141+
samples, and documentation.
142+
143+
**References:**
144+
- [Issue - Deprecations in Controller-Runtime and Impact on Webhooks](https://github.com/kubernetes-sigs/kubebuilder/issues/3721) - An issue detailing the deprecations in controller-runtime that affect Kubebuilder's approach to webhooks.
145+
- [PR - Update to Align with Latest Controller-Runtime Webhook Interface](https://github.com/kubernetes-sigs/kubebuilder/pull/3399) - A pull request aimed at updating Kubebuilder to match controller-runtime's latest webhook interface.
146+
- [PR - Enhancements to Controller Scaffolding for Upcoming Controller-Runtime Changes](https://github.com/kubernetes-sigs/kubebuilder/pull/3723) - A pull request proposing enhancements to Kubebuilder's controller scaffolding in anticipation of upcoming changes in controller-runtime.
147+
148+
**We encourage the Kubebuilder community to participate in this discussion, offering feedback and contributing ideas
149+
to refine these proposals. Your involvement is crucial in shaping the future of secure and efficient project scaffolding in Kubebuilder.**

0 commit comments

Comments
 (0)