sigs.k8s.io/gateway-api@v1.0.0/config/crd/experimental/gateway.networking.k8s.io_gatewayclasses.yaml (about) 1 apiVersion: apiextensions.k8s.io/v1 2 kind: CustomResourceDefinition 3 metadata: 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 10 spec: 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: {} 491 status: 492 acceptedNames: 493 kind: "" 494 plural: "" 495 conditions: null 496 storedVersions: null