-
Notifications
You must be signed in to change notification settings - Fork 180
Enable pluggable datalayer as experimental feature #1391
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Enable pluggable datalayer as experimental feature #1391
Conversation
Signed-off-by: Etai Lev Ran <elevran@gmail.com>
Signed-off-by: Etai Lev Ran <elevran@gmail.com>
✅ Deploy Preview for gateway-api-inference-extension ready!
To edit notification comments on pull requests, go to your Netlify project configuration. |
Signed-off-by: Etai Lev Ran <elevran@gmail.com>
Signed-off-by: Etai Lev Ran <elevran@gmail.com>
Signed-off-by: Etai Lev Ran <elevran@gmail.com>
Signed-off-by: Etai Lev Ran <elevran@gmail.com>
Signed-off-by: Etai Lev Ran <elevran@gmail.com>
Signed-off-by: Etai Lev Ran <elevran@gmail.com>
Signed-off-by: Etai Lev Ran <elevran@gmail.com>
Signed-off-by: Etai Lev Ran <elevran@gmail.com>
Signed-off-by: Etai Lev Ran <elevran@gmail.com>
const ( | ||
// enableExperimentalDatalayerV2 defines the environment variable | ||
// used as feature flag for the pluggable data layer. | ||
enableExperimentalDatalayerV2 = "ENABLE_EXPERIMENTAL_DATALAYER_V2" |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Doesnt have to be done in this PR, but I'm wondering if we extend:
gateway-api-inference-extension/apix/config/v1alpha1/endpointpickerconfig_types.go
Line 29 in 0eaf592
type EndpointPickerConfig struct { |
To include a field for features to be enabled, we will soon have: Flow Control, SLO prediction, & now the pluggable data layer as experimental, opt-in features. So rather than having various env vars, we keep all feature gating in one place
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
the intention is to have everything configured through the config file eventually.
do you suggest adding a free form of key value pairs as variables (kinda similar to env vars) for the transitionary state when a feature is experimental?
I was proposing this change recently, which I think aligns with your intention - #1288
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Maybe not everything but would be good to discuss the cutline. Def out of scope for this PR
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
right. maybe not everything.
I meant the extension points of those parts :)
anyway, the parameters section the was suggested in #1288 can be leveraged as an solution for experimental features, so instead of having env vars we can just configure a parameter - e.g.,
- name: enable-experimental-datalayer
value: true
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yes, I definitely agree there
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
And we doc ^ features similar to K8s feature gates. We should also drop any "experimental" references and simply call them by feature name under featureGates
. The associated docs will detail feature level, e.g., Alpha
, and a short description of the feature. For example:
apiVersion: inference.networking.x-k8s.io/v1alpha1
kind: EndpointPickerConfig
featureGates:
dataLayer: true # Defaults to false
flowControl: true # Defaults to false until the feature graduates to beta
...
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
cc @shmuelk another useful use case for adding parameters section (key value pairs) to the config API.
to answer the above, we should have those parameters consumable not necessarily though the plugins but also by runner.go (as an example) to enable/disable features. generally speaking it could replace the usage of env vars (e.g., today we have env vars in saturation detector).
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I like @danehans suggestion of a featureGates section. From a config point of view it is simply a map[string]bool.
The code that consumes the feature gates should validate the set and apply the values.
Overloading a shared parameters with so-called well known parameter names is bad idea and will lead to conflicts and confusion.
This LGTM, and just brought this up to @elevran via DM but wanted to bubble it up here, do we want to include this in v1.0 or , since its experimental should it wait for a fast follow of v1.1? We have a few experimental features (that i mention in another comment) that are also going to be landing soon. I prefer to wait but I don't hold that opinion strongly. Holding so this can be discussed/ack'd /lgtm |
finally finished reviewing this PR (had some limited time in the last couple of days). /lgtm
I understand the concern. IMO the risk here is low since most of the changes are in datalayer package and the only changes that are in the bootstrap path are minor updates for being able to select between the old metrics collection or the new data layer. by default the old one should be used. |
[APPROVALNOTIFIER] This PR is APPROVED This pull-request has been approved by: elevran, kfswain, nirrozenbaum The full list of commands accepted by this bot can be found here. The pull request process is described here
Needs approval from an approver in each of these files:
Approvers can indicate their approval by writing |
SGTM |
What type of PR is this?
/kind feature
What this PR does / why we need it:
This is the last of a series of PRs addressing requirements for Pluggable Data Layer (#703).
It enables a use of a new experimental data layer. The new data layer is enabled when
ENABLE_EXPERIMENTAL_DATALAYER_V2
is settrue
.Related PR's: #1351, #1237, #1195, #1154.
Which issue(s) this PR fixes:
Fixes #703
Does this PR introduce a user-facing change?: