When trying to add an additional webhook (e.g., conversion webhook) to an API where other webhooks (like defaulting or validation) are already scaffolded, Kubebuilder throws an error stating that the webhook files already exist. Currently, the only workaround is to use the --force option, which leads to the entire webhook being re-scaffolded, overwriting any custom implementation added by the user. This behavior results in lost code and makes it difficult to incrementally add webhooks.
Kubebuilder should allow adding additional webhooks without forcing the user to use --force and without overwriting existing implementation. It should:
Detect existing webhooks.
Ensure appropriate markers are present.
Scaffold only the necessary webhook logic (e.g., for conversion, validation, or defaulting) specific to the new request, preserving existing code.
The --force option re-scaffolds the entire webhook, leading to the loss of any custom code previously added to the webhook.
Expected Behavior/Request Kubebuilder should scaffold only the specific webhook (e.g., conversion) requested without overwriting the existing webhook code. It should intelligently detect existing webhooks and add the necessary logic for the new type while keeping the current implementation intact.
What broke? What's expected?
When trying to add an additional webhook (e.g., conversion webhook) to an API where other webhooks (like defaulting or validation) are already scaffolded, Kubebuilder throws an error stating that the webhook files already exist. Currently, the only workaround is to use the --force option, which leads to the entire webhook being re-scaffolded, overwriting any custom implementation added by the user. This behavior results in lost code and makes it difficult to incrementally add webhooks.
Kubebuilder should allow adding additional webhooks without forcing the user to use --force and without overwriting existing implementation. It should:
Such as we do in the main.go and for the test-e2e as well. See the WebhookTestUpdater for test-e2e. We need ensure that webhooks follow the same: https://github.com/kubernetes-sigs/kubebuilder/blob/master/pkg/plugins/golang/v4/scaffolds/internal/templates/test/e2e/test.go#L58-L103
Reproducing this issue
Expected Behavior/Request Kubebuilder should scaffold only the specific webhook (e.g., conversion) requested without overwriting the existing webhook code. It should intelligently detect existing webhooks and add the necessary logic for the new type while keeping the current implementation intact.
KubeBuilder (CLI) Version
4.2.0
PROJECT version
No response
Plugin versions
No response
Other versions
No response
Extra Labels
No response