Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions recipes/checks/agentgateway-crds/health-check.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -150,6 +150,8 @@ spec:
status:
(conditions[?type == 'Established']):
- status: "True"
# Deprecated v1alpha2 InferencePool, retained for a transition window
# (see the manifest header). Still installed, so still asserted.
- assert:
resource:
apiVersion: apiextensions.k8s.io/v1
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,10 +12,24 @@
# See the License for the specific language governing permissions and
# limitations under the License.

# Gateway API Inference Extension CRDs (v1.3.0)
# Source: https://github.com/kubernetes-sigs/gateway-api-inference-extension/releases/download/v1.3.0/manifests.yaml
# Gateway API Inference Extension CRDs (v1.5.0)
# Source: https://github.com/kubernetes-sigs/gateway-api-inference-extension/tree/v1.5.0/config/crd/bases
Comment thread
coderabbitai[bot] marked this conversation as resolved.
# Required by agentgateway for InferencePool and InferenceObjective resources.
#
# DIVERGENCE FROM UPSTREAM v1.5.0: this bundle also retains
# inferencepools.inference.networking.x-k8s.io (v1alpha2), which upstream
# removed. Deleting it garbage-collects every v1alpha2 InferencePool
# cluster-wide, and the stable v1 CRD is a different API group with an
# incompatible schema, so the API server cannot convert those objects.
#
# The stanza is deprecated (see deprecationWarning below) and carries Helm and
# Argo CD retention guards. Do NOT remove it without shipping, in the same
# release, a preflight that fails closed when any v1alpha2 InferencePool still
# exists: the guards are read off the LIVE cluster object, so a cluster that
# skipped the deprecation window never received them and would still be pruned.
#
# Deprecation window, removal gates, and migration steps: see #2214.
#
# These CRDs are not included in the agentgateway-crds Helm chart and must
# be installed separately. Vendored here for fully automated deployment.
#
Expand All @@ -24,7 +38,7 @@ apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
annotations:
inference.networking.k8s.io/bundle-version: v1.3.0
inference.networking.k8s.io/bundle-version: v1.5.0
name: inferencemodelrewrites.inference.networking.x-k8s.io
spec:
group: inference.networking.x-k8s.io
Expand Down Expand Up @@ -260,7 +274,7 @@ apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
annotations:
inference.networking.k8s.io/bundle-version: v1.3.0
inference.networking.k8s.io/bundle-version: v1.5.0
name: inferenceobjectives.inference.networking.x-k8s.io
spec:
group: inference.networking.x-k8s.io
Expand Down Expand Up @@ -353,7 +367,7 @@ spec:
Fairness is only enforced and tracked between requests of the same priority.

Example: requests with Priority 10 will always be served before
requests with Priority of 0 (the value used if Priority is unset or no InfereneceObjective is specified).
requests with Priority of 0 (the value used if Priority is unset or no InferenceObjective is specified).
Similarly requests with a Priority of -10 will always be served after requests with Priority of 0.
type: integer
required:
Expand Down Expand Up @@ -451,7 +465,7 @@ apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
annotations:
inference.networking.k8s.io/bundle-version: v1.3.0
inference.networking.k8s.io/bundle-version: v1.5.0
name: inferencepoolimports.inference.networking.x-k8s.io
spec:
group: inference.networking.x-k8s.io
Expand Down Expand Up @@ -783,7 +797,7 @@ kind: CustomResourceDefinition
metadata:
annotations:
api-approved.kubernetes.io: https://github.com/kubernetes-sigs/gateway-api-inference-extension/pull/1173
inference.networking.k8s.io/bundle-version: v1.3.0
inference.networking.k8s.io/bundle-version: v1.5.0
name: inferencepools.inference.networking.k8s.io
spec:
group: inference.networking.k8s.io
Expand Down Expand Up @@ -822,6 +836,20 @@ spec:
spec:
description: Spec defines the desired state of the InferencePool.
properties:
appProtocol:
default: http
description: |-
AppProtocol describes the application protocol for all the target ports.

