feat: promote InferenceSet to v1beta1 and enable EnableInferenceSetController by default - #2112
Merged
zhuangqh merged 33 commits intoJun 22, 2026
Conversation
andyzhangx
force-pushed
the
feat/inferenceset-beta-promotion
branch
from
June 17, 2026 07:22
a300da2 to
958f8da
Compare
andyzhangx
force-pushed
the
feat/inferenceset-beta-promotion
branch
from
June 17, 2026 07:30
958f8da to
9e055d3
Compare
andyzhangx
force-pushed
the
feat/inferenceset-beta-promotion
branch
from
June 17, 2026 07:58
b615586 to
6e93b17
Compare
Complete the InferenceSet v1beta1 promotion: - Move +kubebuilder:storageversion marker from v1alpha1 to v1beta1 - Migrate controller reconcile loop to use kaitov1beta1.InferenceSet - Migrate utility functions (UpdateInferenceSetStatus, etc.) to v1beta1 - Migrate drift controller to v1beta1 types - Migrate metrics to v1beta1 types - Align all tests to v1beta1 types - Update ownerReference GVKs to v1beta1 - Update test fixtures with correct annotation keys (kaito.io)
…s to v1beta1 in runner_test.go
- Add v1beta1 version entry to kaito.sh_inferencesets.yaml CRD with storage: true - Set v1alpha1 to storage: false (still served for backward compatibility) - v1beta1 markers already have +kubebuilder:storageversion
The e2e test installs InferenceSet CRD from the Helm chart template, which only had v1alpha1. Since the controller now uses kaito.sh/v1beta1, the CRD must serve v1beta1. Copy the updated CRD (with both v1alpha1 served and v1beta1 as storage version) to the Helm chart template.
… tests to v1beta1 - Set featureGates.enableInferenceSetController=true in Helm values.yaml - Update README to reflect new default - Migrate e2e test helpers and test functions to use kaitov1beta1.InferenceSet - Update InferenceSetList and condition type references to v1beta1
Remove GetInferenceSetRuntimeName, IsRunBenchmarkEnabled, and ShouldRunBenchmark from api/v1alpha1/labels.go since the controller now uses the v1beta1 equivalents. Also remove the corresponding tests from labels_test.go.
- Fix metrics phase: return 'succeeded' (not 'ready') to match metric bucket labels in monitorInferenceSets - Use GetInferenceSetRuntimeName helper in inferencePoolTargetPort to eliminate duplicated runtime selection logic and remove v1alpha1 dependency (kaitov1alpha1.MultiRoleInferenceRoleDecode) - Remove unused featuregates import from manifests.go - Rename receiver from 'w' to 'i' in InferenceSet.SetDefaults - Use IsInferenceSetBenchmarkEnabled in controller test instead of inline annotation check - Add missing 'config' field to Metric schema in CRD manifest Signed-off-by: andyzhangx <andyzhangx@live.com>
tc.inferenceset is already *v1beta1.InferenceSet, no need for &. Signed-off-by: andyzhangx <andyzhangx@live.com>
- Define InferenceRoleDecode constant in v1beta1/labels.go and use it in inferencePoolTargetPort instead of hardcoded "decode" string - Lower webhook validation logs from Info to V(2) to reduce noise on every create/update request Signed-off-by: andyzhangx <andyzhangx@live.com>
Collaborator
|
please leave v1alpha1 pkg unchanged. others looks good. |
Revert the removal of GetInferenceSetRuntimeName, IsRunBenchmarkEnabled, ShouldRunBenchmark from api/v1alpha1/labels.go and their tests from labels_test.go. These functions are still needed in the v1alpha1 package.
The test functions for GetInferenceSetRuntimeName are no longer needed in the v1alpha1 package.
Restore TestGetInferenceSetRuntimeName tests in api/v1alpha1/labels_test.go.
…bels_test.go" This reverts commit 10cad30.
Keep the original feature-gate-based runtime detection logic instead of calling GetInferenceSetRuntimeName. Only the type signature changes from v1alpha1 to v1beta1 for the InferenceSet promotion.
zhuangqh
approved these changes
Jun 22, 2026
Signed-off-by: Andy Zhang <xiazhang@microsoft.com>
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.
Description
Changes
api/v1beta1/with validation, defaulting, and DeepCopy+kubebuilder:storageversionmoved from v1alpha1 to v1beta1; CRD updated with v1beta1 as storage and v1alpha1 still served for backward compatibilityEnableInferenceSetControllerfeature gate by default - Change default fromfalsetotrue(both in code and Helm chart)kaitov1beta1.InferenceSet*typesconfig/crd/bases/kaito.sh_inferencesets.yamland Helm chart template now define both v1alpha1 and v1beta1GetInferenceSetRuntimeNamehelper - Eliminated duplicated runtime selection logic ininferencePoolTargetPort, removed cross-versionkaitov1alpha1dependencydetermineInferenceSetPhasenow returns"succeeded"to match metric bucket labelsCRD Version Configuration
The CRD now defines two versions with the following settings:
servedstorageserved: Whether the API server exposes this version as an endpoint. Whentrue, clients can use this version in their API requests (e.g.,kubectl get inferencesets.v1alpha1.kaito.shstill works).storage: Which version format is used to persist objects in etcd. Only one version can be the storage version. The API server automatically converts between served versions and the storage version on read/write.Motivation
MultiRoleInference) depends on InferenceSet being enabled--feature-gates=enableInferenceSetController=truewhich is unnecessary frictionStorage Version
Related Issues