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: standard
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 type: object
221 required:
222 - spec
223 type: object
224 served: true
225 storage: false
226 subresources:
227 status: {}
228 - additionalPrinterColumns:
229 - jsonPath: .spec.controllerName
230 name: Controller
231 type: string
232 - jsonPath: .status.conditions[?(@.type=="Accepted")].status
233 name: Accepted
234 type: string
235 - jsonPath: .metadata.creationTimestamp
236 name: Age
237 type: date
238 - jsonPath: .spec.description
239 name: Description
240 priority: 1
241 type: string
242 name: v1beta1
243 schema:
244 openAPIV3Schema:
245 description: "GatewayClass describes a class of Gateways available to the
246 user for creating Gateway resources. \n It is recommended that this resource
247 be used as a template for Gateways. This means that a Gateway is based on
248 the state of the GatewayClass at the time it was created and changes to
249 the GatewayClass or associated parameters are not propagated down to existing
250 Gateways. This recommendation is intended to limit the blast radius of changes
251 to GatewayClass or associated parameters. If implementations choose to propagate
252 GatewayClass changes to existing Gateways, that MUST be clearly documented
253 by the implementation. \n Whenever one or more Gateways are using a GatewayClass,
254 implementations SHOULD add the `gateway-exists-finalizer.gateway.networking.k8s.io`
255 finalizer on the associated GatewayClass. This ensures that a GatewayClass
256 associated with a Gateway is not deleted while in use. \n GatewayClass is
257 a Cluster level resource."
258 properties:
259 apiVersion:
260 description: 'APIVersion defines the versioned schema of this representation
261 of an object. Servers should convert recognized schemas to the latest
262 internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
263 type: string
264 kind:
265 description: 'Kind is a string value representing the REST resource this
266 object represents. Servers may infer this from the endpoint the client
267 submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
268 type: string
269 metadata:
270 type: object
271 spec:
272 description: Spec defines the desired state of GatewayClass.
273 properties:
274 controllerName:
275 description: "ControllerName is the name of the controller that is
276 managing Gateways of this class. The value of this field MUST be
277 a domain prefixed path. \n Example: \"example.net/gateway-controller\".
278 \n This field is not mutable and cannot be empty. \n Support: Core"
279 maxLength: 253
280 minLength: 1
281 pattern: ^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*\/[A-Za-z0-9\/\-._~%!$&'()*+,;=:]+$
282 type: string
283 x-kubernetes-validations:
284 - message: Value is immutable
285 rule: self == oldSelf
286 description:
287 description: Description helps describe a GatewayClass with more details.
288 maxLength: 64
289 type: string
290 parametersRef:
291 description: "ParametersRef is a reference to a resource that contains
292 the configuration parameters corresponding to the GatewayClass.
293 This is optional if the controller does not require any additional
294 configuration. \n ParametersRef can reference a standard Kubernetes
295 resource, i.e. ConfigMap, or an implementation-specific custom resource.
296 The resource can be cluster-scoped or namespace-scoped. \n If the
297 referent cannot be found, the GatewayClass's \"InvalidParameters\"
298 status condition will be true. \n Support: Implementation-specific"
299 properties:
300 group:
301 description: Group is the group of the referent.
302 maxLength: 253
303 pattern: ^$|^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$
304 type: string
305 kind:
306 description: Kind is kind of the referent.
307 maxLength: 63
308 minLength: 1
309 pattern: ^[a-zA-Z]([-a-zA-Z0-9]*[a-zA-Z0-9])?$
310 type: string
311 name:
312 description: Name is the name of the referent.
313 maxLength: 253
314 minLength: 1
315 type: string
316 namespace:
317 description: Namespace is the namespace of the referent. This
318 field is required when referring to a Namespace-scoped resource
319 and MUST be unset when referring to a Cluster-scoped resource.
320 maxLength: 63
321 minLength: 1
322 pattern: ^[a-z0-9]([-a-z0-9]*[a-z0-9])?$
323 type: string
324 required:
325 - group
326 - kind
327 - name
328 type: object
329 required:
330 - controllerName
331 type: object
332 status:
333 default:
334 conditions:
335 - lastTransitionTime: "1970-01-01T00:00:00Z"
336 message: Waiting for controller
337 reason: Waiting
338 status: Unknown
339 type: Accepted
340 description: "Status defines the current state of GatewayClass. \n Implementations
341 MUST populate status on all GatewayClass resources which specify their
342 controller name."
343 properties:
344 conditions:
345 default:
346 - lastTransitionTime: "1970-01-01T00:00:00Z"
347 message: Waiting for controller
348 reason: Pending
349 status: Unknown
350 type: Accepted
351 description: "Conditions is the current status from the controller
352 for this GatewayClass. \n Controllers should prefer to publish conditions
353 using values of GatewayClassConditionType for the type of each Condition."
354 items:
355 description: "Condition contains details for one aspect of the current
356 state of this API Resource. --- This struct is intended for direct
357 use as an array at the field path .status.conditions. For example,
358 \n type FooStatus struct{ // Represents the observations of a
359 foo's current state. // Known .status.conditions.type are: \"Available\",
360 \"Progressing\", and \"Degraded\" // +patchMergeKey=type // +patchStrategy=merge
361 // +listType=map // +listMapKey=type Conditions []metav1.Condition
362 `json:\"conditions,omitempty\" patchStrategy:\"merge\" patchMergeKey:\"type\"
363 protobuf:\"bytes,1,rep,name=conditions\"` \n // other fields }"
364 properties:
365 lastTransitionTime:
366 description: lastTransitionTime is the last time the condition
367 transitioned from one status to another. This should be when
368 the underlying condition changed. If that is not known, then
369 using the time when the API field changed is acceptable.
370 format: date-time
371 type: string
372 message:
373 description: message is a human readable message indicating
374 details about the transition. This may be an empty string.
375 maxLength: 32768
376 type: string
377 observedGeneration:
378 description: observedGeneration represents the .metadata.generation
379 that the condition was set based upon. For instance, if .metadata.generation
380 is currently 12, but the .status.conditions[x].observedGeneration
381 is 9, the condition is out of date with respect to the current
382 state of the instance.
383 format: int64
384 minimum: 0
385 type: integer
386 reason:
387 description: reason contains a programmatic identifier indicating
388 the reason for the condition's last transition. Producers
389 of specific condition types may define expected values and
390 meanings for this field, and whether the values are considered
391 a guaranteed API. The value should be a CamelCase string.
392 This field may not be empty.
393 maxLength: 1024
394 minLength: 1
395 pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$
396 type: string
397 status:
398 description: status of the condition, one of True, False, Unknown.
399 enum:
400 - "True"
401 - "False"
402 - Unknown
403 type: string
404 type:
405 description: type of condition in CamelCase or in foo.example.com/CamelCase.
406 --- Many .condition.type values are consistent across resources
407 like Available, but because arbitrary conditions can be useful
408 (see .node.status.conditions), the ability to deconflict is
409 important. The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt)
410 maxLength: 316
411 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])$
412 type: string
413 required:
414 - lastTransitionTime
415 - message
416 - reason
417 - status
418 - type
419 type: object
420 maxItems: 8
421 type: array
422 x-kubernetes-list-map-keys:
423 - type
424 x-kubernetes-list-type: map
425 type: object
426 required:
427 - spec
428 type: object
429 served: true
430 storage: true
431 subresources:
432 status: {}
433status:
434 acceptedNames:
435 kind: ""
436 plural: ""
437 conditions: null
438 storedVersions: null
View as plain text