InferenceObjective and InferenceModelRewrite¶
InferenceObjective and InferenceModelRewrite are optional upstream Gateway API Inference Extension (GAIE) Custom Resource Definitions (CRDs) in the inference.networking.x-k8s.io/v1alpha2 API group. These CRDs are not required for core Endpoint Picker (EPP) data paths or basic endpoint selection.
Use these resources to configure the following capabilities:
InferenceObjective: Attach service objectives (such as priority or criticality) to anInferencePoolto differentiate incoming requests by importance.InferenceModelRewrite: Rewrite the target model name on incoming requests before they reach the backend—enabling request routing to alias names or traffic splitting across model versions.
Both resources attach to an existing InferencePool using the spec.poolRef field and do not require duplicate configuration on the F5 side.
For complete CRD schemas, field descriptions, and example Custom Resources (CRs), see the Upstream GAIE Documentation.
Prerequisites¶
[WARNING] These CRDs are not included in the default BNK bundle. You must install them into your cluster before creating
InferenceObjectiveorInferenceModelRewriteresources. Attempting to apply a resource without its CRD returns ano matches for kinderror from the Kubernetes API server.
To ensure compatibility with this BNK release:
Install the CRDs from GAIE release
v1.4.0. Using CRDs from a different release version may introduce unrecognized schema fields or condition types.Confirm that the CRDs are registered in the cluster:
kubectl get crd inferenceobjectives.inference.networking.x-k8s.io
kubectl get crd inferencemodelrewrites.inference.networking.x-k8s.io
Ensure all
InferenceObjectiveandInferenceModelRewriteresources are created in the same namespace as their targetInferencePool.
BNK Controller Validation Logic¶
The BNK controller does not modify these resources or create subordinate Kubernetes objects. Instead, it validates the spec configurations and writes the status back to each CR:
Custom Resource |
Validation Behavior |
|---|---|
|
Verifies that |
|
Performs the same |
Upon validation, the controller writes an Accepted condition to the resource status.
Resource Status Reference¶
InferenceObjective Status Conditions¶
The Accepted condition status reflects the validation outcome:
Status |
Reason |
Description |
|---|---|---|
|
|
The resource is valid and successfully bound to an |
|
|
The |
|
|
The specified |
To check the resource status:
kubectl get inferenceobjective <objective-name> \
-n <pool-namespace> \
-o jsonpath='{.status.conditions}' | jq -c '.[] | {type, status, reason}'
InferenceModelRewrite Status Conditions¶
The Accepted condition status reflects the validation outcome:
Status |
Reason |
Description |
|---|---|---|
|
|
The resource is valid, |
|
|
The |
|
|
The specified |
|
|
At least one rule failed validation (for example, mixed weighted/non-weighted target models or an unsupported match type). |
To check the resource status:
kubectl get inferencemodelrewrite <rewrite-name> \
-n <pool-namespace> \
-o jsonpath='{.status.conditions}' | jq -c '.[] | {type, status, reason}'
Troubleshooting¶
Symptom |
Cause |
Resolution |
|---|---|---|
|
The required upstream CRD is not installed in the cluster. |
Install the GAIE release |
|
The referenced |
Verify the pool name and namespace using |
|
An unsupported |
Ensure |
|
One or more rewrite rules failed validation. |
Check the status condition message for details, correct the failing rule in |