Add Gateway API HTTPRoute and simplify installation#71
Conversation
ZelyoConfig was deployed as a post-install/post-upgrade Helm hook, which meant it was not tracked in the release manifest — helm upgrade could not update it, helm rollback could not restore it, and helm get manifest did not show it. Converting to a regular template fixes all three issues. Also streamlines onboarding: removes cert-manager as a required prerequisite (self-signed is the default), reduces quickstart from 5 steps to 3, and adds ZelyoConfig status messaging to NOTES.txt. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Adds an HTTPRoute template alongside the existing Ingress, so users on Gateway API can expose the dashboard without annotations hacks. Configured via httpRoute.parentRefs and httpRoute.hostnames in values. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
There was a problem hiding this comment.
Code Review
This pull request simplifies the installation workflow by making cert-manager optional and defaulting to self-signed certificates for webhook TLS. It also introduces support for Gateway API HTTPRoute and updates the documentation and Helm charts to reflect these changes. Feedback identifies a high-severity issue where removing Helm hooks from the ZelyoConfig template creates a breaking change for existing users, likely causing upgrade failures due to resource ownership conflicts. Additionally, the Helm notes logic for HTTPRoute should be updated to include a fallback display for when the hostnames list is empty to ensure the dashboard URL is always visible when enabled.
I am having trouble creating individual review comments. Click here to see my feedback.
deploy/helm/zelyo-operator/templates/zelyoconfig.yaml (9-10)
Removing the Helm hooks from the ZelyoConfig template is a breaking change for existing installations. When users attempt to run helm upgrade, Helm will try to create the ZelyoConfig resource as a managed object. However, the operation will fail because the resource already exists in the cluster (having been created by the previous hook-based installation) and lacks the ownership labels and annotations required by Helm. This will require manual intervention, such as deleting the CR or manually adding the app.kubernetes.io/managed-by label and meta.helm.sh/release-* annotations, before the upgrade can succeed.
deploy/helm/zelyo-operator/templates/NOTES.txt (51-54)
If httpRoute.enabled is set to true but httpRoute.hostnames is an empty list (which is the default in values.yaml), this range loop will not execute, and no dashboard URL will be displayed in the Helm notes. Since an HTTPRoute without hostnames is valid and matches all hostnames of the parent gateway, it would be better to provide a fallback display (e.g., using a placeholder or just the path) when the hostnames list is empty.
Changes
Features
values.yamlDocumentation Updates
Configuration
httpRoutevalues block withenabled,annotations,parentRefs,hostnames, andpathoptionsvalues.yamlwith HTTPRoute configuration examplesNon-Breaking
All changes are backward compatible. Existing installations continue to work; new Gateway API features are opt-in.