Skip to content

Latest commit

 

History

History
140 lines (103 loc) · 10.3 KB

roadmap_2024.md

File metadata and controls

140 lines (103 loc) · 10.3 KB

Kubebuilder Project Roadmap 2024

Updating Scaffolding to Align with the Latest changes of controller-runtime

Status: ✅ Complete (Changes available from release 4.3.0)

Objective: Update Kubebuilder's controller scaffolding to align with the latest changes in controller-runtime, focusing on compatibility and addressing recent updates and deprecations mainly related to webhooks.

Context: Kubebuilder's plugin system is designed for stability, yet it depends on controller-runtime, which is evolving rapidly with versions still under 1.0.0. Notable changes and deprecations, especially around webhooks, necessitate Kubebuilder's alignment with the latest practices and functionalities of controller-runtime. We need update the Kubebuilder scaffolding, samples, and documentation.

References:

(New Optional Plugin) Helm Chart Packaging

Status: ✅ Complete ( Initial version merged #4227 - further improvements and contributions are welcome)

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. For details on this proposal and how to contribute, see GitHub Pull Request #3632.

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 easy integrations with common applications used by administrators.


Transition from Google Cloud Platform (GCP) to build and promote binaries and images

Status:

Objective: Shift Kubernetes (k8s) project infrastructure from GCP to shared infrastructures. Furthermore, move from the registry k8s.gcr.io to registry.k8s.io.

Motivation: The initiative to move away from GCP aligns with the broader k8s project's goal of utilizing shared infrastructures. This transition is crucial for ensuring the availability of the artifacts in the long run and aligning compliance with other projects under the kubernetes-sig org. Issue #2647 provides more details on the move.

Context: Currently, Google Cloud is used only for:

  • Rebuild and provide the images for kube-rbac-proxy:

A particular challenge has been the necessity to rebuild images for the kube-rbac-proxy, which is in the process of being donated to kubernetes-sig. This transition was expected to eliminate the need for continuous re-tagging and rebuilding of its images to ensure their availability to users. The configuration for building these images is outlined here.

  • Build and Promote EnvTest binaries:

The development of Kubebuilder Tools and EnvTest binaries, essential for controller tests, represents another area reliant on k8s binaries traditionally built within GCP environments. Our documentation on building these artifacts is available here.

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.


kube-rbac-proxy's Role in Default Scaffold

Status: ✅ Complete

Objective: Evaluate potential modifications or the exclusion of kube-rbac-proxy from the default Kubebuilder scaffold in response to deprecations and evolving user requirements.

Context: 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.

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 to its external status from Kubernetes-SIG—places a considerable maintenance burden on Kubebuilder maintainers.

Motivations:


Providing Helpers for Project Distribution

Distribution via Kustomize

Status: ✅ Complete

  • Resolution: As of release (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:
kubectl apply -f https://raw.githubusercontent.com/<org>/my-project/<tag or branch>/dist/install.yaml

This enhancement streamlines the process of getting Kubebuilder projects running on clusters, providing a seamless deployment experience.


(Major Release for Kubebuilder CLI 4.x) Removing Deprecated Plugins for Enhanced Maintainability and User Experience

Status: : ✅ Complete - Release was done

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. More Info: GitHub Discussion #3622

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.