sigs.k8s.io/gateway-api@v1.0.0/config/crd/standard/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: standard 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 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: {} 433 status: 434 acceptedNames: 435 kind: "" 436 plural: "" 437 conditions: null 438 storedVersions: null