Repository navigation
Add Gateway API support to the lakeFS chart - #444
Closed
ziv-yatzik wants to merge 1 commit into
Closed
ziv-yatzik wants to merge 1 commit into
ziv-yatzik wants to merge 1 commit into
Conversation
charts/lakefs renders only an Ingress, so a deployment behind kgateway has no route at all: every host falls through to the gateway's wildcard fallback. kgateway.enabled renders the same four objects charts/lakefs-cloud does - the HTTPRoute, the DirectResponse it references for /metrics and /_pprof, a TrafficPolicy carrying the route timeouts and retries, and a BackendConfigPolicy raising Envoy's 1024-connection and 15s-idle defaults. Defaults to false, and ingress stays independent, so both objects can exist during a migration and rollback is a DNS change rather than a redeploy.
|
|
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
charts/lakefsrenders only anIngress. Anything deployed from it behind kgateway has no route at all — the host falls through to the gateway's wildcard fallback, which in our staging environment is a302to/not-found. There is no flag to set today; the chart has no Gateway API template of any kind.This adds one, gated on
kgateway.enabled(defaultfalse).What it renders
The same four objects
charts/lakefs-cloudrenders for a cloud installation, so a deployment from either chart behaves identically on the gateway:HTTPRoutegateway.networking.k8s.io/v1/→ the lakeFS Service, plus anypathsOverridesDirectResponsegateway.kgateway.dev/v1alpha1403for/metricsand/_pprof. Not optional — the route references it through anExtensionReffilter, and it replaces nginx'sdeny allserver-snippetTrafficPolicygateway.kgateway.dev/v1alpha1streamIdle: 350sandrequest: 0s. Envoy's default request timeout is 15s, which breaks large uploadsBackendConfigPolicygateway.kgateway.dev/v1alpha1idleTimeout. Envoy defaults to 1024 connections and a 15s idle timeout, both far too lowAn
HTTPRouteon its own is not parity with theIngressit replaces: without theDirectResponsethe deployment exposes/metricsand/_pprof, and without the two policies it is rate-limited and timed out well before nginx would have been.Differences from charts/lakefs-cloud
Same structure and same defaults; three things adapted to this chart's conventions:
lakefs.fullname, not fixed strings. The cloud chart is one release per namespace and can hardcodelakefs-plane-route; here several releases can share a namespace.lakefs.fullnameon.Values.service.port, not a hardcodedlakefs-service:80.pathsOverridesis honoured.ingress.yamlsupports sending a path prefix to a different Service, so the route generates a rule per override to match.hostnamesdefaults to every host iningress.hosts, so a deployment that already configures the Ingress needs onlykgateway.enabled=true.Migration safety
ingress.enabledandkgateway.enabledare independent. Enable both and the workload has anIngressand anHTTPRouteat once — which fleet serves it is then purely a DNS question, and rolling back is a record change rather than a redeploy. That is how we are moving isolakes today.Testing
helm lintclean, with and without the flag.helm templatewithkgateway.enabled=false(the default) renders none of the four objects — no behaviour change for existing users.ExtensionRefname matches the renderedDirectResponse,hostnamespicks upingress.hosts, and apathsOverridesentry produces its own rule ahead of the/catch-all.charts/lakefs-cloudare what serve production isolakes today, including the//-in-key S3 path that motivated theTrafficPolicyand path-handling settings.