If unspecified, the protocol defaults to HTTP/1.1.

Supported values include:
* "http": HTTP/1.1. This is the default.
* "kubernetes.io/h2c": HTTP/2 over cleartext.
enum:
- http
- kubernetes.io/h2c
type: string
Comment thread
coderabbitai[bot] marked this conversation as resolved.
endpointPickerRef:
description: |-
EndpointPickerRef is a reference to the Endpoint Picker extension and its
Expand Down Expand Up @@ -1144,6 +1172,10 @@ metadata:
annotations:
api-approved.kubernetes.io: unapproved, experimental-only
inference.networking.k8s.io/bundle-version: v1.3.0
# Retention guards. Must be applied while the CRD is still in the bundle:
# both are read off the live object at prune time (see header).
helm.sh/resource-policy: "keep"
argocd.argoproj.io/sync-options: "Delete=false,Prune=false"
name: inferencepools.inference.networking.x-k8s.io

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[P1] Preserve or migrate existing v1alpha2 pools before deleting this CRD

This manifest is rendered into the tracked agentgateway-crds-post Helm release. On an ordinary upgrade Helm therefore deletes this removed template; Kubernetes then garbage-collects every inference.networking.x-k8s.io/v1alpha2 InferencePool across the cluster. The stable CRD is a different API group and schema (extensionRef/targetPortNumber versus endpointPickerRef/targetPorts), so the API server cannot convert or retain those objects. The PR body acknowledges this destructive path but labels the change non-breaking and low-risk, and there is no user-facing migration step. Please preserve the compatibility CRD for an explicit deprecation window or provide a tested migration or backup-and-restore path before making deletion part of a routine bundle upgrade.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Taken your first option in ecbef5d: the v1alpha2 CRD is now retained, not dropped, with native deprecated: true/deprecationWarning, helm.sh/resource-policy: keep + argocd.argoproj.io/sync-options: Delete=false,Prune=false, and the health-check assert restored — nothing is deleted on any deploy path.

spec:
group: inference.networking.x-k8s.io
Expand All @@ -1156,7 +1188,11 @@ spec:
singular: inferencepool
scope: Namespaced
versions:
- name: v1alpha2
- deprecated: true
deprecationWarning: inference.networking.x-k8s.io/v1alpha2 InferencePool is deprecated;
migrate to inference.networking.k8s.io/v1 InferencePool. Retained for a transition
window and removed in a future AICR release. See NVIDIA/aicr#2214.
name: v1alpha2
schema:
openAPIV3Schema:
description: InferencePool is the Schema for the InferencePools API.
Expand Down
2 changes: 1 addition & 1 deletion tests/chainsaw/ai-conformance/cluster/assert-crds.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,7 @@ metadata:
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
name: inferencepools.inference.networking.x-k8s.io
name: inferencepools.inference.networking.k8s.io
---
# ── dynamo-platform (bundled CRDs) ────────────────────────────────────
apiVersion: apiextensions.k8s.io/v1
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@ metadata:
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
name: inferencepools.inference.networking.x-k8s.io
name: inferencepools.inference.networking.k8s.io
---
# dynamo-platform (bundled CRDs)
apiVersion: apiextensions.k8s.io/v1
Expand Down
2 changes: 1 addition & 1 deletion validators/conformance/inference_gateway_check.go
Original file line number Diff line number Diff line change
Expand Up @@ -125,7 +125,7 @@ func CheckInferenceGateway(ctx *validators.Context) error {
requiredCRDs := []string{
"gateways.gateway.networking.k8s.io",
"httproutes.gateway.networking.k8s.io",
"inferencepools.inference.networking.x-k8s.io",
"inferencepools.inference.networking.k8s.io",
}
Comment thread
coderabbitai[bot] marked this conversation as resolved.
var crdSummary strings.Builder
for _, crdName := range requiredCRDs {
Expand Down
Loading