Update Gateway API version to v0.3.0
Co-authored-by: Tom Moulard <tom.moulard@traefik.io>
This commit is contained in:
parent
6ae50389e6
commit
16f65f669b
11 changed files with 3634 additions and 1404 deletions
|
@ -4,12 +4,14 @@ apiVersion: apiextensions.k8s.io/v1
|
|||
kind: CustomResourceDefinition
|
||||
metadata:
|
||||
annotations:
|
||||
controller-gen.kubebuilder.io/version: v0.4.1
|
||||
controller-gen.kubebuilder.io/version: v0.5.0
|
||||
creationTimestamp: null
|
||||
name: gateways.networking.x-k8s.io
|
||||
spec:
|
||||
group: networking.x-k8s.io
|
||||
names:
|
||||
categories:
|
||||
- gateway-api
|
||||
kind: Gateway
|
||||
listKind: GatewayList
|
||||
plural: gateways
|
||||
|
@ -22,16 +24,28 @@ spec:
|
|||
- jsonPath: .spec.gatewayClassName
|
||||
name: Class
|
||||
type: string
|
||||
- jsonPath: .metadata.creationTimestamp
|
||||
name: Age
|
||||
type: date
|
||||
name: v1alpha1
|
||||
schema:
|
||||
openAPIV3Schema:
|
||||
description: "Gateway represents an instantiation of a service-traffic handling infrastructure by binding Listeners to a set of IP addresses. \n Implementations should add the `gateway-exists-finalizer.networking.x-k8s.io` finalizer on the associated GatewayClass whenever Gateway(s) is running. This ensures that a GatewayClass associated with a Gateway(s) is not deleted while in use."
|
||||
description: "Gateway represents an instantiation of a service-traffic handling
|
||||
infrastructure by binding Listeners to a set of IP addresses. \n Implementations
|
||||
should add the `gateway-exists-finalizer.networking.x-k8s.io` finalizer
|
||||
on the associated GatewayClass whenever Gateway(s) is running. This ensures
|
||||
that a GatewayClass associated with a Gateway(s) is not deleted while in
|
||||
use."
|
||||
properties:
|
||||
apiVersion:
|
||||
description: 'APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
|
||||
description: 'APIVersion defines the versioned schema of this representation
|
||||
of an object. Servers should convert recognized schemas to the latest
|
||||
internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
|
||||
type: string
|
||||
kind:
|
||||
description: 'Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
|
||||
description: 'Kind is a string value representing the REST resource this
|
||||
object represents. Servers may infer this from the endpoint the client
|
||||
submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
|
||||
type: string
|
||||
metadata:
|
||||
type: object
|
||||
|
@ -39,9 +53,18 @@ spec:
|
|||
description: Spec defines the desired state of Gateway.
|
||||
properties:
|
||||
addresses:
|
||||
description: "Addresses requested for this gateway. This is optional and behavior can depend on the GatewayClass. If a value is set in the spec and the requested address is invalid, the GatewayClass MUST indicate this in the associated entry in GatewayStatus.Addresses. \n If no Addresses are specified, the GatewayClass may schedule the Gateway in an implementation-defined manner, assigning an appropriate set of Addresses. \n The GatewayClass MUST bind all Listeners to every GatewayAddress that it assigns to the Gateway. \n Support: Core"
|
||||
description: "Addresses requested for this gateway. This is optional
|
||||
and behavior can depend on the GatewayClass. If a value is set in
|
||||
the spec and the requested address is invalid, the GatewayClass
|
||||
MUST indicate this in the associated entry in GatewayStatus.Addresses.
|
||||
\n If no Addresses are specified, the GatewayClass may schedule
|
||||
the Gateway in an implementation-defined manner, assigning an appropriate
|
||||
set of Addresses. \n The GatewayClass MUST bind all Listeners to
|
||||
every GatewayAddress that it assigns to the Gateway. \n Support:
|
||||
Core"
|
||||
items:
|
||||
description: GatewayAddress describes an address that can be bound to a Gateway.
|
||||
description: GatewayAddress describes an address that can be bound
|
||||
to a Gateway.
|
||||
properties:
|
||||
type:
|
||||
default: IPAddress
|
||||
|
@ -51,7 +74,9 @@ spec:
|
|||
- NamedAddress
|
||||
type: string
|
||||
value:
|
||||
description: "Value of the address. The validity of the values will depend on the type and support by the controller. \n Examples: `1.2.3.4`, `128::1`, `my-ip-address`."
|
||||
description: "Value of the address. The validity of the values
|
||||
will depend on the type and support by the controller. \n
|
||||
Examples: `1.2.3.4`, `128::1`, `my-ip-address`."
|
||||
maxLength: 253
|
||||
minLength: 1
|
||||
type: string
|
||||
|
@ -61,70 +86,186 @@ spec:
|
|||
maxItems: 16
|
||||
type: array
|
||||
gatewayClassName:
|
||||
description: GatewayClassName used for this Gateway. This is the name of a GatewayClass resource.
|
||||
description: GatewayClassName used for this Gateway. This is the name
|
||||
of a GatewayClass resource.
|
||||
maxLength: 253
|
||||
minLength: 1
|
||||
type: string
|
||||
listeners:
|
||||
description: "Listeners associated with this Gateway. Listeners define logical endpoints that are bound on this Gateway's addresses. At least one Listener MUST be specified. \n An implementation MAY group Listeners by Port and then collapse each group of Listeners into a single Listener if the implementation determines that the Listeners in the group are \"compatible\". An implementation MAY also group together and collapse compatible Listeners belonging to different Gateways. \n For example, an implementation might consider Listeners to be compatible with each other if all of the following conditions are met: \n 1. Either each Listener within the group specifies the \"HTTP\" Protocol or each Listener within the group specifies either the \"HTTPS\" or \"TLS\" Protocol. \n 2. Each Listener within the group specifies a Hostname that is unique within the group. \n 3. As a special case, one Listener within a group may omit Hostname, in which case this Listener matches when no other Listener matches. \n If the implementation does collapse compatible Listeners, the hostname provided in the incoming client request MUST be matched to a Listener to find the correct set of Routes. The incoming hostname MUST be matched using the Hostname field for each Listener in order of most to least specific. That is, exact matches must be processed before wildcard matches. \n If this field specifies multiple Listeners that have the same Port value but are not compatible, the implementation must raise a \"Conflicted\" condition in the Listener status. \n Support: Core"
|
||||
description: "Listeners associated with this Gateway. Listeners define
|
||||
logical endpoints that are bound on this Gateway's addresses. At
|
||||
least one Listener MUST be specified. \n An implementation MAY group
|
||||
Listeners by Port and then collapse each group of Listeners into
|
||||
a single Listener if the implementation determines that the Listeners
|
||||
in the group are \"compatible\". An implementation MAY also group
|
||||
together and collapse compatible Listeners belonging to different
|
||||
Gateways. \n For example, an implementation might consider Listeners
|
||||
to be compatible with each other if all of the following conditions
|
||||
are met: \n 1. Either each Listener within the group specifies the
|
||||
\"HTTP\" Protocol or each Listener within the group specifies
|
||||
either the \"HTTPS\" or \"TLS\" Protocol. \n 2. Each Listener
|
||||
within the group specifies a Hostname that is unique within the
|
||||
group. \n 3. As a special case, one Listener within a group may
|
||||
omit Hostname, in which case this Listener matches when no other
|
||||
Listener matches. \n If the implementation does collapse compatible
|
||||
Listeners, the hostname provided in the incoming client request
|
||||
MUST be matched to a Listener to find the correct set of Routes.
|
||||
The incoming hostname MUST be matched using the Hostname field for
|
||||
each Listener in order of most to least specific. That is, exact
|
||||
matches must be processed before wildcard matches. \n If this field
|
||||
specifies multiple Listeners that have the same Port value but are
|
||||
not compatible, the implementation must raise a \"Conflicted\" condition
|
||||
in the Listener status. \n Support: Core"
|
||||
items:
|
||||
description: Listener embodies the concept of a logical endpoint where a Gateway can accept network connections. Each listener in a Gateway must have a unique combination of Hostname, Port, and Protocol. This will be enforced by a validating webhook.
|
||||
description: Listener embodies the concept of a logical endpoint
|
||||
where a Gateway can accept network connections. Each listener
|
||||
in a Gateway must have a unique combination of Hostname, Port,
|
||||
and Protocol. This will be enforced by a validating webhook.
|
||||
properties:
|
||||
hostname:
|
||||
description: "Hostname specifies the virtual hostname to match for protocol types that define this concept. When unspecified, \"\", or `*`, all hostnames are matched. This field can be omitted for protocols that don't require hostname based matching. \n Hostname is the fully qualified domain name of a network host, as defined by RFC 3986. Note the following deviations from the \"host\" part of the URI as defined in the RFC: \n 1. IP literals are not allowed. 2. The `:` delimiter is not respected because ports are not allowed. \n Hostname can be \"precise\" which is a domain name without the terminating dot of a network host (e.g. \"foo.example.com\") or \"wildcard\", which is a domain name prefixed with a single wildcard label (e.g. `*.example.com`). The wildcard character `*` must appear by itself as the first DNS label and matches only a single label. \n Support: Core"
|
||||
description: "Hostname specifies the virtual hostname to match
|
||||
for protocol types that define this concept. When unspecified,
|
||||
\"\", or `*`, all hostnames are matched. This field can be
|
||||
omitted for protocols that don't require hostname based matching.
|
||||
\n Hostname is the fully qualified domain name of a network
|
||||
host, as defined by RFC 3986. Note the following deviations
|
||||
from the \"host\" part of the URI as defined in the RFC: \n
|
||||
1. IP literals are not allowed. 2. The `:` delimiter is not
|
||||
respected because ports are not allowed. \n Hostname can be
|
||||
\"precise\" which is a domain name without the terminating
|
||||
dot of a network host (e.g. \"foo.example.com\") or \"wildcard\",
|
||||
which is a domain name prefixed with a single wildcard label
|
||||
(e.g. `*.example.com`). The wildcard character `*` must appear
|
||||
by itself as the first DNS label and matches only a single
|
||||
label. \n Support: Core"
|
||||
maxLength: 253
|
||||
minLength: 1
|
||||
type: string
|
||||
port:
|
||||
description: "Port is the network port. Multiple listeners may use the same port, subject to the Listener compatibility rules. \n Support: Core"
|
||||
description: "Port is the network port. Multiple listeners may
|
||||
use the same port, subject to the Listener compatibility rules.
|
||||
\n Support: Core"
|
||||
format: int32
|
||||
maximum: 65535
|
||||
minimum: 1
|
||||
type: integer
|
||||
protocol:
|
||||
description: "Protocol specifies the network protocol this listener expects to receive. The GatewayClass MUST apply the Hostname match appropriately for each protocol: \n * For the \"TLS\" protocol, the Hostname match MUST be applied to the [SNI](https://tools.ietf.org/html/rfc6066#section-3) server name offered by the client. * For the \"HTTP\" protocol, the Hostname match MUST be applied to the host portion of the [effective request URI](https://tools.ietf.org/html/rfc7230#section-5.5) or the [:authority pseudo-header](https://tools.ietf.org/html/rfc7540#section-8.1.2.3) * For the \"HTTPS\" protocol, the Hostname match MUST be applied at both the TLS and HTTP protocol layers. \n Support: Core"
|
||||
description: "Protocol specifies the network protocol this listener
|
||||
expects to receive. The GatewayClass MUST apply the Hostname
|
||||
match appropriately for each protocol: \n * For the \"TLS\"
|
||||
protocol, the Hostname match MUST be applied to the [SNI](https://tools.ietf.org/html/rfc6066#section-3)
|
||||
\ server name offered by the client. * For the \"HTTP\" protocol,
|
||||
the Hostname match MUST be applied to the host portion of
|
||||
the [effective request URI](https://tools.ietf.org/html/rfc7230#section-5.5)
|
||||
\ or the [:authority pseudo-header](https://tools.ietf.org/html/rfc7540#section-8.1.2.3)
|
||||
* For the \"HTTPS\" protocol, the Hostname match MUST be applied
|
||||
at both the TLS and HTTP protocol layers. \n Support: Core"
|
||||
type: string
|
||||
routes:
|
||||
description: "Routes specifies a schema for associating routes with the Listener using selectors. A Route is a resource capable of servicing a request and allows a cluster operator to expose a cluster resource (i.e. Service) by externally-reachable URL, load-balance traffic and terminate SSL/TLS. Typically, a route is a \"HTTPRoute\" or \"TCPRoute\" in group \"networking.x-k8s.io\", however, an implementation may support other types of resources. \n The Routes selector MUST select a set of objects that are compatible with the application protocol specified in the Protocol field. \n Although a client request may technically match multiple route rules, only one rule may ultimately receive the request. Matching precedence MUST be determined in order of the following criteria: \n * The most specific match. For example, the most specific HTTPRoute match is determined by the longest matching combination of hostname and path. * The oldest Route based on creation timestamp. For example, a Route with a creation timestamp of \"2020-09-08 01:02:03\" is given precedence over a Route with a creation timestamp of \"2020-09-08 01:02:04\". * If everything else is equivalent, the Route appearing first in alphabetical order (namespace/name) should be given precedence. For example, foo/bar is given precedence over foo/baz. \n All valid portions of a Route selected by this field should be supported. Invalid portions of a Route can be ignored (sometimes that will mean the full Route). If a portion of a Route transitions from valid to invalid, support for that portion of the Route should be dropped to ensure consistency. For example, even if a filter specified by a Route is invalid, the rest of the Route should still be supported. \n Support: Core"
|
||||
description: "Routes specifies a schema for associating routes
|
||||
with the Listener using selectors. A Route is a resource capable
|
||||
of servicing a request and allows a cluster operator to expose
|
||||
a cluster resource (i.e. Service) by externally-reachable
|
||||
URL, load-balance traffic and terminate SSL/TLS. Typically,
|
||||
a route is a \"HTTPRoute\" or \"TCPRoute\" in group \"networking.x-k8s.io\",
|
||||
however, an implementation may support other types of resources.
|
||||
\n The Routes selector MUST select a set of objects that are
|
||||
compatible with the application protocol specified in the
|
||||
Protocol field. \n Although a client request may technically
|
||||
match multiple route rules, only one rule may ultimately receive
|
||||
the request. Matching precedence MUST be determined in order
|
||||
of the following criteria: \n * The most specific match. For
|
||||
example, the most specific HTTPRoute match is determined
|
||||
by the longest matching combination of hostname and path.
|
||||
* The oldest Route based on creation timestamp. For example,
|
||||
a Route with a creation timestamp of \"2020-09-08 01:02:03\"
|
||||
is given precedence over a Route with a creation timestamp
|
||||
of \"2020-09-08 01:02:04\". * If everything else is equivalent,
|
||||
the Route appearing first in alphabetical order (namespace/name)
|
||||
should be given precedence. For example, foo/bar is given
|
||||
precedence over foo/baz. \n All valid portions of a Route
|
||||
selected by this field should be supported. Invalid portions
|
||||
of a Route can be ignored (sometimes that will mean the full
|
||||
Route). If a portion of a Route transitions from valid to
|
||||
invalid, support for that portion of the Route should be dropped
|
||||
to ensure consistency. For example, even if a filter specified
|
||||
by a Route is invalid, the rest of the Route should still
|
||||
be supported. \n Support: Core"
|
||||
properties:
|
||||
group:
|
||||
default: networking.x-k8s.io
|
||||
description: "Group is the group of the route resource to select. Omitting the value or specifying the empty string indicates the networking.x-k8s.io API group. For example, use the following to select an HTTPRoute: \n routes: kind: HTTPRoute \n Otherwise, if an alternative API group is desired, specify the desired group: \n routes: group: acme.io kind: FooRoute \n Support: Core"
|
||||
description: "Group is the group of the route resource to
|
||||
select. Omitting the value or specifying the empty string
|
||||
indicates the networking.x-k8s.io API group. For example,
|
||||
use the following to select an HTTPRoute: \n routes: kind:
|
||||
HTTPRoute \n Otherwise, if an alternative API group is
|
||||
desired, specify the desired group: \n routes: group:
|
||||
acme.io kind: FooRoute \n Support: Core"
|
||||
maxLength: 253
|
||||
minLength: 1
|
||||
type: string
|
||||
kind:
|
||||
description: "Kind is the kind of the route resource to select. \n Kind MUST correspond to kinds of routes that are compatible with the application protocol specified in the Listener's Protocol field. \n If an implementation does not support or recognize this resource type, it SHOULD set the \"ResolvedRefs\" condition to false for this listener with the \"InvalidRoutesRef\" reason. \n Support: Core"
|
||||
description: "Kind is the kind of the route resource to
|
||||
select. \n Kind MUST correspond to kinds of routes that
|
||||
are compatible with the application protocol specified
|
||||
in the Listener's Protocol field. \n If an implementation
|
||||
does not support or recognize this resource type, it SHOULD
|
||||
set the \"ResolvedRefs\" condition to false for this listener
|
||||
with the \"InvalidRoutesRef\" reason. \n Support: Core"
|
||||
type: string
|
||||
namespaces:
|
||||
default:
|
||||
from: Same
|
||||
description: "Namespaces indicates in which namespaces Routes should be selected for this Gateway. This is restricted to the namespace of this Gateway by default. \n Support: Core"
|
||||
description: "Namespaces indicates in which namespaces Routes
|
||||
should be selected for this Gateway. This is restricted
|
||||
to the namespace of this Gateway by default. \n Support:
|
||||
Core"
|
||||
properties:
|
||||
from:
|
||||
default: Same
|
||||
description: "From indicates where Routes will be selected for this Gateway. Possible values are: * All: Routes in all namespaces may be used by this Gateway. * Selector: Routes in namespaces selected by the selector may be used by this Gateway. * Same: Only Routes in the same namespace may be used by this Gateway. \n Support: Core"
|
||||
description: "From indicates where Routes will be selected
|
||||
for this Gateway. Possible values are: * All: Routes
|
||||
in all namespaces may be used by this Gateway. * Selector:
|
||||
Routes in namespaces selected by the selector may
|
||||
be used by this Gateway. * Same: Only Routes in
|
||||
the same namespace may be used by this Gateway. \n
|
||||
Support: Core"
|
||||
enum:
|
||||
- All
|
||||
- Selector
|
||||
- Same
|
||||
type: string
|
||||
selector:
|
||||
description: "Selector must be specified when From is set to \"Selector\". In that case, only Routes in Namespaces matching this Selector will be selected by this Gateway. This field is ignored for other values of \"From\". \n Support: Core"
|
||||
description: "Selector must be specified when From is
|
||||
set to \"Selector\". In that case, only Routes in
|
||||
Namespaces matching this Selector will be selected
|
||||
by this Gateway. This field is ignored for other values
|
||||
of \"From\". \n Support: Core"
|
||||
properties:
|
||||
matchExpressions:
|
||||
description: matchExpressions is a list of label selector requirements. The requirements are ANDed.
|
||||
description: matchExpressions is a list of label
|
||||
selector requirements. The requirements are ANDed.
|
||||
items:
|
||||
description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.
|
||||
description: A label selector requirement is a
|
||||
selector that contains values, a key, and an
|
||||
operator that relates the key and values.
|
||||
properties:
|
||||
key:
|
||||
description: key is the label key that the selector applies to.
|
||||
description: key is the label key that the
|
||||
selector applies to.
|
||||
type: string
|
||||
operator:
|
||||
description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.
|
||||
description: operator represents a key's relationship
|
||||
to a set of values. Valid operators are
|
||||
In, NotIn, Exists and DoesNotExist.
|
||||
type: string
|
||||
values:
|
||||
description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.
|
||||
description: values is an array of string
|
||||
values. If the operator is In or NotIn,
|
||||
the values array must be non-empty. If the
|
||||
operator is Exists or DoesNotExist, the
|
||||
values array must be empty. This array is
|
||||
replaced during a strategic merge patch.
|
||||
items:
|
||||
type: string
|
||||
type: array
|
||||
|
@ -136,26 +277,46 @@ spec:
|
|||
matchLabels:
|
||||
additionalProperties:
|
||||
type: string
|
||||
description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.
|
||||
description: matchLabels is a map of {key,value}
|
||||
pairs. A single {key,value} in the matchLabels
|
||||
map is equivalent to an element of matchExpressions,
|
||||
whose key field is "key", the operator is "In",
|
||||
and the values array contains only "value". The
|
||||
requirements are ANDed.
|
||||
type: object
|
||||
type: object
|
||||
type: object
|
||||
selector:
|
||||
description: "Selector specifies a set of route labels used for selecting routes to associate with the Gateway. If this Selector is defined, only routes matching the Selector are associated with the Gateway. An empty Selector matches all routes. \n Support: Core"
|
||||
description: "Selector specifies a set of route labels used
|
||||
for selecting routes to associate with the Gateway. If
|
||||
this Selector is defined, only routes matching the Selector
|
||||
are associated with the Gateway. An empty Selector matches
|
||||
all routes. \n Support: Core"
|
||||
properties:
|
||||
matchExpressions:
|
||||
description: matchExpressions is a list of label selector requirements. The requirements are ANDed.
|
||||
description: matchExpressions is a list of label selector
|
||||
requirements. The requirements are ANDed.
|
||||
items:
|
||||
description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.
|
||||
description: A label selector requirement is a selector
|
||||
that contains values, a key, and an operator that
|
||||
relates the key and values.
|
||||
properties:
|
||||
key:
|
||||
description: key is the label key that the selector applies to.
|
||||
description: key is the label key that the selector
|
||||
applies to.
|
||||
type: string
|
||||
operator:
|
||||
description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.
|
||||
description: operator represents a key's relationship
|
||||
to a set of values. Valid operators are In,
|
||||
NotIn, Exists and DoesNotExist.
|
||||
type: string
|
||||
values:
|
||||
description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.
|
||||
description: values is an array of string values.
|
||||
If the operator is In or NotIn, the values array
|
||||
must be non-empty. If the operator is Exists
|
||||
or DoesNotExist, the values array must be empty.
|
||||
This array is replaced during a strategic merge
|
||||
patch.
|
||||
items:
|
||||
type: string
|
||||
type: array
|
||||
|
@ -167,17 +328,37 @@ spec:
|
|||
matchLabels:
|
||||
additionalProperties:
|
||||
type: string
|
||||
description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.
|
||||
description: matchLabels is a map of {key,value} pairs.
|
||||
A single {key,value} in the matchLabels map is equivalent
|
||||
to an element of matchExpressions, whose key field
|
||||
is "key", the operator is "In", and the values array
|
||||
contains only "value". The requirements are ANDed.
|
||||
type: object
|
||||
type: object
|
||||
required:
|
||||
- kind
|
||||
type: object
|
||||
tls:
|
||||
description: "TLS is the TLS configuration for the Listener. This field is required if the Protocol field is \"HTTPS\" or \"TLS\" and ignored otherwise. \n The association of SNIs to Certificate defined in GatewayTLSConfig is defined based on the Hostname field for this listener. \n The GatewayClass MUST use the longest matching SNI out of all available certificates for any TLS handshake. \n Support: Core"
|
||||
description: "TLS is the TLS configuration for the Listener.
|
||||
This field is required if the Protocol field is \"HTTPS\"
|
||||
or \"TLS\" and ignored otherwise. \n The association of SNIs
|
||||
to Certificate defined in GatewayTLSConfig is defined based
|
||||
on the Hostname field for this listener. \n The GatewayClass
|
||||
MUST use the longest matching SNI out of all available certificates
|
||||
for any TLS handshake. \n Support: Core"
|
||||
properties:
|
||||
certificateRef:
|
||||
description: "CertificateRef is the reference to Kubernetes object that contain a TLS certificate and private key. This certificate MUST be used for TLS handshakes for the domain this GatewayTLSConfig is associated with. \n This field is required when mode is set to \"Terminate\" (default) and optional otherwise. \n If an entry in this list omits or specifies the empty string for both the group and the resource, the resource defaults to \"secrets\". An implementation may support other resources (for example, resource \"mycertificates\" in group \"networking.acme.io\"). \n Support: Core (Kubernetes Secrets) \n Support: Implementation-specific (Other resource types)"
|
||||
description: "CertificateRef is a reference to a Kubernetes
|
||||
object that contains a TLS certificate and private key.
|
||||
This certificate is used to establish a TLS handshake
|
||||
for requests that match the hostname of the associated
|
||||
listener. The referenced object MUST reside in the same
|
||||
namespace as Gateway. \n This field is required when mode
|
||||
is set to \"Terminate\" (default) and optional otherwise.
|
||||
\n CertificateRef can reference a standard Kubernetes
|
||||
resource, i.e. Secret, or an implementation-specific custom
|
||||
resource. \n Support: Core (Kubernetes Secrets) \n Support:
|
||||
Implementation-specific (Other resource types)"
|
||||
properties:
|
||||
group:
|
||||
description: Group is the group of the referent.
|
||||
|
@ -201,7 +382,16 @@ spec:
|
|||
type: object
|
||||
mode:
|
||||
default: Terminate
|
||||
description: "Mode defines the TLS behavior for the TLS session initiated by the client. There are two possible modes: - Terminate: The TLS session between the downstream client and the Gateway is terminated at the Gateway. This mode requires certificateRef to be set. - Passthrough: The TLS session is NOT terminated by the Gateway. This implies that the Gateway can't decipher the TLS stream except for the ClientHello message of the TLS protocol. CertificateRef field is ignored in this mode. \n Support: Core"
|
||||
description: "Mode defines the TLS behavior for the TLS
|
||||
session initiated by the client. There are two possible
|
||||
modes: - Terminate: The TLS session between the downstream
|
||||
client and the Gateway is terminated at the Gateway.
|
||||
This mode requires certificateRef to be set. - Passthrough:
|
||||
The TLS session is NOT terminated by the Gateway. This
|
||||
\ implies that the Gateway can't decipher the TLS stream
|
||||
except for the ClientHello message of the TLS protocol.
|
||||
\ CertificateRef field is ignored in this mode. \n Support:
|
||||
Core"
|
||||
enum:
|
||||
- Terminate
|
||||
- Passthrough
|
||||
|
@ -209,16 +399,29 @@ spec:
|
|||
options:
|
||||
additionalProperties:
|
||||
type: string
|
||||
description: "Options are a list of key/value pairs to give extended options to the provider. \n There variation among providers as to how ciphersuites are expressed. If there is a common subset for expressing ciphers then it will make sense to loft that as a core API construct. \n Support: Implementation-specific"
|
||||
description: "Options are a list of key/value pairs to give
|
||||
extended options to the provider. \n There variation among
|
||||
providers as to how ciphersuites are expressed. If there
|
||||
is a common subset for expressing ciphers then it will
|
||||
make sense to loft that as a core API construct. \n Support:
|
||||
Implementation-specific"
|
||||
type: object
|
||||
routeOverride:
|
||||
default:
|
||||
certificate: Deny
|
||||
description: "RouteOverride dictates if TLS settings can be configured via Routes or not. \n CertificateRef must be defined even if `routeOverride.certificate` is set to 'Allow' as it will be used as the default certificate for the listener. \n Support: Core"
|
||||
description: "RouteOverride dictates if TLS settings can
|
||||
be configured via Routes or not. \n CertificateRef must
|
||||
be defined even if `routeOverride.certificate` is set
|
||||
to 'Allow' as it will be used as the default certificate
|
||||
for the listener. \n Support: Core"
|
||||
properties:
|
||||
certificate:
|
||||
default: Deny
|
||||
description: "Certificate dictates if TLS certificates can be configured via Routes. If set to 'Allow', a TLS certificate for a hostname defined in a Route takes precedence over the certificate defined in Gateway. \n Support: Core"
|
||||
description: "Certificate dictates if TLS certificates
|
||||
can be configured via Routes. If set to 'Allow', a
|
||||
TLS certificate for a hostname defined in a Route
|
||||
takes precedence over the certificate defined in Gateway.
|
||||
\n Support: Core"
|
||||
enum:
|
||||
- Allow
|
||||
- Deny
|
||||
|
@ -248,9 +451,13 @@ spec:
|
|||
description: Status defines the current state of Gateway.
|
||||
properties:
|
||||
addresses:
|
||||
description: "Addresses lists the IP addresses that have actually been bound to the Gateway. These addresses may differ from the addresses in the Spec, e.g. if the Gateway automatically assigns an address from a reserved pool. \n These addresses should all be of type \"IPAddress\"."
|
||||
description: "Addresses lists the IP addresses that have actually
|
||||
been bound to the Gateway. These addresses may differ from the addresses
|
||||
in the Spec, e.g. if the Gateway automatically assigns an address
|
||||
from a reserved pool. \n These addresses should all be of type \"IPAddress\"."
|
||||
items:
|
||||
description: GatewayAddress describes an address that can be bound to a Gateway.
|
||||
description: GatewayAddress describes an address that can be bound
|
||||
to a Gateway.
|
||||
properties:
|
||||
type:
|
||||
default: IPAddress
|
||||
|
@ -260,7 +467,9 @@ spec:
|
|||
- NamedAddress
|
||||
type: string
|
||||
value:
|
||||
description: "Value of the address. The validity of the values will depend on the type and support by the controller. \n Examples: `1.2.3.4`, `128::1`, `my-ip-address`."
|
||||
description: "Value of the address. The validity of the values
|
||||
will depend on the type and support by the controller. \n
|
||||
Examples: `1.2.3.4`, `128::1`, `my-ip-address`."
|
||||
maxLength: 253
|
||||
minLength: 1
|
||||
type: string
|
||||
|
@ -276,25 +485,52 @@ spec:
|
|||
reason: NotReconciled
|
||||
status: "False"
|
||||
type: Scheduled
|
||||
description: "Conditions describe the current conditions of the Gateway. \n Implementations should prefer to express Gateway conditions using the `GatewayConditionType` and `GatewayConditionReason` constants so that operators and tools can converge on a common vocabulary to describe Gateway state. \n Known condition types are: \n * \"Scheduled\" * \"Ready\""
|
||||
description: "Conditions describe the current conditions of the Gateway.
|
||||
\n Implementations should prefer to express Gateway conditions using
|
||||
the `GatewayConditionType` and `GatewayConditionReason` constants
|
||||
so that operators and tools can converge on a common vocabulary
|
||||
to describe Gateway state. \n Known condition types are: \n * \"Scheduled\"
|
||||
* \"Ready\""
|
||||
items:
|
||||
description: "Condition contains details for one aspect of the current state of this API Resource. --- This struct is intended for direct use as an array at the field path .status.conditions. For example, type FooStatus struct{ // Represents the observations of a foo's current state. // Known .status.conditions.type are: \"Available\", \"Progressing\", and \"Degraded\" // +patchMergeKey=type // +patchStrategy=merge // +listType=map // +listMapKey=type Conditions []metav1.Condition `json:\"conditions,omitempty\" patchStrategy:\"merge\" patchMergeKey:\"type\" protobuf:\"bytes,1,rep,name=conditions\"` \n // other fields }"
|
||||
description: "Condition contains details for one aspect of the current
|
||||
state of this API Resource. --- This struct is intended for direct
|
||||
use as an array at the field path .status.conditions. For example,
|
||||
type FooStatus struct{ // Represents the observations of a
|
||||
foo's current state. // Known .status.conditions.type are:
|
||||
\"Available\", \"Progressing\", and \"Degraded\" // +patchMergeKey=type
|
||||
\ // +patchStrategy=merge // +listType=map // +listMapKey=type
|
||||
\ Conditions []metav1.Condition `json:\"conditions,omitempty\"
|
||||
patchStrategy:\"merge\" patchMergeKey:\"type\" protobuf:\"bytes,1,rep,name=conditions\"`
|
||||
\n // other fields }"
|
||||
properties:
|
||||
lastTransitionTime:
|
||||
description: lastTransitionTime is the last time the condition transitioned from one status to another. This should be when the underlying condition changed. If that is not known, then using the time when the API field changed is acceptable.
|
||||
description: lastTransitionTime is the last time the condition
|
||||
transitioned from one status to another. This should be when
|
||||
the underlying condition changed. If that is not known, then
|
||||
using the time when the API field changed is acceptable.
|
||||
format: date-time
|
||||
type: string
|
||||
message:
|
||||
description: message is a human readable message indicating details about the transition. This may be an empty string.
|
||||
description: message is a human readable message indicating
|
||||
details about the transition. This may be an empty string.
|
||||
maxLength: 32768
|
||||
type: string
|
||||
observedGeneration:
|
||||
description: observedGeneration represents the .metadata.generation that the condition was set based upon. For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date with respect to the current state of the instance.
|
||||
description: observedGeneration represents the .metadata.generation
|
||||
that the condition was set based upon. For instance, if .metadata.generation
|
||||
is currently 12, but the .status.conditions[x].observedGeneration
|
||||
is 9, the condition is out of date with respect to the current
|
||||
state of the instance.
|
||||
format: int64
|
||||
minimum: 0
|
||||
type: integer
|
||||
reason:
|
||||
description: reason contains a programmatic identifier indicating the reason for the condition's last transition. Producers of specific condition types may define expected values and meanings for this field, and whether the values are considered a guaranteed API. The value should be a CamelCase string. This field may not be empty.
|
||||
description: reason contains a programmatic identifier indicating
|
||||
the reason for the condition's last transition. Producers
|
||||
of specific condition types may define expected values and
|
||||
meanings for this field, and whether the values are considered
|
||||
a guaranteed API. The value should be a CamelCase string.
|
||||
This field may not be empty.
|
||||
maxLength: 1024
|
||||
minLength: 1
|
||||
pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$
|
||||
|
@ -307,7 +543,11 @@ spec:
|
|||
- Unknown
|
||||
type: string
|
||||
type:
|
||||
description: type of condition in CamelCase or in foo.example.com/CamelCase. --- Many .condition.type values are consistent across resources like Available, but because arbitrary conditions can be useful (see .node.status.conditions), the ability to deconflict is important. The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt)
|
||||
description: type of condition in CamelCase or in foo.example.com/CamelCase.
|
||||
--- Many .condition.type values are consistent across resources
|
||||
like Available, but because arbitrary conditions can be useful
|
||||
(see .node.status.conditions), the ability to deconflict is
|
||||
important. The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt)
|
||||
maxLength: 316
|
||||
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])$
|
||||
type: string
|
||||
|
@ -324,43 +564,75 @@ spec:
|
|||
- type
|
||||
x-kubernetes-list-type: map
|
||||
listeners:
|
||||
description: Listeners provide status for each unique listener port defined in the Spec.
|
||||
description: Listeners provide status for each unique listener port
|
||||
defined in the Spec.
|
||||
items:
|
||||
description: ListenerStatus is the status associated with a Listener.
|
||||
properties:
|
||||
conditions:
|
||||
description: Conditions describe the current condition of this listener.
|
||||
description: Conditions describe the current condition of this
|
||||
listener.
|
||||
items:
|
||||
description: "Condition contains details for one aspect of the current state of this API Resource. --- This struct is intended for direct use as an array at the field path .status.conditions. For example, type FooStatus struct{ // Represents the observations of a foo's current state. // Known .status.conditions.type are: \"Available\", \"Progressing\", and \"Degraded\" // +patchMergeKey=type // +patchStrategy=merge // +listType=map // +listMapKey=type Conditions []metav1.Condition `json:\"conditions,omitempty\" patchStrategy:\"merge\" patchMergeKey:\"type\" protobuf:\"bytes,1,rep,name=conditions\"` \n // other fields }"
|
||||
description: "Condition contains details for one aspect of
|
||||
the current state of this API Resource. --- This struct
|
||||
is intended for direct use as an array at the field path
|
||||
.status.conditions. For example, type FooStatus struct{
|
||||
\ // Represents the observations of a foo's current state.
|
||||
\ // Known .status.conditions.type are: \"Available\",
|
||||
\"Progressing\", and \"Degraded\" // +patchMergeKey=type
|
||||
\ // +patchStrategy=merge // +listType=map //
|
||||
+listMapKey=type Conditions []metav1.Condition `json:\"conditions,omitempty\"
|
||||
patchStrategy:\"merge\" patchMergeKey:\"type\" protobuf:\"bytes,1,rep,name=conditions\"`
|
||||
\n // other fields }"
|
||||
properties:
|
||||
lastTransitionTime:
|
||||
description: lastTransitionTime is the last time the condition transitioned from one status to another. This should be when the underlying condition changed. If that is not known, then using the time when the API field changed is acceptable.
|
||||
description: lastTransitionTime is the last time the condition
|
||||
transitioned from one status to another. This should
|
||||
be when the underlying condition changed. If that is
|
||||
not known, then using the time when the API field changed
|
||||
is acceptable.
|
||||
format: date-time
|
||||
type: string
|
||||
message:
|
||||
description: message is a human readable message indicating details about the transition. This may be an empty string.
|
||||
description: message is a human readable message indicating
|
||||
details about the transition. This may be an empty string.
|
||||
maxLength: 32768
|
||||
type: string
|
||||
observedGeneration:
|
||||
description: observedGeneration represents the .metadata.generation that the condition was set based upon. For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date with respect to the current state of the instance.
|
||||
description: observedGeneration represents the .metadata.generation
|
||||
that the condition was set based upon. For instance,
|
||||
if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration
|
||||
is 9, the condition is out of date with respect to the
|
||||
current state of the instance.
|
||||
format: int64
|
||||
minimum: 0
|
||||
type: integer
|
||||
reason:
|
||||
description: reason contains a programmatic identifier indicating the reason for the condition's last transition. Producers of specific condition types may define expected values and meanings for this field, and whether the values are considered a guaranteed API. The value should be a CamelCase string. This field may not be empty.
|
||||
description: reason contains a programmatic identifier
|
||||
indicating the reason for the condition's last transition.
|
||||
Producers of specific condition types may define expected
|
||||
values and meanings for this field, and whether the
|
||||
values are considered a guaranteed API. The value should
|
||||
be a CamelCase string. This field may not be empty.
|
||||
maxLength: 1024
|
||||
minLength: 1
|
||||
pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$
|
||||
type: string
|
||||
status:
|
||||
description: status of the condition, one of True, False, Unknown.
|
||||
description: status of the condition, one of True, False,
|
||||
Unknown.
|
||||
enum:
|
||||
- "True"
|
||||
- "False"
|
||||
- Unknown
|
||||
type: string
|
||||
type:
|
||||
description: type of condition in CamelCase or in foo.example.com/CamelCase. --- Many .condition.type values are consistent across resources like Available, but because arbitrary conditions can be useful (see .node.status.conditions), the ability to deconflict is important. The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt)
|
||||
description: type of condition in CamelCase or in foo.example.com/CamelCase.
|
||||
--- Many .condition.type values are consistent across
|
||||
resources like Available, but because arbitrary conditions
|
||||
can be useful (see .node.status.conditions), the ability
|
||||
to deconflict is important. The regex it matches is
|
||||
(dns1123SubdomainFmt/)?(qualifiedNameFmt)
|
||||
maxLength: 316
|
||||
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])$
|
||||
type: string
|
||||
|
@ -377,18 +649,21 @@ spec:
|
|||
- type
|
||||
x-kubernetes-list-type: map
|
||||
hostname:
|
||||
description: Hostname is the Listener hostname value for which this message is reporting the status.
|
||||
description: Hostname is the Listener hostname value for which
|
||||
this message is reporting the status.
|
||||
maxLength: 253
|
||||
minLength: 1
|
||||
type: string
|
||||
port:
|
||||
description: Port is the unique Listener port value for which this message is reporting the status.
|
||||
description: Port is the unique Listener port value for which
|
||||
this message is reporting the status.
|
||||
format: int32
|
||||
maximum: 65535
|
||||
minimum: 1
|
||||
type: integer
|
||||
protocol:
|
||||
description: Protocol is the Listener protocol value for which this message is reporting the status.
|
||||
description: Protocol is the Listener protocol value for which
|
||||
this message is reporting the status.
|
||||
type: string
|
||||
required:
|
||||
- conditions
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue