1apiVersion: apiextensions.k8s.io/v1
2kind: CustomResourceDefinition
3metadata:
4 annotations:
5 api-approved.kubernetes.io: https://github.com/kubernetes-sigs/gateway-api/pull/2466
6 gateway.networking.k8s.io/bundle-version: v1.0.0
7 gateway.networking.k8s.io/channel: experimental
8 creationTimestamp: null
9 name: gatewayclasses.gateway.networking.k8s.io
10spec:
11 group: gateway.networking.k8s.io
12 names:
13 categories:
14 - gateway-api
15 kind: GatewayClass
16 listKind: GatewayClassList
17 plural: gatewayclasses
18 shortNames:
19 - gc
20 singular: gatewayclass
21 scope: Cluster
22 versions:
23 - additionalPrinterColumns:
24 - jsonPath: .spec.controllerName
25 name: Controller
26 type: string
27 - jsonPath: .status.conditions[?(@.type=="Accepted")].status
28 name: Accepted
29 type: string
30 - jsonPath: .metadata.creationTimestamp
31 name: Age
32 type: date
33 - jsonPath: .spec.description
34 name: Description
35 priority: 1
36 type: string
37 name: v1
38 schema:
39 openAPIV3Schema:
40 description: "GatewayClass describes a class of Gateways available to the
41 user for creating Gateway resources. \n It is recommended that this resource
42 be used as a template for Gateways. This means that a Gateway is based on
43 the state of the GatewayClass at the time it was created and changes to
44 the GatewayClass or associated parameters are not propagated down to existing
45 Gateways. This recommendation is intended to limit the blast radius of changes
46 to GatewayClass or associated parameters. If implementations choose to propagate
47 GatewayClass changes to existing Gateways, that MUST be clearly documented
48 by the implementation. \n Whenever one or more Gateways are using a GatewayClass,
49 implementations SHOULD add the `gateway-exists-finalizer.gateway.networking.k8s.io`
50 finalizer on the associated GatewayClass. This ensures that a GatewayClass
51 associated with a Gateway is not deleted while in use. \n GatewayClass is
52 a Cluster level resource."
53 properties:
54 apiVersion:
55 description: 'APIVersion defines the versioned schema of this representation
56 of an object. Servers should convert recognized schemas to the latest
57 internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
58 type: string
59 kind:
60 description: 'Kind is a string value representing the REST resource this
61 object represents. Servers may infer this from the endpoint the client
62 submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
63 type: string
64 metadata:
65 type: object
66 spec:
67 description: Spec defines the desired state of GatewayClass.
68 properties:
69 controllerName:
70 description: "ControllerName is the name of the controller that is
71 managing Gateways of this class. The value of this field MUST be
72 a domain prefixed path. \n Example: \"example.net/gateway-controller\".
73 \n This field is not mutable and cannot be empty. \n Support: Core"
74 maxLength: 253
75 minLength: 1
76 pattern: ^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*\/[A-Za-z0-9\/\-._~%!$&'()*+,;=:]+$
77 type: string
78 x-kubernetes-validations:
79 - message: Value is immutable
80 rule: self == oldSelf
81 description:
82 description: Description helps describe a GatewayClass with more details.
83 maxLength: 64
84 type: string
85 parametersRef:
86 description: "ParametersRef is a reference to a resource that contains
87 the configuration parameters corresponding to the GatewayClass.
88 This is optional if the controller does not require any additional
89 configuration. \n ParametersRef can reference a standard Kubernetes
90 resource, i.e. ConfigMap, or an implementation-specific custom resource.
91 The resource can be cluster-scoped or namespace-scoped. \n If the
92 referent cannot be found, the GatewayClass's \"InvalidParameters\"
93 status condition will be true. \n Support: Implementation-specific"
94 properties:
95 group:
96 description: Group is the group of the referent.
97 maxLength: 253
98 pattern: ^$|^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$
99 type: string
100 kind:
101 description: Kind is kind of the referent.
102 maxLength: 63
103 minLength: 1
104 pattern: ^[a-zA-Z]([-a-zA-Z0-9]*[a-zA-Z0-9])?$
105 type: string
106 name:
107 description: Name is the name of the referent.
108 maxLength: 253
109 minLength: 1
110 type: string
111 namespace:
112 description: Namespace is the namespace of the referent. This
113 field is required when referring to a Namespace-scoped resource
114 and MUST be unset when referring to a Cluster-scoped resource.
115 maxLength: 63
116 minLength: 1
117 pattern: ^[a-z0-9]([-a-z0-9]*[a-z0-9])?$
118 type: string
119 required:
120 - group
121 - kind
122 - name
123 type: object
124 required:
125 - controllerName
126 type: object
127 status:
128 default:
129 conditions:
130 - lastTransitionTime: "1970-01-01T00:00:00Z"
131 message: Waiting for controller
132 reason: Waiting
133 status: Unknown
134 type: Accepted
135 description: "Status defines the current state of GatewayClass. \n Implementations
136 MUST populate status on all GatewayClass resources which specify their
137 controller name."
138 properties:
139 conditions:
140 default:
141 - lastTransitionTime: "1970-01-01T00:00:00Z"
142 message: Waiting for controller
143 reason: Pending
144 status: Unknown
145 type: Accepted
146 description: "Conditions is the current status from the controller
147 for this GatewayClass. \n Controllers should prefer to publish conditions
148 using values of GatewayClassConditionType for the type of each Condition."
149 items:
150 description: "Condition contains details for one aspect of the current
151 state of this API Resource. --- This struct is intended for direct
152 use as an array at the field path .status.conditions. For example,
153 \n type FooStatus struct{ // Represents the observations of a
154 foo's current state. // Known .status.conditions.type are: \"Available\",
155 \"Progressing\", and \"Degraded\" // +patchMergeKey=type // +patchStrategy=merge
156 // +listType=map // +listMapKey=type Conditions []metav1.Condition
157 `json:\"conditions,omitempty\" patchStrategy:\"merge\" patchMergeKey:\"type\"
158 protobuf:\"bytes,1,rep,name=conditions\"` \n // other fields }"
159 properties:
160 lastTransitionTime:
161 description: lastTransitionTime is the last time the condition
162 transitioned from one status to another. This should be when
163 the underlying condition changed. If that is not known, then
164 using the time when the API field changed is acceptable.
165 format: date-time
166 type: string
167 message:
168 description: message is a human readable message indicating
169 details about the transition. This may be an empty string.
170 maxLength: 32768
171 type: string
172 observedGeneration:
173 description: observedGeneration represents the .metadata.generation
174 that the condition was set based upon. For instance, if .metadata.generation
175 is currently 12, but the .status.conditions[x].observedGeneration
176 is 9, the condition is out of date with respect to the current
177 state of the instance.
178 format: int64
179 minimum: 0
180 type: integer
181 reason:
182 description: reason contains a programmatic identifier indicating
183 the reason for the condition's last transition. Producers
184 of specific condition types may define expected values and
185 meanings for this field, and whether the values are considered
186 a guaranteed API. The value should be a CamelCase string.
187 This field may not be empty.
188 maxLength: 1024
189 minLength: 1
190 pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$
191 type: string
192 status:
193 description: status of the condition, one of True, False, Unknown.
194 enum:
195 - "True"
196 - "False"
197 - Unknown
198 type: string
199 type:
200 description: type of condition in CamelCase or in foo.example.com/CamelCase.
201 --- Many .condition.type values are consistent across resources
202 like Available, but because arbitrary conditions can be useful
203 (see .node.status.conditions), the ability to deconflict is
204 important. The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt)
205 maxLength: 316
206 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])$
207 type: string
208 required:
209 - lastTransitionTime
210 - message
211 - reason
212 - status
213 - type
214 type: object
215 maxItems: 8
216 type: array
217 x-kubernetes-list-map-keys:
218 - type
219 x-kubernetes-list-type: map
220 supportedFeatures:
221 description: 'SupportedFeatures is the set of features the GatewayClass
222 support. It MUST be sorted in ascending alphabetical order. '
223 items:
224 description: SupportedFeature is used to describe distinct features
225 that are covered by conformance tests.
226 enum:
227 - Gateway
228 - GatewayPort8080
229 - GatewayStaticAddresses
230 - HTTPRoute
231 - HTTPRouteDestinationPortMatching
232 - HTTPRouteHostRewrite
233 - HTTPRouteMethodMatching
234 - HTTPRoutePathRedirect
235 - HTTPRoutePathRewrite
236 - HTTPRoutePortRedirect
237 - HTTPRouteQueryParamMatching
238 - HTTPRouteRequestMirror
239 - HTTPRouteRequestMultipleMirrors
240 - HTTPRouteResponseHeaderModification
241 - HTTPRouteSchemeRedirect
242 - Mesh
243 - ReferenceGrant
244 - TLSRoute
245 type: string
246 maxItems: 64
247 type: array
248 x-kubernetes-list-type: set
249 type: object
250 required:
251 - spec
252 type: object
253 served: true
254 storage: false
255 subresources:
256 status: {}
257 - additionalPrinterColumns:
258 - jsonPath: .spec.controllerName
259 name: Controller
260 type: string
261 - jsonPath: .status.conditions[?(@.type=="Accepted")].status
262 name: Accepted
263 type: string
264 - jsonPath: .metadata.creationTimestamp
265 name: Age
266 type: date
267 - jsonPath: .spec.description
268 name: Description
269 priority: 1
270 type: string
271 name: v1beta1
272 schema:
273 openAPIV3Schema:
274 description: "GatewayClass describes a class of Gateways available to the
275 user for creating Gateway resources. \n It is recommended that this resource
276 be used as a template for Gateways. This means that a Gateway is based on
277 the state of the GatewayClass at the time it was created and changes to
278 the GatewayClass or associated parameters are not propagated down to existing
279 Gateways. This recommendation is intended to limit the blast radius of changes
280 to GatewayClass or associated parameters. If implementations choose to propagate
281 GatewayClass changes to existing Gateways, that MUST be clearly documented
282 by the implementation. \n Whenever one or more Gateways are using a GatewayClass,
283 implementations SHOULD add the `gateway-exists-finalizer.gateway.networking.k8s.io`
284 finalizer on the associated GatewayClass. This ensures that a GatewayClass
285 associated with a Gateway is not deleted while in use. \n GatewayClass is
286 a Cluster level resource."
287 properties:
288 apiVersion:
289 description: 'APIVersion defines the versioned schema of this representation
290 of an object. Servers should convert recognized schemas to the latest
291 internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
292 type: string
293 kind:
294 description: 'Kind is a string value representing the REST resource this
295 object represents. Servers may infer this from the endpoint the client
296 submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
297 type: string
298 metadata:
299 type: object
300 spec:
301 description: Spec defines the desired state of GatewayClass.
302 properties:
303 controllerName:
304 description: "ControllerName is the name of the controller that is
305 managing Gateways of this class. The value of this field MUST be
306 a domain prefixed path. \n Example: \"example.net/gateway-controller\".
307 \n This field is not mutable and cannot be empty. \n Support: Core"
308 maxLength: 253
309 minLength: 1
310 pattern: ^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*\/[A-Za-z0-9\/\-._~%!$&'()*+,;=:]+$
311 type: string
312 x-kubernetes-validations:
313 - message: Value is immutable
314 rule: self == oldSelf
315 description:
316 description: Description helps describe a GatewayClass with more details.
317 maxLength: 64
318 type: string
319 parametersRef:
320 description: "ParametersRef is a reference to a resource that contains
321 the configuration parameters corresponding to the GatewayClass.
322 This is optional if the controller does not require any additional
323 configuration. \n ParametersRef can reference a standard Kubernetes
324 resource, i.e. ConfigMap, or an implementation-specific custom resource.
325 The resource can be cluster-scoped or namespace-scoped. \n If the
326 referent cannot be found, the GatewayClass's \"InvalidParameters\"
327 status condition will be true. \n Support: Implementation-specific"
328 properties:
329 group:
330 description: Group is the group of the referent.
331 maxLength: 253
332 pattern: ^$|^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$
333 type: string
334 kind:
335 description: Kind is kind of the referent.
336 maxLength: 63
337 minLength: 1
338 pattern: ^[a-zA-Z]([-a-zA-Z0-9]*[a-zA-Z0-9])?$
339 type: string
340 name:
341 description: Name is the name of the referent.
342 maxLength: 253
343 minLength: 1
344 type: string
345 namespace:
346 description: Namespace is the namespace of the referent. This
347 field is required when referring to a Namespace-scoped resource
348 and MUST be unset when referring to a Cluster-scoped resource.
349 maxLength: 63
350 minLength: 1
351 pattern: ^[a-z0-9]([-a-z0-9]*[a-z0-9])?$
352 type: string
353 required:
354 - group
355 - kind
356 - name
357 type: object
358 required:
359 - controllerName
360 type: object
361 status:
362 default:
363 conditions:
364 - lastTransitionTime: "1970-01-01T00:00:00Z"
365 message: Waiting for controller
366 reason: Waiting
367 status: Unknown
368 type: Accepted
369 description: "Status defines the current state of GatewayClass. \n Implementations
370 MUST populate status on all GatewayClass resources which specify their
371 controller name."
372 properties:
373 conditions:
374 default:
375 - lastTransitionTime: "1970-01-01T00:00:00Z"
376 message: Waiting for controller
377 reason: Pending
378 status: Unknown
379 type: Accepted
380 description: "Conditions is the current status from the controller
381 for this GatewayClass. \n Controllers should prefer to publish conditions
382 using values of GatewayClassConditionType for the type of each Condition."
383 items:
384 description: "Condition contains details for one aspect of the current
385 state of this API Resource. --- This struct is intended for direct
386 use as an array at the field path .status.conditions. For example,
387 \n type FooStatus struct{ // Represents the observations of a
388 foo's current state. // Known .status.conditions.type are: \"Available\",
389 \"Progressing\", and \"Degraded\" // +patchMergeKey=type // +patchStrategy=merge
390 // +listType=map // +listMapKey=type Conditions []metav1.Condition
391 `json:\"conditions,omitempty\" patchStrategy:\"merge\" patchMergeKey:\"type\"
392 protobuf:\"bytes,1,rep,name=conditions\"` \n // other fields }"
393 properties:
394 lastTransitionTime:
395 description: lastTransitionTime is the last time the condition
396 transitioned from one status to another. This should be when
397 the underlying condition changed. If that is not known, then
398 using the time when the API field changed is acceptable.
399 format: date-time
400 type: string
401 message:
402 description: message is a human readable message indicating
403 details about the transition. This may be an empty string.
404 maxLength: 32768
405 type: string
406 observedGeneration:
407 description: observedGeneration represents the .metadata.generation
408 that the condition was set based upon. For instance, if .metadata.generation
409 is currently 12, but the .status.conditions[x].observedGeneration
410 is 9, the condition is out of date with respect to the current
411 state of the instance.
412 format: int64
413 minimum: 0
414 type: integer
415 reason:
416 description: reason contains a programmatic identifier indicating
417 the reason for the condition's last transition. Producers
418 of specific condition types may define expected values and
419 meanings for this field, and whether the values are considered
420 a guaranteed API. The value should be a CamelCase string.
421 This field may not be empty.
422 maxLength: 1024
423 minLength: 1
424 pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$
425 type: string
426 status:
427 description: status of the condition, one of True, False, Unknown.
428 enum:
429 - "True"
430 - "False"
431 - Unknown
432 type: string
433 type:
434 description: type of condition in CamelCase or in foo.example.com/CamelCase.
435 --- Many .condition.type values are consistent across resources
436 like Available, but because arbitrary conditions can be useful
437 (see .node.status.conditions), the ability to deconflict is
438 important. The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt)
439 maxLength: 316
440 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])$
441 type: string
442 required:
443 - lastTransitionTime
444 - message
445 - reason
446 - status
447 - type
448 type: object
449 maxItems: 8
450 type: array
451 x-kubernetes-list-map-keys:
452 - type
453 x-kubernetes-list-type: map
454 supportedFeatures:
455 description: 'SupportedFeatures is the set of features the GatewayClass
456 support. It MUST be sorted in ascending alphabetical order. '
457 items:
458 description: SupportedFeature is used to describe distinct features
459 that are covered by conformance tests.
460 enum:
461 - Gateway
462 - GatewayPort8080
463 - GatewayStaticAddresses
464 - HTTPRoute
465 - HTTPRouteDestinationPortMatching
466 - HTTPRouteHostRewrite
467 - HTTPRouteMethodMatching
468 - HTTPRoutePathRedirect
469 - HTTPRoutePathRewrite
470 - HTTPRoutePortRedirect
471 - HTTPRouteQueryParamMatching
472 - HTTPRouteRequestMirror
473 - HTTPRouteRequestMultipleMirrors
474 - HTTPRouteResponseHeaderModification
475 - HTTPRouteSchemeRedirect
476 - Mesh
477 - ReferenceGrant
478 - TLSRoute
479 type: string
480 maxItems: 64
481 type: array
482 x-kubernetes-list-type: set
483 type: object
484 required:
485 - spec
486 type: object
487 served: true
488 storage: true
489 subresources:
490 status: {}
491status:
492 acceptedNames:
493 kind: ""
494 plural: ""
495 conditions: null
496 storedVersions: null
View as plain text