github.com/oam-dev/kubevela@v1.9.11/pkg/velaql/providers/query/testdata/gateway/crds/gateway.networking.k8s.io_gateways.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/1538
     6      gateway.networking.k8s.io/bundle-version: v0.6.2
     7      gateway.networking.k8s.io/channel: standard
     8    creationTimestamp: null
     9    name: gateways.gateway.networking.k8s.io
    10  spec:
    11    group: gateway.networking.k8s.io
    12    names:
    13      categories:
    14        - gateway-api
    15      kind: Gateway
    16      listKind: GatewayList
    17      plural: gateways
    18      shortNames:
    19        - gtw
    20      singular: gateway
    21    scope: Namespaced
    22    versions:
    23      - additionalPrinterColumns:
    24          - jsonPath: .spec.gatewayClassName
    25            name: Class
    26            type: string
    27          - jsonPath: .status.addresses[*].value
    28            name: Address
    29            type: string
    30          - jsonPath: .status.conditions[?(@.type=="Programmed")].status
    31            name: Programmed
    32            type: string
    33          - jsonPath: .metadata.creationTimestamp
    34            name: Age
    35            type: date
    36        deprecated: true
    37        deprecationWarning: The v1alpha2 version of Gateway has been deprecated and will
    38          be removed in a future release of the API. Please upgrade to v1beta1.
    39        name: v1alpha2
    40        schema:
    41          openAPIV3Schema:
    42            description: Gateway represents an instance of a service-traffic handling
    43              infrastructure by binding Listeners to a set of IP addresses.
    44            properties:
    45              apiVersion:
    46                description: 'APIVersion defines the versioned schema of this representation
    47                of an object. Servers should convert recognized schemas to the latest
    48                internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
    49                type: string
    50              kind:
    51                description: 'Kind is a string value representing the REST resource this
    52                object represents. Servers may infer this from the endpoint the client
    53                submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
    54                type: string
    55              metadata:
    56                type: object
    57              spec:
    58                description: Spec defines the desired state of Gateway.
    59                properties:
    60                  addresses:
    61                    description: "Addresses requested for this Gateway. This is optional
    62                    and behavior can depend on the implementation. If a value is set
    63                    in the spec and the requested address is invalid or unavailable,
    64                    the implementation MUST indicate this in the associated entry in
    65                    GatewayStatus.Addresses. \n The Addresses field represents a request
    66                    for the address(es) on the \"outside of the Gateway\", that traffic
    67                    bound for this Gateway will use. This could be the IP address or
    68                    hostname of an external load balancer or other networking infrastructure,
    69                    or some other address that traffic will be sent to. \n The .listener.hostname
    70                    field is used to route traffic that has already arrived at the Gateway
    71                    to the correct in-cluster destination. \n If no Addresses are specified,
    72                    the implementation MAY schedule the Gateway in an implementation-specific
    73                    manner, assigning an appropriate set of Addresses. \n The implementation
    74                    MUST bind all Listeners to every GatewayAddress that it assigns
    75                    to the Gateway and add a corresponding entry in GatewayStatus.Addresses.
    76                    \n Support: Extended"
    77                    items:
    78                      description: GatewayAddress describes an address that can be bound
    79                        to a Gateway.
    80                      properties:
    81                        type:
    82                          default: IPAddress
    83                          description: Type of the address.
    84                          maxLength: 253
    85                          minLength: 1
    86                          pattern: ^Hostname|IPAddress|NamedAddress|[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*\/[A-Za-z0-9\/\-._~%!$&'()*+,;=:]+$
    87                          type: string
    88                        value:
    89                          description: "Value of the address. The validity of the values
    90                          will depend on the type and support by the controller. \n
    91                          Examples: `1.2.3.4`, `128::1`, `my-ip-address`."
    92                          maxLength: 253
    93                          minLength: 1
    94                          type: string
    95                      required:
    96                        - value
    97                      type: object
    98                    maxItems: 16
    99                    type: array
   100                  gatewayClassName:
   101                    description: GatewayClassName used for this Gateway. This is the name
   102                      of a GatewayClass resource.
   103                    maxLength: 253
   104                    minLength: 1
   105                    type: string
   106                  listeners:
   107                    description: "Listeners associated with this Gateway. Listeners define
   108                    logical endpoints that are bound on this Gateway's addresses. At
   109                    least one Listener MUST be specified. \n Each listener in a Gateway
   110                    must have a unique combination of Hostname, Port, and Protocol.
   111                    \n An implementation MAY group Listeners by Port and then collapse
   112                    each group of Listeners into a single Listener if the implementation
   113                    determines that the Listeners in the group are \"compatible\". An
   114                    implementation MAY also group together and collapse compatible Listeners
   115                    belonging to different Gateways. \n For example, an implementation
   116                    might consider Listeners to be compatible with each other if all
   117                    of the following conditions are met: \n 1. Either each Listener
   118                    within the group specifies the \"HTTP\" Protocol or each Listener
   119                    within the group specifies either the \"HTTPS\" or \"TLS\" Protocol.
   120                    \n 2. Each Listener within the group specifies a Hostname that is
   121                    unique within the group. \n 3. As a special case, one Listener within
   122                    a group may omit Hostname, in which case this Listener matches when
   123                    no other Listener matches. \n If the implementation does collapse
   124                    compatible Listeners, the hostname provided in the incoming client
   125                    request MUST be matched to a Listener to find the correct set of
   126                    Routes. The incoming hostname MUST be matched using the Hostname
   127                    field for each Listener in order of most to least specific. That
   128                    is, exact matches must be processed before wildcard matches. \n
   129                    If this field specifies multiple Listeners that have the same Port
   130                    value but are not compatible, the implementation must raise a \"Conflicted\"
   131                    condition in the Listener status. \n Support: Core"
   132                    items:
   133                      description: Listener embodies the concept of a logical endpoint
   134                        where a Gateway accepts network connections.
   135                      properties:
   136                        allowedRoutes:
   137                          default:
   138                            namespaces:
   139                              from: Same
   140                          description: "AllowedRoutes defines the types of routes that
   141                          MAY be attached to a Listener and the trusted namespaces where
   142                          those Route resources MAY be present. \n Although a client
   143                          request may match multiple route rules, only one rule may
   144                          ultimately receive the request. Matching precedence MUST be
   145                          determined in order of the following criteria: \n * The most
   146                          specific match as defined by the Route type. * The oldest
   147                          Route based on creation timestamp. For example, a Route with
   148                          a creation timestamp of \"2020-09-08 01:02:03\" is given precedence
   149                          over a Route with a creation timestamp of \"2020-09-08 01:02:04\".
   150                          * If everything else is equivalent, the Route appearing first
   151                          in alphabetical order (namespace/name) should be given precedence.
   152                          For example, foo/bar is given precedence over foo/baz. \n
   153                          All valid rules within a Route attached to this Listener should
   154                          be implemented. Invalid Route rules can be ignored (sometimes
   155                          that will mean the full Route). If a Route rule transitions
   156                          from valid to invalid, support for that Route rule should
   157                          be dropped to ensure consistency. For example, even if a filter
   158                          specified by a Route rule is invalid, the rest of the rules
   159                          within that Route should still be supported. \n Support: Core"
   160                          properties:
   161                            kinds:
   162                              description: "Kinds specifies the groups and kinds of Routes
   163                              that are allowed to bind to this Gateway Listener. When
   164                              unspecified or empty, the kinds of Routes selected are
   165                              determined using the Listener protocol. \n A RouteGroupKind
   166                              MUST correspond to kinds of Routes that are compatible
   167                              with the application protocol specified in the Listener's
   168                              Protocol field. If an implementation does not support
   169                              or recognize this resource type, it MUST set the \"ResolvedRefs\"
   170                              condition to False for this Listener with the \"InvalidRouteKinds\"
   171                              reason. \n Support: Core"
   172                              items:
   173                                description: RouteGroupKind indicates the group and kind
   174                                  of a Route resource.
   175                                properties:
   176                                  group:
   177                                    default: gateway.networking.k8s.io
   178                                    description: Group is the group of the Route.
   179                                    maxLength: 253
   180                                    pattern: ^$|^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$
   181                                    type: string
   182                                  kind:
   183                                    description: Kind is the kind of the Route.
   184                                    maxLength: 63
   185                                    minLength: 1
   186                                    pattern: ^[a-zA-Z]([-a-zA-Z0-9]*[a-zA-Z0-9])?$
   187                                    type: string
   188                                required:
   189                                  - kind
   190                                type: object
   191                              maxItems: 8
   192                              type: array
   193                            namespaces:
   194                              default:
   195                                from: Same
   196                              description: "Namespaces indicates namespaces from which
   197                              Routes may be attached to this Listener. This is restricted
   198                              to the namespace of this Gateway by default. \n Support:
   199                              Core"
   200                              properties:
   201                                from:
   202                                  default: Same
   203                                  description: "From indicates where Routes will be selected
   204                                  for this Gateway. Possible values are: * All: Routes
   205                                  in all namespaces may be used by this Gateway. * Selector:
   206                                  Routes in namespaces selected by the selector may
   207                                  be used by this Gateway. * Same: Only Routes in the
   208                                  same namespace may be used by this Gateway. \n Support:
   209                                  Core"
   210                                  enum:
   211                                    - All
   212                                    - Selector
   213                                    - Same
   214                                  type: string
   215                                selector:
   216                                  description: "Selector must be specified when From is
   217                                  set to \"Selector\". In that case, only Routes in
   218                                  Namespaces matching this Selector will be selected
   219                                  by this Gateway. This field is ignored for other values
   220                                  of \"From\". \n Support: Core"
   221                                  properties:
   222                                    matchExpressions:
   223                                      description: matchExpressions is a list of label
   224                                        selector requirements. The requirements are ANDed.
   225                                      items:
   226                                        description: A label selector requirement is a
   227                                          selector that contains values, a key, and an
   228                                          operator that relates the key and values.
   229                                        properties:
   230                                          key:
   231                                            description: key is the label key that the
   232                                              selector applies to.
   233                                            type: string
   234                                          operator:
   235                                            description: operator represents a key's relationship
   236                                              to a set of values. Valid operators are
   237                                              In, NotIn, Exists and DoesNotExist.
   238                                            type: string
   239                                          values:
   240                                            description: values is an array of string
   241                                              values. If the operator is In or NotIn,
   242                                              the values array must be non-empty. If the
   243                                              operator is Exists or DoesNotExist, the
   244                                              values array must be empty. This array is
   245                                              replaced during a strategic merge patch.
   246                                            items:
   247                                              type: string
   248                                            type: array
   249                                        required:
   250                                          - key
   251                                          - operator
   252                                        type: object
   253                                      type: array
   254                                    matchLabels:
   255                                      additionalProperties:
   256                                        type: string
   257                                      description: matchLabels is a map of {key,value}
   258                                        pairs. A single {key,value} in the matchLabels
   259                                        map is equivalent to an element of matchExpressions,
   260                                        whose key field is "key", the operator is "In",
   261                                        and the values array contains only "value". The
   262                                        requirements are ANDed.
   263                                      type: object
   264                                  type: object
   265                                  x-kubernetes-map-type: atomic
   266                              type: object
   267                          type: object
   268                        hostname:
   269                          description: "Hostname specifies the virtual hostname to match
   270                          for protocol types that define this concept. When unspecified,
   271                          all hostnames are matched. This field is ignored for protocols
   272                          that don't require hostname based matching. \n Implementations
   273                          MUST apply Hostname matching appropriately for each of the
   274                          following protocols: \n * TLS: The Listener Hostname MUST
   275                          match the SNI. * HTTP: The Listener Hostname MUST match the
   276                          Host header of the request. * HTTPS: The Listener Hostname
   277                          SHOULD match at both the TLS and HTTP protocol layers as described
   278                          above. If an implementation does not ensure that both the
   279                          SNI and Host header match the Listener hostname, it MUST clearly
   280                          document that. \n For HTTPRoute and TLSRoute resources, there
   281                          is an interaction with the `spec.hostnames` array. When both
   282                          listener and route specify hostnames, there MUST be an intersection
   283                          between the values for a Route to be accepted. For more information,
   284                          refer to the Route specific Hostnames documentation. \n Hostnames
   285                          that are prefixed with a wildcard label (`*.`) are interpreted
   286                          as a suffix match. That means that a match for `*.example.com`
   287                          would match both `test.example.com`, and `foo.test.example.com`,
   288                          but not `example.com`. \n Support: Core"
   289                          maxLength: 253
   290                          minLength: 1
   291                          pattern: ^(\*\.)?[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$
   292                          type: string
   293                        name:
   294                          description: "Name is the name of the Listener. This name MUST
   295                          be unique within a Gateway. \n Support: Core"
   296                          maxLength: 253
   297                          minLength: 1
   298                          pattern: ^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$
   299                          type: string
   300                        port:
   301                          description: "Port is the network port. Multiple listeners may
   302                          use the same port, subject to the Listener compatibility rules.
   303                          \n Support: Core"
   304                          format: int32
   305                          maximum: 65535
   306                          minimum: 1
   307                          type: integer
   308                        protocol:
   309                          description: "Protocol specifies the network protocol this listener
   310                          expects to receive. \n Support: Core"
   311                          maxLength: 255
   312                          minLength: 1
   313                          pattern: ^[a-zA-Z0-9]([-a-zSA-Z0-9]*[a-zA-Z0-9])?$|[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*\/[A-Za-z0-9]+$
   314                          type: string
   315                        tls:
   316                          description: "TLS is the TLS configuration for the Listener.
   317                          This field is required if the Protocol field is \"HTTPS\"
   318                          or \"TLS\". It is invalid to set this field if the Protocol
   319                          field is \"HTTP\", \"TCP\", or \"UDP\". \n The association
   320                          of SNIs to Certificate defined in GatewayTLSConfig is defined
   321                          based on the Hostname field for this listener. \n The GatewayClass
   322                          MUST use the longest matching SNI out of all available certificates
   323                          for any TLS handshake. \n Support: Core"
   324                          properties:
   325                            certificateRefs:
   326                              description: "CertificateRefs contains a series of references
   327                              to Kubernetes objects that contains TLS certificates and
   328                              private keys. These certificates are used to establish
   329                              a TLS handshake for requests that match the hostname of
   330                              the associated listener. \n A single CertificateRef to
   331                              a Kubernetes Secret has \"Core\" support. Implementations
   332                              MAY choose to support attaching multiple certificates
   333                              to a Listener, but this behavior is implementation-specific.
   334                              \n References to a resource in different namespace are
   335                              invalid UNLESS there is a ReferenceGrant in the target
   336                              namespace that allows the certificate to be attached.
   337                              If a ReferenceGrant does not allow this reference, the
   338                              \"ResolvedRefs\" condition MUST be set to False for this
   339                              listener with the \"RefNotPermitted\" reason. \n This
   340                              field is required to have at least one element when the
   341                              mode is set to \"Terminate\" (default) and is optional
   342                              otherwise. \n CertificateRefs can reference to standard
   343                              Kubernetes resources, i.e. Secret, or implementation-specific
   344                              custom resources. \n Support: Core - A single reference
   345                              to a Kubernetes Secret of type kubernetes.io/tls \n Support:
   346                              Implementation-specific (More than one reference or other
   347                              resource types)"
   348                              items:
   349                                description: "SecretObjectReference identifies an API
   350                                object including its namespace, defaulting to Secret.
   351                                \n The API object must be valid in the cluster; the
   352                                Group and Kind must be registered in the cluster for
   353                                this reference to be valid. \n References to objects
   354                                with invalid Group and Kind are not valid, and must
   355                                be rejected by the implementation, with appropriate
   356                                Conditions set on the containing object."
   357                                properties:
   358                                  group:
   359                                    default: ""
   360                                    description: Group is the group of the referent. For
   361                                      example, "gateway.networking.k8s.io". When unspecified
   362                                      or empty string, core API group is inferred.
   363                                    maxLength: 253
   364                                    pattern: ^$|^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$
   365                                    type: string
   366                                  kind:
   367                                    default: Secret
   368                                    description: Kind is kind of the referent. For example
   369                                      "Secret".
   370                                    maxLength: 63
   371                                    minLength: 1
   372                                    pattern: ^[a-zA-Z]([-a-zA-Z0-9]*[a-zA-Z0-9])?$
   373                                    type: string
   374                                  name:
   375                                    description: Name is the name of the referent.
   376                                    maxLength: 253
   377                                    minLength: 1
   378                                    type: string
   379                                  namespace:
   380                                    description: "Namespace is the namespace of the backend.
   381                                    When unspecified, the local namespace is inferred.
   382                                    \n Note that when a namespace is specified, a ReferenceGrant
   383                                    object is required in the referent namespace to
   384                                    allow that namespace's owner to accept the reference.
   385                                    See the ReferenceGrant documentation for details.
   386                                    \n Support: Core"
   387                                    maxLength: 63
   388                                    minLength: 1
   389                                    pattern: ^[a-z0-9]([-a-z0-9]*[a-z0-9])?$
   390                                    type: string
   391                                required:
   392                                  - name
   393                                type: object
   394                              maxItems: 64
   395                              type: array
   396                            mode:
   397                              default: Terminate
   398                              description: "Mode defines the TLS behavior for the TLS
   399                              session initiated by the client. There are two possible
   400                              modes: \n - Terminate: The TLS session between the downstream
   401                              client and the Gateway is terminated at the Gateway. This
   402                              mode requires certificateRefs to be set and contain at
   403                              least one element. - Passthrough: The TLS session is NOT
   404                              terminated by the Gateway. This implies that the Gateway
   405                              can't decipher the TLS stream except for the ClientHello
   406                              message of the TLS protocol. CertificateRefs field is
   407                              ignored in this mode. \n Support: Core"
   408                              enum:
   409                                - Terminate
   410                                - Passthrough
   411                              type: string
   412                            options:
   413                              additionalProperties:
   414                                description: AnnotationValue is the value of an annotation
   415                                  in Gateway API. This is used for validation of maps
   416                                  such as TLS options. This roughly matches Kubernetes
   417                                  annotation validation, although the length validation
   418                                  in that case is based on the entire size of the annotations
   419                                  struct.
   420                                maxLength: 4096
   421                                minLength: 0
   422                                type: string
   423                              description: "Options are a list of key/value pairs to enable
   424                              extended TLS configuration for each implementation. For
   425                              example, configuring the minimum TLS version or supported
   426                              cipher suites. \n A set of common keys MAY be defined
   427                              by the API in the future. To avoid any ambiguity, implementation-specific
   428                              definitions MUST use domain-prefixed names, such as `example.com/my-custom-option`.
   429                              Un-prefixed names are reserved for key names defined by
   430                              Gateway API. \n Support: Implementation-specific"
   431                              maxProperties: 16
   432                              type: object
   433                          type: object
   434                      required:
   435                        - name
   436                        - port
   437                        - protocol
   438                      type: object
   439                    maxItems: 64
   440                    minItems: 1
   441                    type: array
   442                    x-kubernetes-list-map-keys:
   443                      - name
   444                    x-kubernetes-list-type: map
   445                required:
   446                  - gatewayClassName
   447                  - listeners
   448                type: object
   449              status:
   450                default:
   451                  conditions:
   452                    - lastTransitionTime: "1970-01-01T00:00:00Z"
   453                      message: Waiting for controller
   454                      reason: Pending
   455                      status: Unknown
   456                      type: Accepted
   457                    - lastTransitionTime: "1970-01-01T00:00:00Z"
   458                      message: Waiting for controller
   459                      reason: Pending
   460                      status: Unknown
   461                      type: Programmed
   462                description: Status defines the current state of Gateway.
   463                properties:
   464                  addresses:
   465                    description: Addresses lists the IP addresses that have actually been
   466                      bound to the Gateway. These addresses may differ from the addresses
   467                      in the Spec, e.g. if the Gateway automatically assigns an address
   468                      from a reserved pool.
   469                    items:
   470                      description: GatewayAddress describes an address that can be bound
   471                        to a Gateway.
   472                      properties:
   473                        type:
   474                          default: IPAddress
   475                          description: Type of the address.
   476                          maxLength: 253
   477                          minLength: 1
   478                          pattern: ^Hostname|IPAddress|NamedAddress|[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*\/[A-Za-z0-9\/\-._~%!$&'()*+,;=:]+$
   479                          type: string
   480                        value:
   481                          description: "Value of the address. The validity of the values
   482                          will depend on the type and support by the controller. \n
   483                          Examples: `1.2.3.4`, `128::1`, `my-ip-address`."
   484                          maxLength: 253
   485                          minLength: 1
   486                          type: string
   487                      required:
   488                        - value
   489                      type: object
   490                    maxItems: 16
   491                    type: array
   492                  conditions:
   493                    default:
   494                      - lastTransitionTime: "1970-01-01T00:00:00Z"
   495                        message: Waiting for controller
   496                        reason: Pending
   497                        status: Unknown
   498                        type: Accepted
   499                      - lastTransitionTime: "1970-01-01T00:00:00Z"
   500                        message: Waiting for controller
   501                        reason: Pending
   502                        status: Unknown
   503                        type: Programmed
   504                    description: "Conditions describe the current conditions of the Gateway.
   505                    \n Implementations should prefer to express Gateway conditions using
   506                    the `GatewayConditionType` and `GatewayConditionReason` constants
   507                    so that operators and tools can converge on a common vocabulary
   508                    to describe Gateway state. \n Known condition types are: \n * \"Accepted\"
   509                    * \"Programmed\" * \"Ready\""
   510                    items:
   511                      description: "Condition contains details for one aspect of the current
   512                      state of this API Resource. --- This struct is intended for direct
   513                      use as an array at the field path .status.conditions.  For example,
   514                      \n type FooStatus struct{ // Represents the observations of a
   515                      foo's current state. // Known .status.conditions.type are: \"Available\",
   516                      \"Progressing\", and \"Degraded\" // +patchMergeKey=type // +patchStrategy=merge
   517                      // +listType=map // +listMapKey=type Conditions []metav1.Condition
   518                      `json:\"conditions,omitempty\" patchStrategy:\"merge\" patchMergeKey:\"type\"
   519                      protobuf:\"bytes,1,rep,name=conditions\"` \n // other fields }"
   520                      properties:
   521                        lastTransitionTime:
   522                          description: lastTransitionTime is the last time the condition
   523                            transitioned from one status to another. This should be when
   524                            the underlying condition changed.  If that is not known, then
   525                            using the time when the API field changed is acceptable.
   526                          format: date-time
   527                          type: string
   528                        message:
   529                          description: message is a human readable message indicating
   530                            details about the transition. This may be an empty string.
   531                          maxLength: 32768
   532                          type: string
   533                        observedGeneration:
   534                          description: observedGeneration represents the .metadata.generation
   535                            that the condition was set based upon. For instance, if .metadata.generation
   536                            is currently 12, but the .status.conditions[x].observedGeneration
   537                            is 9, the condition is out of date with respect to the current
   538                            state of the instance.
   539                          format: int64
   540                          minimum: 0
   541                          type: integer
   542                        reason:
   543                          description: reason contains a programmatic identifier indicating
   544                            the reason for the condition's last transition. Producers
   545                            of specific condition types may define expected values and
   546                            meanings for this field, and whether the values are considered
   547                            a guaranteed API. The value should be a CamelCase string.
   548                            This field may not be empty.
   549                          maxLength: 1024
   550                          minLength: 1
   551                          pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$
   552                          type: string
   553                        status:
   554                          description: status of the condition, one of True, False, Unknown.
   555                          enum:
   556                            - "True"
   557                            - "False"
   558                            - Unknown
   559                          type: string
   560                        type:
   561                          description: type of condition in CamelCase or in foo.example.com/CamelCase.
   562                            --- Many .condition.type values are consistent across resources
   563                            like Available, but because arbitrary conditions can be useful
   564                            (see .node.status.conditions), the ability to deconflict is
   565                            important. The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt)
   566                          maxLength: 316
   567                          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])$
   568                          type: string
   569                      required:
   570                        - lastTransitionTime
   571                        - message
   572                        - reason
   573                        - status
   574                        - type
   575                      type: object
   576                    maxItems: 8
   577                    type: array
   578                    x-kubernetes-list-map-keys:
   579                      - type
   580                    x-kubernetes-list-type: map
   581                  listeners:
   582                    description: Listeners provide status for each unique listener port
   583                      defined in the Spec.
   584                    items:
   585                      description: ListenerStatus is the status associated with a Listener.
   586                      properties:
   587                        attachedRoutes:
   588                          description: AttachedRoutes represents the total number of Routes
   589                            that have been successfully attached to this Listener.
   590                          format: int32
   591                          type: integer
   592                        conditions:
   593                          description: Conditions describe the current condition of this
   594                            listener.
   595                          items:
   596                            description: "Condition contains details for one aspect of
   597                            the current state of this API Resource. --- This struct
   598                            is intended for direct use as an array at the field path
   599                            .status.conditions.  For example, \n type FooStatus struct{
   600                            // Represents the observations of a foo's current state.
   601                            // Known .status.conditions.type are: \"Available\", \"Progressing\",
   602                            and \"Degraded\" // +patchMergeKey=type // +patchStrategy=merge
   603                            // +listType=map // +listMapKey=type Conditions []metav1.Condition
   604                            `json:\"conditions,omitempty\" patchStrategy:\"merge\" patchMergeKey:\"type\"
   605                            protobuf:\"bytes,1,rep,name=conditions\"` \n // other fields
   606                            }"
   607                            properties:
   608                              lastTransitionTime:
   609                                description: lastTransitionTime is the last time the condition
   610                                  transitioned from one status to another. This should
   611                                  be when the underlying condition changed.  If that is
   612                                  not known, then using the time when the API field changed
   613                                  is acceptable.
   614                                format: date-time
   615                                type: string
   616                              message:
   617                                description: message is a human readable message indicating
   618                                  details about the transition. This may be an empty string.
   619                                maxLength: 32768
   620                                type: string
   621                              observedGeneration:
   622                                description: observedGeneration represents the .metadata.generation
   623                                  that the condition was set based upon. For instance,
   624                                  if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration
   625                                  is 9, the condition is out of date with respect to the
   626                                  current state of the instance.
   627                                format: int64
   628                                minimum: 0
   629                                type: integer
   630                              reason:
   631                                description: reason contains a programmatic identifier
   632                                  indicating the reason for the condition's last transition.
   633                                  Producers of specific condition types may define expected
   634                                  values and meanings for this field, and whether the
   635                                  values are considered a guaranteed API. The value should
   636                                  be a CamelCase string. This field may not be empty.
   637                                maxLength: 1024
   638                                minLength: 1
   639                                pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$
   640                                type: string
   641                              status:
   642                                description: status of the condition, one of True, False,
   643                                  Unknown.
   644                                enum:
   645                                  - "True"
   646                                  - "False"
   647                                  - Unknown
   648                                type: string
   649                              type:
   650                                description: type of condition in CamelCase or in foo.example.com/CamelCase.
   651                                  --- Many .condition.type values are consistent across
   652                                  resources like Available, but because arbitrary conditions
   653                                  can be useful (see .node.status.conditions), the ability
   654                                  to deconflict is important. The regex it matches is
   655                                  (dns1123SubdomainFmt/)?(qualifiedNameFmt)
   656                                maxLength: 316
   657                                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])$
   658                                type: string
   659                            required:
   660                              - lastTransitionTime
   661                              - message
   662                              - reason
   663                              - status
   664                              - type
   665                            type: object
   666                          maxItems: 8
   667                          type: array
   668                          x-kubernetes-list-map-keys:
   669                            - type
   670                          x-kubernetes-list-type: map
   671                        name:
   672                          description: Name is the name of the Listener that this status
   673                            corresponds to.
   674                          maxLength: 253
   675                          minLength: 1
   676                          pattern: ^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$
   677                          type: string
   678                        supportedKinds:
   679                          description: "SupportedKinds is the list indicating the Kinds
   680                          supported by this listener. This MUST represent the kinds
   681                          an implementation supports for that Listener configuration.
   682                          \n If kinds are specified in Spec that are not supported,
   683                          they MUST NOT appear in this list and an implementation MUST
   684                          set the \"ResolvedRefs\" condition to \"False\" with the \"InvalidRouteKinds\"
   685                          reason. If both valid and invalid Route kinds are specified,
   686                          the implementation MUST reference the valid Route kinds that
   687                          have been specified."
   688                          items:
   689                            description: RouteGroupKind indicates the group and kind of
   690                              a Route resource.
   691                            properties:
   692                              group:
   693                                default: gateway.networking.k8s.io
   694                                description: Group is the group of the Route.
   695                                maxLength: 253
   696                                pattern: ^$|^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$
   697                                type: string
   698                              kind:
   699                                description: Kind is the kind of the Route.
   700                                maxLength: 63
   701                                minLength: 1
   702                                pattern: ^[a-zA-Z]([-a-zA-Z0-9]*[a-zA-Z0-9])?$
   703                                type: string
   704                            required:
   705                              - kind
   706                            type: object
   707                          maxItems: 8
   708                          type: array
   709                      required:
   710                        - attachedRoutes
   711                        - conditions
   712                        - name
   713                        - supportedKinds
   714                      type: object
   715                    maxItems: 64
   716                    type: array
   717                    x-kubernetes-list-map-keys:
   718                      - name
   719                    x-kubernetes-list-type: map
   720                type: object
   721            required:
   722              - spec
   723            type: object
   724        served: true
   725        storage: false
   726        subresources:
   727          status: {}
   728      - additionalPrinterColumns:
   729          - jsonPath: .spec.gatewayClassName
   730            name: Class
   731            type: string
   732          - jsonPath: .status.addresses[*].value
   733            name: Address
   734            type: string
   735          - jsonPath: .status.conditions[?(@.type=="Programmed")].status
   736            name: Programmed
   737            type: string
   738          - jsonPath: .metadata.creationTimestamp
   739            name: Age
   740            type: date
   741        name: v1beta1
   742        schema:
   743          openAPIV3Schema:
   744            description: Gateway represents an instance of a service-traffic handling
   745              infrastructure by binding Listeners to a set of IP addresses.
   746            properties:
   747              apiVersion:
   748                description: 'APIVersion defines the versioned schema of this representation
   749                of an object. Servers should convert recognized schemas to the latest
   750                internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
   751                type: string
   752              kind:
   753                description: 'Kind is a string value representing the REST resource this
   754                object represents. Servers may infer this from the endpoint the client
   755                submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
   756                type: string
   757              metadata:
   758                type: object
   759              spec:
   760                description: Spec defines the desired state of Gateway.
   761                properties:
   762                  addresses:
   763                    description: "Addresses requested for this Gateway. This is optional
   764                    and behavior can depend on the implementation. If a value is set
   765                    in the spec and the requested address is invalid or unavailable,
   766                    the implementation MUST indicate this in the associated entry in
   767                    GatewayStatus.Addresses. \n The Addresses field represents a request
   768                    for the address(es) on the \"outside of the Gateway\", that traffic
   769                    bound for this Gateway will use. This could be the IP address or
   770                    hostname of an external load balancer or other networking infrastructure,
   771                    or some other address that traffic will be sent to. \n The .listener.hostname
   772                    field is used to route traffic that has already arrived at the Gateway
   773                    to the correct in-cluster destination. \n If no Addresses are specified,
   774                    the implementation MAY schedule the Gateway in an implementation-specific
   775                    manner, assigning an appropriate set of Addresses. \n The implementation
   776                    MUST bind all Listeners to every GatewayAddress that it assigns
   777                    to the Gateway and add a corresponding entry in GatewayStatus.Addresses.
   778                    \n Support: Extended"
   779                    items:
   780                      description: GatewayAddress describes an address that can be bound
   781                        to a Gateway.
   782                      properties:
   783                        type:
   784                          default: IPAddress
   785                          description: Type of the address.
   786                          maxLength: 253
   787                          minLength: 1
   788                          pattern: ^Hostname|IPAddress|NamedAddress|[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*\/[A-Za-z0-9\/\-._~%!$&'()*+,;=:]+$
   789                          type: string
   790                        value:
   791                          description: "Value of the address. The validity of the values
   792                          will depend on the type and support by the controller. \n
   793                          Examples: `1.2.3.4`, `128::1`, `my-ip-address`."
   794                          maxLength: 253
   795                          minLength: 1
   796                          type: string
   797                      required:
   798                        - value
   799                      type: object
   800                    maxItems: 16
   801                    type: array
   802                  gatewayClassName:
   803                    description: GatewayClassName used for this Gateway. This is the name
   804                      of a GatewayClass resource.
   805                    maxLength: 253
   806                    minLength: 1
   807                    type: string
   808                  listeners:
   809                    description: "Listeners associated with this Gateway. Listeners define
   810                    logical endpoints that are bound on this Gateway's addresses. At
   811                    least one Listener MUST be specified. \n Each listener in a Gateway
   812                    must have a unique combination of Hostname, Port, and Protocol.
   813                    \n An implementation MAY group Listeners by Port and then collapse
   814                    each group of Listeners into a single Listener if the implementation
   815                    determines that the Listeners in the group are \"compatible\". An
   816                    implementation MAY also group together and collapse compatible Listeners
   817                    belonging to different Gateways. \n For example, an implementation
   818                    might consider Listeners to be compatible with each other if all
   819                    of the following conditions are met: \n 1. Either each Listener
   820                    within the group specifies the \"HTTP\" Protocol or each Listener
   821                    within the group specifies either the \"HTTPS\" or \"TLS\" Protocol.
   822                    \n 2. Each Listener within the group specifies a Hostname that is
   823                    unique within the group. \n 3. As a special case, one Listener within
   824                    a group may omit Hostname, in which case this Listener matches when
   825                    no other Listener matches. \n If the implementation does collapse
   826                    compatible Listeners, the hostname provided in the incoming client
   827                    request MUST be matched to a Listener to find the correct set of
   828                    Routes. The incoming hostname MUST be matched using the Hostname
   829                    field for each Listener in order of most to least specific. That
   830                    is, exact matches must be processed before wildcard matches. \n
   831                    If this field specifies multiple Listeners that have the same Port
   832                    value but are not compatible, the implementation must raise a \"Conflicted\"
   833                    condition in the Listener status. \n Support: Core"
   834                    items:
   835                      description: Listener embodies the concept of a logical endpoint
   836                        where a Gateway accepts network connections.
   837                      properties:
   838                        allowedRoutes:
   839                          default:
   840                            namespaces:
   841                              from: Same
   842                          description: "AllowedRoutes defines the types of routes that
   843                          MAY be attached to a Listener and the trusted namespaces where
   844                          those Route resources MAY be present. \n Although a client
   845                          request may match multiple route rules, only one rule may
   846                          ultimately receive the request. Matching precedence MUST be
   847                          determined in order of the following criteria: \n * The most
   848                          specific match as defined by the Route type. * The oldest
   849                          Route based on creation timestamp. For example, a Route with
   850                          a creation timestamp of \"2020-09-08 01:02:03\" is given precedence
   851                          over a Route with a creation timestamp of \"2020-09-08 01:02:04\".
   852                          * If everything else is equivalent, the Route appearing first
   853                          in alphabetical order (namespace/name) should be given precedence.
   854                          For example, foo/bar is given precedence over foo/baz. \n
   855                          All valid rules within a Route attached to this Listener should
   856                          be implemented. Invalid Route rules can be ignored (sometimes
   857                          that will mean the full Route). If a Route rule transitions
   858                          from valid to invalid, support for that Route rule should
   859                          be dropped to ensure consistency. For example, even if a filter
   860                          specified by a Route rule is invalid, the rest of the rules
   861                          within that Route should still be supported. \n Support: Core"
   862                          properties:
   863                            kinds:
   864                              description: "Kinds specifies the groups and kinds of Routes
   865                              that are allowed to bind to this Gateway Listener. When
   866                              unspecified or empty, the kinds of Routes selected are
   867                              determined using the Listener protocol. \n A RouteGroupKind
   868                              MUST correspond to kinds of Routes that are compatible
   869                              with the application protocol specified in the Listener's
   870                              Protocol field. If an implementation does not support
   871                              or recognize this resource type, it MUST set the \"ResolvedRefs\"
   872                              condition to False for this Listener with the \"InvalidRouteKinds\"
   873                              reason. \n Support: Core"
   874                              items:
   875                                description: RouteGroupKind indicates the group and kind
   876                                  of a Route resource.
   877                                properties:
   878                                  group:
   879                                    default: gateway.networking.k8s.io
   880                                    description: Group is the group of the Route.
   881                                    maxLength: 253
   882                                    pattern: ^$|^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$
   883                                    type: string
   884                                  kind:
   885                                    description: Kind is the kind of the Route.
   886                                    maxLength: 63
   887                                    minLength: 1
   888                                    pattern: ^[a-zA-Z]([-a-zA-Z0-9]*[a-zA-Z0-9])?$
   889                                    type: string
   890                                required:
   891                                  - kind
   892                                type: object
   893                              maxItems: 8
   894                              type: array
   895                            namespaces:
   896                              default:
   897                                from: Same
   898                              description: "Namespaces indicates namespaces from which
   899                              Routes may be attached to this Listener. This is restricted
   900                              to the namespace of this Gateway by default. \n Support:
   901                              Core"
   902                              properties:
   903                                from:
   904                                  default: Same
   905                                  description: "From indicates where Routes will be selected
   906                                  for this Gateway. Possible values are: * All: Routes
   907                                  in all namespaces may be used by this Gateway. * Selector:
   908                                  Routes in namespaces selected by the selector may
   909                                  be used by this Gateway. * Same: Only Routes in the
   910                                  same namespace may be used by this Gateway. \n Support:
   911                                  Core"
   912                                  enum:
   913                                    - All
   914                                    - Selector
   915                                    - Same
   916                                  type: string
   917                                selector:
   918                                  description: "Selector must be specified when From is
   919                                  set to \"Selector\". In that case, only Routes in
   920                                  Namespaces matching this Selector will be selected
   921                                  by this Gateway. This field is ignored for other values
   922                                  of \"From\". \n Support: Core"
   923                                  properties:
   924                                    matchExpressions:
   925                                      description: matchExpressions is a list of label
   926                                        selector requirements. The requirements are ANDed.
   927                                      items:
   928                                        description: A label selector requirement is a
   929                                          selector that contains values, a key, and an
   930                                          operator that relates the key and values.
   931                                        properties:
   932                                          key:
   933                                            description: key is the label key that the
   934                                              selector applies to.
   935                                            type: string
   936                                          operator:
   937                                            description: operator represents a key's relationship
   938                                              to a set of values. Valid operators are
   939                                              In, NotIn, Exists and DoesNotExist.
   940                                            type: string
   941                                          values:
   942                                            description: values is an array of string
   943                                              values. If the operator is In or NotIn,
   944                                              the values array must be non-empty. If the
   945                                              operator is Exists or DoesNotExist, the
   946                                              values array must be empty. This array is
   947                                              replaced during a strategic merge patch.
   948                                            items:
   949                                              type: string
   950                                            type: array
   951                                        required:
   952                                          - key
   953                                          - operator
   954                                        type: object
   955                                      type: array
   956                                    matchLabels:
   957                                      additionalProperties:
   958                                        type: string
   959                                      description: matchLabels is a map of {key,value}
   960                                        pairs. A single {key,value} in the matchLabels
   961                                        map is equivalent to an element of matchExpressions,
   962                                        whose key field is "key", the operator is "In",
   963                                        and the values array contains only "value". The
   964                                        requirements are ANDed.
   965                                      type: object
   966                                  type: object
   967                                  x-kubernetes-map-type: atomic
   968                              type: object
   969                          type: object
   970                        hostname:
   971                          description: "Hostname specifies the virtual hostname to match
   972                          for protocol types that define this concept. When unspecified,
   973                          all hostnames are matched. This field is ignored for protocols
   974                          that don't require hostname based matching. \n Implementations
   975                          MUST apply Hostname matching appropriately for each of the
   976                          following protocols: \n * TLS: The Listener Hostname MUST
   977                          match the SNI. * HTTP: The Listener Hostname MUST match the
   978                          Host header of the request. * HTTPS: The Listener Hostname
   979                          SHOULD match at both the TLS and HTTP protocol layers as described
   980                          above. If an implementation does not ensure that both the
   981                          SNI and Host header match the Listener hostname, it MUST clearly
   982                          document that. \n For HTTPRoute and TLSRoute resources, there
   983                          is an interaction with the `spec.hostnames` array. When both
   984                          listener and route specify hostnames, there MUST be an intersection
   985                          between the values for a Route to be accepted. For more information,
   986                          refer to the Route specific Hostnames documentation. \n Hostnames
   987                          that are prefixed with a wildcard label (`*.`) are interpreted
   988                          as a suffix match. That means that a match for `*.example.com`
   989                          would match both `test.example.com`, and `foo.test.example.com`,
   990                          but not `example.com`. \n Support: Core"
   991                          maxLength: 253
   992                          minLength: 1
   993                          pattern: ^(\*\.)?[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$
   994                          type: string
   995                        name:
   996                          description: "Name is the name of the Listener. This name MUST
   997                          be unique within a Gateway. \n Support: Core"
   998                          maxLength: 253
   999                          minLength: 1
  1000                          pattern: ^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$
  1001                          type: string
  1002                        port:
  1003                          description: "Port is the network port. Multiple listeners may
  1004                          use the same port, subject to the Listener compatibility rules.
  1005                          \n Support: Core"
  1006                          format: int32
  1007                          maximum: 65535
  1008                          minimum: 1
  1009                          type: integer
  1010                        protocol:
  1011                          description: "Protocol specifies the network protocol this listener
  1012                          expects to receive. \n Support: Core"
  1013                          maxLength: 255
  1014                          minLength: 1
  1015                          pattern: ^[a-zA-Z0-9]([-a-zSA-Z0-9]*[a-zA-Z0-9])?$|[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*\/[A-Za-z0-9]+$
  1016                          type: string
  1017                        tls:
  1018                          description: "TLS is the TLS configuration for the Listener.
  1019                          This field is required if the Protocol field is \"HTTPS\"
  1020                          or \"TLS\". It is invalid to set this field if the Protocol
  1021                          field is \"HTTP\", \"TCP\", or \"UDP\". \n The association
  1022                          of SNIs to Certificate defined in GatewayTLSConfig is defined
  1023                          based on the Hostname field for this listener. \n The GatewayClass
  1024                          MUST use the longest matching SNI out of all available certificates
  1025                          for any TLS handshake. \n Support: Core"
  1026                          properties:
  1027                            certificateRefs:
  1028                              description: "CertificateRefs contains a series of references
  1029                              to Kubernetes objects that contains TLS certificates and
  1030                              private keys. These certificates are used to establish
  1031                              a TLS handshake for requests that match the hostname of
  1032                              the associated listener. \n A single CertificateRef to
  1033                              a Kubernetes Secret has \"Core\" support. Implementations
  1034                              MAY choose to support attaching multiple certificates
  1035                              to a Listener, but this behavior is implementation-specific.
  1036                              \n References to a resource in different namespace are
  1037                              invalid UNLESS there is a ReferenceGrant in the target
  1038                              namespace that allows the certificate to be attached.
  1039                              If a ReferenceGrant does not allow this reference, the
  1040                              \"ResolvedRefs\" condition MUST be set to False for this
  1041                              listener with the \"RefNotPermitted\" reason. \n This
  1042                              field is required to have at least one element when the
  1043                              mode is set to \"Terminate\" (default) and is optional
  1044                              otherwise. \n CertificateRefs can reference to standard
  1045                              Kubernetes resources, i.e. Secret, or implementation-specific
  1046                              custom resources. \n Support: Core - A single reference
  1047                              to a Kubernetes Secret of type kubernetes.io/tls \n Support:
  1048                              Implementation-specific (More than one reference or other
  1049                              resource types)"
  1050                              items:
  1051                                description: "SecretObjectReference identifies an API
  1052                                object including its namespace, defaulting to Secret.
  1053                                \n The API object must be valid in the cluster; the
  1054                                Group and Kind must be registered in the cluster for
  1055                                this reference to be valid. \n References to objects
  1056                                with invalid Group and Kind are not valid, and must
  1057                                be rejected by the implementation, with appropriate
  1058                                Conditions set on the containing object."
  1059                                properties:
  1060                                  group:
  1061                                    default: ""
  1062                                    description: Group is the group of the referent. For
  1063                                      example, "gateway.networking.k8s.io". When unspecified
  1064                                      or empty string, core API group is inferred.
  1065                                    maxLength: 253
  1066                                    pattern: ^$|^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$
  1067                                    type: string
  1068                                  kind:
  1069                                    default: Secret
  1070                                    description: Kind is kind of the referent. For example
  1071                                      "Secret".
  1072                                    maxLength: 63
  1073                                    minLength: 1
  1074                                    pattern: ^[a-zA-Z]([-a-zA-Z0-9]*[a-zA-Z0-9])?$
  1075                                    type: string
  1076                                  name:
  1077                                    description: Name is the name of the referent.
  1078                                    maxLength: 253
  1079                                    minLength: 1
  1080                                    type: string
  1081                                  namespace:
  1082                                    description: "Namespace is the namespace of the backend.
  1083                                    When unspecified, the local namespace is inferred.
  1084                                    \n Note that when a namespace is specified, a ReferenceGrant
  1085                                    object is required in the referent namespace to
  1086                                    allow that namespace's owner to accept the reference.
  1087                                    See the ReferenceGrant documentation for details.
  1088                                    \n Support: Core"
  1089                                    maxLength: 63
  1090                                    minLength: 1
  1091                                    pattern: ^[a-z0-9]([-a-z0-9]*[a-z0-9])?$
  1092                                    type: string
  1093                                required:
  1094                                  - name
  1095                                type: object
  1096                              maxItems: 64
  1097                              type: array
  1098                            mode:
  1099                              default: Terminate
  1100                              description: "Mode defines the TLS behavior for the TLS
  1101                              session initiated by the client. There are two possible
  1102                              modes: \n - Terminate: The TLS session between the downstream
  1103                              client and the Gateway is terminated at the Gateway. This
  1104                              mode requires certificateRefs to be set and contain at
  1105                              least one element. - Passthrough: The TLS session is NOT
  1106                              terminated by the Gateway. This implies that the Gateway
  1107                              can't decipher the TLS stream except for the ClientHello
  1108                              message of the TLS protocol. CertificateRefs field is
  1109                              ignored in this mode. \n Support: Core"
  1110                              enum:
  1111                                - Terminate
  1112                                - Passthrough
  1113                              type: string
  1114                            options:
  1115                              additionalProperties:
  1116                                description: AnnotationValue is the value of an annotation
  1117                                  in Gateway API. This is used for validation of maps
  1118                                  such as TLS options. This roughly matches Kubernetes
  1119                                  annotation validation, although the length validation
  1120                                  in that case is based on the entire size of the annotations
  1121                                  struct.
  1122                                maxLength: 4096
  1123                                minLength: 0
  1124                                type: string
  1125                              description: "Options are a list of key/value pairs to enable
  1126                              extended TLS configuration for each implementation. For
  1127                              example, configuring the minimum TLS version or supported
  1128                              cipher suites. \n A set of common keys MAY be defined
  1129                              by the API in the future. To avoid any ambiguity, implementation-specific
  1130                              definitions MUST use domain-prefixed names, such as `example.com/my-custom-option`.
  1131                              Un-prefixed names are reserved for key names defined by
  1132                              Gateway API. \n Support: Implementation-specific"
  1133                              maxProperties: 16
  1134                              type: object
  1135                          type: object
  1136                      required:
  1137                        - name
  1138                        - port
  1139                        - protocol
  1140                      type: object
  1141                    maxItems: 64
  1142                    minItems: 1
  1143                    type: array
  1144                    x-kubernetes-list-map-keys:
  1145                      - name
  1146                    x-kubernetes-list-type: map
  1147                required:
  1148                  - gatewayClassName
  1149                  - listeners
  1150                type: object
  1151              status:
  1152                default:
  1153                  conditions:
  1154                    - lastTransitionTime: "1970-01-01T00:00:00Z"
  1155                      message: Waiting for controller
  1156                      reason: Pending
  1157                      status: Unknown
  1158                      type: Accepted
  1159                    - lastTransitionTime: "1970-01-01T00:00:00Z"
  1160                      message: Waiting for controller
  1161                      reason: Pending
  1162                      status: Unknown
  1163                      type: Programmed
  1164                description: Status defines the current state of Gateway.
  1165                properties:
  1166                  addresses:
  1167                    description: Addresses lists the IP addresses that have actually been
  1168                      bound to the Gateway. These addresses may differ from the addresses
  1169                      in the Spec, e.g. if the Gateway automatically assigns an address
  1170                      from a reserved pool.
  1171                    items:
  1172                      description: GatewayAddress describes an address that can be bound
  1173                        to a Gateway.
  1174                      properties:
  1175                        type:
  1176                          default: IPAddress
  1177                          description: Type of the address.
  1178                          maxLength: 253
  1179                          minLength: 1
  1180                          pattern: ^Hostname|IPAddress|NamedAddress|[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*\/[A-Za-z0-9\/\-._~%!$&'()*+,;=:]+$
  1181                          type: string
  1182                        value:
  1183                          description: "Value of the address. The validity of the values
  1184                          will depend on the type and support by the controller. \n
  1185                          Examples: `1.2.3.4`, `128::1`, `my-ip-address`."
  1186                          maxLength: 253
  1187                          minLength: 1
  1188                          type: string
  1189                      required:
  1190                        - value
  1191                      type: object
  1192                    maxItems: 16
  1193                    type: array
  1194                  conditions:
  1195                    default:
  1196                      - lastTransitionTime: "1970-01-01T00:00:00Z"
  1197                        message: Waiting for controller
  1198                        reason: Pending
  1199                        status: Unknown
  1200                        type: Accepted
  1201                      - lastTransitionTime: "1970-01-01T00:00:00Z"
  1202                        message: Waiting for controller
  1203                        reason: Pending
  1204                        status: Unknown
  1205                        type: Programmed
  1206                    description: "Conditions describe the current conditions of the Gateway.
  1207                    \n Implementations should prefer to express Gateway conditions using
  1208                    the `GatewayConditionType` and `GatewayConditionReason` constants
  1209                    so that operators and tools can converge on a common vocabulary
  1210                    to describe Gateway state. \n Known condition types are: \n * \"Accepted\"
  1211                    * \"Programmed\" * \"Ready\""
  1212                    items:
  1213                      description: "Condition contains details for one aspect of the current
  1214                      state of this API Resource. --- This struct is intended for direct
  1215                      use as an array at the field path .status.conditions.  For example,
  1216                      \n type FooStatus struct{ // Represents the observations of a
  1217                      foo's current state. // Known .status.conditions.type are: \"Available\",
  1218                      \"Progressing\", and \"Degraded\" // +patchMergeKey=type // +patchStrategy=merge
  1219                      // +listType=map // +listMapKey=type Conditions []metav1.Condition
  1220                      `json:\"conditions,omitempty\" patchStrategy:\"merge\" patchMergeKey:\"type\"
  1221                      protobuf:\"bytes,1,rep,name=conditions\"` \n // other fields }"
  1222                      properties:
  1223                        lastTransitionTime:
  1224                          description: lastTransitionTime is the last time the condition
  1225                            transitioned from one status to another. This should be when
  1226                            the underlying condition changed.  If that is not known, then
  1227                            using the time when the API field changed is acceptable.
  1228                          format: date-time
  1229                          type: string
  1230                        message:
  1231                          description: message is a human readable message indicating
  1232                            details about the transition. This may be an empty string.
  1233                          maxLength: 32768
  1234                          type: string
  1235                        observedGeneration:
  1236                          description: observedGeneration represents the .metadata.generation
  1237                            that the condition was set based upon. For instance, if .metadata.generation
  1238                            is currently 12, but the .status.conditions[x].observedGeneration
  1239                            is 9, the condition is out of date with respect to the current
  1240                            state of the instance.
  1241                          format: int64
  1242                          minimum: 0
  1243                          type: integer
  1244                        reason:
  1245                          description: reason contains a programmatic identifier indicating
  1246                            the reason for the condition's last transition. Producers
  1247                            of specific condition types may define expected values and
  1248                            meanings for this field, and whether the values are considered
  1249                            a guaranteed API. The value should be a CamelCase string.
  1250                            This field may not be empty.
  1251                          maxLength: 1024
  1252                          minLength: 1
  1253                          pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$
  1254                          type: string
  1255                        status:
  1256                          description: status of the condition, one of True, False, Unknown.
  1257                          enum:
  1258                            - "True"
  1259                            - "False"
  1260                            - Unknown
  1261                          type: string
  1262                        type:
  1263                          description: type of condition in CamelCase or in foo.example.com/CamelCase.
  1264                            --- Many .condition.type values are consistent across resources
  1265                            like Available, but because arbitrary conditions can be useful
  1266                            (see .node.status.conditions), the ability to deconflict is
  1267                            important. The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt)
  1268                          maxLength: 316
  1269                          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])$
  1270                          type: string
  1271                      required:
  1272                        - lastTransitionTime
  1273                        - message
  1274                        - reason
  1275                        - status
  1276                        - type
  1277                      type: object
  1278                    maxItems: 8
  1279                    type: array
  1280                    x-kubernetes-list-map-keys:
  1281                      - type
  1282                    x-kubernetes-list-type: map
  1283                  listeners:
  1284                    description: Listeners provide status for each unique listener port
  1285                      defined in the Spec.
  1286                    items:
  1287                      description: ListenerStatus is the status associated with a Listener.
  1288                      properties:
  1289                        attachedRoutes:
  1290                          description: AttachedRoutes represents the total number of Routes
  1291                            that have been successfully attached to this Listener.
  1292                          format: int32
  1293                          type: integer
  1294                        conditions:
  1295                          description: Conditions describe the current condition of this
  1296                            listener.
  1297                          items:
  1298                            description: "Condition contains details for one aspect of
  1299                            the current state of this API Resource. --- This struct
  1300                            is intended for direct use as an array at the field path
  1301                            .status.conditions.  For example, \n type FooStatus struct{
  1302                            // Represents the observations of a foo's current state.
  1303                            // Known .status.conditions.type are: \"Available\", \"Progressing\",
  1304                            and \"Degraded\" // +patchMergeKey=type // +patchStrategy=merge
  1305                            // +listType=map // +listMapKey=type Conditions []metav1.Condition
  1306                            `json:\"conditions,omitempty\" patchStrategy:\"merge\" patchMergeKey:\"type\"
  1307                            protobuf:\"bytes,1,rep,name=conditions\"` \n // other fields
  1308                            }"
  1309                            properties:
  1310                              lastTransitionTime:
  1311                                description: lastTransitionTime is the last time the condition
  1312                                  transitioned from one status to another. This should
  1313                                  be when the underlying condition changed.  If that is
  1314                                  not known, then using the time when the API field changed
  1315                                  is acceptable.
  1316                                format: date-time
  1317                                type: string
  1318                              message:
  1319                                description: message is a human readable message indicating
  1320                                  details about the transition. This may be an empty string.
  1321                                maxLength: 32768
  1322                                type: string
  1323                              observedGeneration:
  1324                                description: observedGeneration represents the .metadata.generation
  1325                                  that the condition was set based upon. For instance,
  1326                                  if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration
  1327                                  is 9, the condition is out of date with respect to the
  1328                                  current state of the instance.
  1329                                format: int64
  1330                                minimum: 0
  1331                                type: integer
  1332                              reason:
  1333                                description: reason contains a programmatic identifier
  1334                                  indicating the reason for the condition's last transition.
  1335                                  Producers of specific condition types may define expected
  1336                                  values and meanings for this field, and whether the
  1337                                  values are considered a guaranteed API. The value should
  1338                                  be a CamelCase string. This field may not be empty.
  1339                                maxLength: 1024
  1340                                minLength: 1
  1341                                pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$
  1342                                type: string
  1343                              status:
  1344                                description: status of the condition, one of True, False,
  1345                                  Unknown.
  1346                                enum:
  1347                                  - "True"
  1348                                  - "False"
  1349                                  - Unknown
  1350                                type: string
  1351                              type:
  1352                                description: type of condition in CamelCase or in foo.example.com/CamelCase.
  1353                                  --- Many .condition.type values are consistent across
  1354                                  resources like Available, but because arbitrary conditions
  1355                                  can be useful (see .node.status.conditions), the ability
  1356                                  to deconflict is important. The regex it matches is
  1357                                  (dns1123SubdomainFmt/)?(qualifiedNameFmt)
  1358                                maxLength: 316
  1359                                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])$
  1360                                type: string
  1361                            required:
  1362                              - lastTransitionTime
  1363                              - message
  1364                              - reason
  1365                              - status
  1366                              - type
  1367                            type: object
  1368                          maxItems: 8
  1369                          type: array
  1370                          x-kubernetes-list-map-keys:
  1371                            - type
  1372                          x-kubernetes-list-type: map
  1373                        name:
  1374                          description: Name is the name of the Listener that this status
  1375                            corresponds to.
  1376                          maxLength: 253
  1377                          minLength: 1
  1378                          pattern: ^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$
  1379                          type: string
  1380                        supportedKinds:
  1381                          description: "SupportedKinds is the list indicating the Kinds
  1382                          supported by this listener. This MUST represent the kinds
  1383                          an implementation supports for that Listener configuration.
  1384                          \n If kinds are specified in Spec that are not supported,
  1385                          they MUST NOT appear in this list and an implementation MUST
  1386                          set the \"ResolvedRefs\" condition to \"False\" with the \"InvalidRouteKinds\"
  1387                          reason. If both valid and invalid Route kinds are specified,
  1388                          the implementation MUST reference the valid Route kinds that
  1389                          have been specified."
  1390                          items:
  1391                            description: RouteGroupKind indicates the group and kind of
  1392                              a Route resource.
  1393                            properties:
  1394                              group:
  1395                                default: gateway.networking.k8s.io
  1396                                description: Group is the group of the Route.
  1397                                maxLength: 253
  1398                                pattern: ^$|^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$
  1399                                type: string
  1400                              kind:
  1401                                description: Kind is the kind of the Route.
  1402                                maxLength: 63
  1403                                minLength: 1
  1404                                pattern: ^[a-zA-Z]([-a-zA-Z0-9]*[a-zA-Z0-9])?$
  1405                                type: string
  1406                            required:
  1407                              - kind
  1408                            type: object
  1409                          maxItems: 8
  1410                          type: array
  1411                      required:
  1412                        - attachedRoutes
  1413                        - conditions
  1414                        - name
  1415                        - supportedKinds
  1416                      type: object
  1417                    maxItems: 64
  1418                    type: array
  1419                    x-kubernetes-list-map-keys:
  1420                      - name
  1421                    x-kubernetes-list-type: map
  1422                type: object
  1423            required:
  1424              - spec
  1425            type: object
  1426        served: true
  1427        storage: true
  1428        subresources:
  1429          status: {}
  1430  status:
  1431    acceptedNames:
  1432      kind: ""
  1433      plural: ""
  1434    conditions: null
  1435    storedVersions: null