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