diff --git a/charts/modeldeployment/README.md b/charts/modeldeployment/README.md index cfa44a3..fe04f07 100644 --- a/charts/modeldeployment/README.md +++ b/charts/modeldeployment/README.md @@ -3,7 +3,7 @@ Helm chart that deploys a complete set of GAIE (Gateway API Inference Extension) artifacts for a single model: -- `kaito.sh/v1alpha1` `InferenceSet` +- `kaito.sh/v1beta1` `InferenceSet` - `inference.networking.k8s.io/v1` `InferencePool` (normally provisioned by KAITO via Flux; rendered inline here) - Endpoint Picker (EPP) `Deployment` + `Service` + `ServiceAccount` + `Role` + `RoleBinding` + `ConfigMap` - `gateway.networking.k8s.io/v1` `HTTPRoute` matching `X-Gateway-Model-Name: ` @@ -41,7 +41,7 @@ over plaintext gRPC and **no `DestinationRule` is required**. | `model` | required | `""` | Preset model name. Used only as `spec.template.inference.preset.name`. | | `config` | optional | `""` | Name of a ConfigMap in the deployment namespace containing custom inference arguments. Rendered as `spec.template.inference.config`. | | `modelAccessSecret` | optional | `""` | Name of a Secret containing Hugging Face model access credentials. Rendered as `spec.template.inference.preset.presetOptions.modelAccessSecret`. | -| `instanceType` | required | `Standard_NV36ads_A10_v5` | VM instance type for the underlying nodes. | +| `instanceType` | optional | `Standard_NV36ads_A10_v5` | VM instance type for the underlying nodes. Set `""` to omit `spec.template.resource.instanceType`, as required on BYO-node clusters (KAITO `nodeProvisioner=byo`). | | `replicas` | optional | _empty_ | InferenceSet replicas (`spec.replicas`). Empty leaves `spec.replicas` unset (CRD default `1`; with `enableScaling=true`, KEDA moves it into `[minReplicas, maxReplicas]`). When set with `enableScaling=true` it must lie within `[minReplicas, maxReplicas]` and is re-applied only when its value changes (see [Replica ownership](#replica-ownership)). | | `minReplicas` | required when `enableScaling=true` | _empty_ | Autoscaling lower bound, wired to `scaledobject.kaito.sh/min-replicas`. Ignored when `enableScaling=false`. `0` enables [scale to zero](#scale-to-zero). | | `enableScaling` | optional | `false` | Wired to `scaledobject.kaito.sh/auto-provision`. Gates `minReplicas`, `maxReplicas` and the entire `scaling` block. | diff --git a/charts/modeldeployment/templates/inferenceset.yaml b/charts/modeldeployment/templates/inferenceset.yaml index bf3e717..e657b29 100644 --- a/charts/modeldeployment/templates/inferenceset.yaml +++ b/charts/modeldeployment/templates/inferenceset.yaml @@ -130,7 +130,7 @@ install time instead of surfacing as a skipped ScaledObject. {{- end }} {{- end }} {{- end }} -apiVersion: kaito.sh/v1alpha1 +apiVersion: kaito.sh/v1beta1 kind: InferenceSet metadata: name: {{ $name }} @@ -232,8 +232,15 @@ spec: inference.kaito.sh/stream-source-type: {{ .Values.streaming.sourceType | quote }} {{- end }} {{- end }} + {{- /* + Empty instanceType omits the field, which KAITO requires on BYO + (nodeProvisioner=byo) clusters where nodes are not auto-provisioned. + */}} resource: - instanceType: {{ .Values.instanceType | quote }} + {{- with .Values.instanceType }} + instanceType: {{ . | quote }} + {{- else }} {} + {{- end }} inference: preset: name: {{ .Values.model | quote }} diff --git a/charts/modeldeployment/values.schema.json b/charts/modeldeployment/values.schema.json index 4359e67..47b4e86 100644 --- a/charts/modeldeployment/values.schema.json +++ b/charts/modeldeployment/values.schema.json @@ -85,8 +85,7 @@ }, "instanceType": { "type": "string", - "minLength": 1, - "description": "VM instance type used for the underlying GPU nodes." + "description": "VM instance type used for the underlying GPU nodes. Empty omits spec.template.resource.instanceType, as required on BYO-node clusters (KAITO nodeProvisioner=byo)." }, "replicas": { "anyOf": [ diff --git a/charts/modeldeployment/values.yaml b/charts/modeldeployment/values.yaml index 9138b86..b0009fe 100644 --- a/charts/modeldeployment/values.yaml +++ b/charts/modeldeployment/values.yaml @@ -16,7 +16,7 @@ config: "" # modelAccessSecret names the Secret holding the Hugging Face access credentials. modelAccessSecret: "" -# instanceType is the VM instance type of the GPU nodes. +# instanceType is the VM instance type of the GPU nodes; set "" on BYO-node clusters to omit it. instanceType: "Standard_NV36ads_A10_v5" # replicas sets spec.replicas when not empty (otherwise the CRD default of 1); with enableScaling it must lie diff --git a/test/e2e/modeldeployment_chart_spec.go b/test/e2e/modeldeployment_chart_spec.go index faf2fa2..fc3495c 100644 --- a/test/e2e/modeldeployment_chart_spec.go +++ b/test/e2e/modeldeployment_chart_spec.go @@ -102,7 +102,7 @@ var _ = Describe("ModelDeployment Chart", utils.GinkgoLabelInferenceSet, utils.G is := &unstructured.Unstructured{} is.SetGroupVersionKind(schema.GroupVersionKind{ Group: "kaito.sh", - Version: "v1alpha1", + Version: "v1beta1", Kind: "InferenceSet", }) err := cl.Get(ctx, types.NamespacedName{Name: deploymentName, Namespace: namespace}, is) @@ -187,7 +187,7 @@ var _ = Describe("ModelDeployment Chart", utils.GinkgoLabelInferenceSet, utils.G is := &unstructured.Unstructured{} is.SetGroupVersionKind(schema.GroupVersionKind{ Group: "kaito.sh", - Version: "v1alpha1", + Version: "v1beta1", Kind: "InferenceSet", }) err := cl.Get(ctx, types.NamespacedName{Name: deploymentName, Namespace: namespace}, is) @@ -246,7 +246,7 @@ var _ = Describe("ModelDeployment Chart", utils.GinkgoLabelInferenceSet, utils.G is := &unstructured.Unstructured{} is.SetGroupVersionKind(schema.GroupVersionKind{ Group: "kaito.sh", - Version: "v1alpha1", + Version: "v1beta1", Kind: "InferenceSet", }) err := cl.Get(ctx, types.NamespacedName{Name: deploymentName, Namespace: namespace}, is) diff --git a/test/e2e/utils/dynamic.go b/test/e2e/utils/dynamic.go index 430ee7d..47b394c 100644 --- a/test/e2e/utils/dynamic.go +++ b/test/e2e/utils/dynamic.go @@ -25,7 +25,7 @@ var ( // InferenceSetGVR is the GroupVersionResource for KAITO InferenceSet objects. InferenceSetGVR = schema.GroupVersionResource{ Group: "kaito.sh", - Version: "v1alpha1", + Version: "v1beta1", Resource: "inferencesets", }