Skip to content

Commit 6c02159

Browse files
committed
added api review
1 parent 4ffb5f6 commit 6c02159

File tree

4 files changed

+734
-0
lines changed

4 files changed

+734
-0
lines changed
Lines changed: 285 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,285 @@
1+
---
2+
apiVersion: apiextensions.k8s.io/v1
3+
kind: CustomResourceDefinition
4+
metadata:
5+
annotations:
6+
controller-gen.kubebuilder.io/version: v0.16.1
7+
name: inferencepools.inference.networking.k8s.io
8+
spec:
9+
group: inference.networking.k8s.io
10+
names:
11+
kind: InferencePool
12+
listKind: InferencePoolList
13+
plural: inferencepools
14+
singular: inferencepool
15+
scope: Namespaced
16+
versions:
17+
- name: v1
18+
schema:
19+
openAPIV3Schema:
20+
description: InferencePool is the Schema for the InferencePools API.
21+
properties:
22+
apiVersion:
23+
description: |-
24+
APIVersion defines the versioned schema of this representation of an object.
25+
Servers should convert recognized schemas to the latest internal value, and
26+
may reject unrecognized values.
27+
More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
28+
type: string
29+
kind:
30+
description: |-
31+
Kind is a string value representing the REST resource this object represents.
32+
Servers may infer this from the endpoint the client submits requests to.
33+
Cannot be updated.
34+
In CamelCase.
35+
More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
36+
type: string
37+
metadata:
38+
type: object
39+
spec:
40+
description: InferencePoolSpec defines the desired state of InferencePool
41+
properties:
42+
extensionRef:
43+
description: Extension configures an endpoint picker as an extension
44+
service.
45+
properties:
46+
failureMode:
47+
default: FailClose
48+
description: |-
49+
Configures how the gateway handles the case when the extension is not responsive.
50+
Defaults to failClose.
51+
enum:
52+
- FailOpen
53+
- FailClose
54+
type: string
55+
group:
56+
default: ""
57+
description: |-
58+
Group is the group of the referent.
59+
The default value is "", representing the Core API group.
60+
maxLength: 253
61+
pattern: ^$|^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$
62+
type: string
63+
kind:
64+
default: Service
65+
description: |-
66+
Kind is the Kubernetes resource kind of the referent. For example
67+
"Service".
68+
69+
Defaults to "Service" when not specified.
70+
71+
ExternalName services can refer to CNAME DNS records that may live
72+
outside of the cluster and as such are difficult to reason about in
73+
terms of conformance. They also may not be safe to forward to (see
74+
CVE-2021-25740 for more information). Implementations MUST NOT
75+
support ExternalName Services.
76+
maxLength: 63
77+
minLength: 1
78+
pattern: ^[a-zA-Z]([-a-zA-Z0-9]*[a-zA-Z0-9])?$
79+
type: string
80+
name:
81+
description: Name is the name of the referent.
82+
maxLength: 253
83+
minLength: 1
84+
type: string
85+
portNumber:
86+
description: |-
87+
The port number on the service running the extension. When unspecified,
88+
implementations SHOULD infer a default value of 9002 when the Kind is
89+
Service.
90+
format: int32
91+
maximum: 65535
92+
minimum: 1
93+
type: integer
94+
required:
95+
- name
96+
type: object
97+
selector:
98+
additionalProperties:
99+
description: |-
100+
LabelValue is the value of a label. This is used for validation
101+
of maps. This matches the Kubernetes label validation rules:
102+
* must be 63 characters or less (can be empty),
103+
* unless empty, must begin and end with an alphanumeric character ([a-z0-9A-Z]),
104+
* could contain dashes (-), underscores (_), dots (.), and alphanumerics between.
105+
106+
Valid values include:
107+
108+
* MyValue
109+
* my.name
110+
* 123-my-value
111+
maxLength: 63
112+
minLength: 0
113+
pattern: ^(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])?$
114+
type: string
115+
description: |-
116+
Selector defines a map of labels to watch model server pods
117+
that should be included in the InferencePool.
118+
In some cases, implementations may translate this field to a Service selector, so this matches the simple
119+
map used for Service selectors instead of the full Kubernetes LabelSelector type.
120+
If sepecified, it will be applied to match the model server pods in the same namespace as the InferencePool.
121+
Cross namesoace selector is not supported.
122+
type: object
123+
targetPortNumber:
124+
description: |-
125+
TargetPortNumber defines the port number to access the selected model servers.
126+
The number must be in the range 1 to 65535.
127+
format: int32
128+
maximum: 65535
129+
minimum: 1
130+
type: integer
131+
required:
132+
- extensionRef
133+
- selector
134+
- targetPortNumber
135+
type: object
136+
status:
137+
default:
138+
parent:
139+
- conditions:
140+
- lastTransitionTime: "1970-01-01T00:00:00Z"
141+
message: Waiting for controller
142+
reason: Pending
143+
status: Unknown
144+
type: Accepted
145+
parentRef:
146+
kind: Status
147+
name: default
148+
description: Status defines the observed state of InferencePool.
149+
properties:
150+
parent:
151+
description: |-
152+
Parents is a list of parent resources (usually Gateways) that are
153+
associated with the InferencePool, and the status of the InferencePool with respect to
154+
each parent.
155+
156+
A maximum of 32 Gateways will be represented in this list. When the list contains
157+
`kind: Status, name: default`, it indicates that the InferencePool is not
158+
associated with any Gateway and a controller must perform the following:
159+
160+
- Remove the parent when setting the "Accepted" condition.
161+
- Add the parent when the controller will no longer manage the InferencePool
162+
and no other parents exist.
163+
items:
164+
description: PoolStatus defines the observed state of InferencePool
165+
from a Gateway.
166+
properties:
167+
conditions:
168+
default:
169+
- lastTransitionTime: "1970-01-01T00:00:00Z"
170+
message: Waiting for controller
171+
reason: Pending
172+
status: Unknown
173+
type: Accepted
174+
description: |-
175+
Conditions track the state of the InferencePool.
176+
177+
Known condition types are:
178+
179+
* "Accepted"
180+
* "ResolvedRefs"
181+
items:
182+
description: Condition contains details for one aspect of
183+
the current state of this API Resource.
184+
properties:
185+
lastTransitionTime:
186+
description: |-
187+
lastTransitionTime is the last time the condition transitioned from one status to another.
188+
This should be when the underlying condition changed. If that is not known, then using the time when the API field changed is acceptable.
189+
format: date-time
190+
type: string
191+
message:
192+
description: |-
193+
message is a human readable message indicating details about the transition.
194+
This may be an empty string.
195+
maxLength: 32768
196+
type: string
197+
observedGeneration:
198+
description: |-
199+
observedGeneration represents the .metadata.generation that the condition was set based upon.
200+
For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date
201+
with respect to the current state of the instance.
202+
format: int64
203+
minimum: 0
204+
type: integer
205+
reason:
206+
description: |-
207+
reason contains a programmatic identifier indicating the reason for the condition's last transition.
208+
Producers of specific condition types may define expected values and meanings for this field,
209+
and whether the values are considered a guaranteed API.
210+
The value should be a CamelCase string.
211+
This field may not be empty.
212+
maxLength: 1024
213+
minLength: 1
214+
pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$
215+
type: string
216+
status:
217+
description: status of the condition, one of True, False,
218+
Unknown.
219+
enum:
220+
- "True"
221+
- "False"
222+
- Unknown
223+
type: string
224+
type:
225+
description: type of condition in CamelCase or in foo.example.com/CamelCase.
226+
maxLength: 316
227+
pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$
228+
type: string
229+
required:
230+
- lastTransitionTime
231+
- message
232+
- reason
233+
- status
234+
- type
235+
type: object
236+
maxItems: 8
237+
type: array
238+
x-kubernetes-list-map-keys:
239+
- type
240+
x-kubernetes-list-type: map
241+
parentRef:
242+
description: GatewayRef indicates the gateway that observed
243+
state of InferencePool.
244+
properties:
245+
group:
246+
default: gateway.networking.k8s.io
247+
description: Group is the group of the referent.
248+
maxLength: 253
249+
pattern: ^$|^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$
250+
type: string
251+
kind:
252+
default: Gateway
253+
description: Kind is kind of the referent. For example "Gateway".
254+
maxLength: 63
255+
minLength: 1
256+
pattern: ^[a-zA-Z]([-a-zA-Z0-9]*[a-zA-Z0-9])?$
257+
type: string
258+
name:
259+
description: Name is the name of the referent.
260+
maxLength: 253
261+
minLength: 1
262+
type: string
263+
namespace:
264+
description: |-
265+
Namespace is the namespace of the referent. If not present,
266+
the namespace of the referent is assumed to be the same as
267+
the namespace of the referring object.
268+
maxLength: 63
269+
minLength: 1
270+
pattern: ^[a-z0-9]([-a-z0-9]*[a-z0-9])?$
271+
type: string
272+
required:
273+
- name
274+
type: object
275+
required:
276+
- parentRef
277+
type: object
278+
maxItems: 32
279+
type: array
280+
type: object
281+
type: object
282+
served: true
283+
storage: true
284+
subresources:
285+
status: {}

v1api/v1/doc.go

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
/*
2+
Copyright 2025 The Kubernetes Authors.
3+
4+
Licensed under the Apache License, Version 2.0 (the "License");
5+
you may not use this file except in compliance with the License.
6+
You may obtain a copy of the License at
7+
8+
http://www.apache.org/licenses/LICENSE-2.0
9+
10+
Unless required by applicable law or agreed to in writing, software
11+
distributed under the License is distributed on an "AS IS" BASIS,
12+
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13+
See the License for the specific language governing permissions and
14+
limitations under the License.
15+
*/
16+
17+
// Package v1 contains API Schema definitions for the
18+
// inference.networking.k8s.io API group.
19+
//
20+
// +k8s:openapi-gen=true
21+
// +kubebuilder:object:generate=true
22+
// +groupName=inference.networking.k8s.io
23+
package v1

0 commit comments

Comments
 (0)