[go: up one dir, main page]

v1alpha1

package
v1.3.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Apr 24, 2025 License: Apache-2.0 Imports: 5 Imported by: 26

Documentation

Overview

Package v1alpha1 contains API Schema definitions for the gateway.networking.k8s-x.io API group.

+k8s:openapi-gen=true +kubebuilder:object:generate=true +groupName=gateway.networking.x-k8s.io +groupGoName=Experimental

Index

Constants

View Source
const (
	// This condition indicates whether a ListenerSet has generated some
	// configuration that is assumed to be ready soon in the underlying data
	// plane.
	//
	// It is a positive-polarity summary condition, and so should always be
	// present on the resource with ObservedGeneration set.
	//
	// It should be set to Unknown if the controller performs updates to the
	// status before it has all the information it needs to be able to determine
	// if the condition is true.
	//
	// Possible reasons for this condition to be True are:
	//
	// * "Programmed"
	//
	// Possible reasons for this condition to be False are:
	//
	// * "Invalid"
	// * "ParentNotProgrammed"
	//
	// Additional reasons for this condition to be False are influenced by
	// child ListenerEntry conditions:
	//
	// * "PortUnavailable"
	//
	// Possible reasons for this condition to be Unknown are:
	//
	// * "Pending"
	//
	// Controllers may raise this condition with other reasons,
	// but should prefer to use the reasons listed above to improve
	// interoperability.
	ListenerSetConditionProgrammed ListenerSetConditionType = "Programmed"

	// This reason is used with the "Programmed" condition when the condition is
	// true.
	ListenerSetReasonProgrammed ListenerSetConditionReason = "Programmed"
)
View Source
const (
	// This condition is true when the controller managing the ListenerSet is
	// syntactically and semantically valid enough to produce some configuration
	// in the underlying data plane. This does not indicate whether or not the
	// configuration has been propagated to the data plane.
	//
	// Possible reasons for this condition to be True are:
	//
	// * "Accepted"
	//
	// Possible reasons for this condition to be False are:
	//
	// * "Invalid"
	// * "NotAllowed"
	// * "ParentNotAccepted"
	// * "ListenersNotValid"
	//
	// Possible reasons for this condition to be Unknown are:
	//
	// * "Pending"
	//
	// Controllers may raise this condition with other reasons,
	// but should prefer to use the reasons listed above to improve
	// interoperability.
	ListenerSetConditionAccepted ListenerSetConditionType = "Accepted"

	// This reason is used with the "Accepted" condition when the condition is
	// True.
	ListenerSetReasonAccepted ListenerSetConditionReason = "Accepted"

	// This reason is used with the "Accepted" condition when the
	// ListenerSet is not allowed to be attached to the Gateway.
	ListenerSetReasonNotAllowed ListenerSetConditionReason = "NotAllowed"

	// This reason is used with the "Accepted" condition when the
	// parent Gateway is not accepted.
	ListenerSetReasonParentNotAccepted ListenerSetConditionReason = "ParentNotAccepted"

	// This reason is used with the "Accepted" condition when one or
	// more Listeners have an invalid or unsupported configuration
	// and cannot be configured on the Gateway.
	// This can be the reason when "Accepted" is "True" or "False", depending on whether
	// the listener being invalid causes the entire Gateway to not be accepted.
	ListenerSetReasonListenersNotValid ListenerSetConditionReason = "ListenersNotValid"
)
View Source
const (
	// This condition indicates that the controller was unable to resolve
	// conflicting specification requirements for this Listener. If a
	// Listener is conflicted, its network port should not be configured
	// on any network elements.
	//
	// Possible reasons for this condition to be true are:
	//
	// * "HostnameConflict"
	// * "ProtocolConflict"
	// * "ListenerConflict"
	//
	// Possible reasons for this condition to be False are:
	//
	// * "NoConflicts"
	//
	// Controllers may raise this condition with other reasons,
	// but should prefer to use the reasons listed above to improve
	// interoperability.
	ListenerEntryConditionConflicted ListenerEntryConditionType = "Conflicted"

	// This reason is used with the "Conflicted" condition when
	// the Listener conflicts with hostnames in other Listeners. For
	// example, this reason would be used when multiple Listeners on
	// the same port use `example.com` in the hostname field.
	ListenerEntryReasonHostnameConflict ListenerEntryConditionReason = "HostnameConflict"

	// This reason is used with the "Conflicted" condition when
	// multiple Listeners are specified with the same Listener port
	// number, but have conflicting protocol specifications.
	ListenerEntryReasonProtocolConflict ListenerEntryConditionReason = "ProtocolConflict"

	// This reason is used with the "Conflicted" condition when the condition
	// is True.
	//
	// Implementations should prioritize surfacing the most specific conflict
	// reason. For example, if a Listener is conflicted because it has the same
	// port as another Listener, and it also has the same hostname as another
	// Listener, the reason should be "ListenerConflict" and not
	// "HostnameConflict" or "ProtocolConflict".
	ListenerEntryReasonListenerConflict ListenerEntryConditionReason = "ListenerConflict"
)
View Source
const (
	// This condition indicates that the listener is syntactically and
	// semantically valid, and that all features used in the listener's spec are
	// supported.
	//
	// In general, a Listener will be marked as Accepted when the supplied
	// configuration will generate at least some data plane configuration.
	//
	// For example, a Listener with an unsupported protocol will never generate
	// any data plane config, and so will have Accepted set to `false.`
	// Conversely, a Listener that does not have any Routes will be able to
	// generate data plane config, and so will have Accepted set to `true`.
	//
	// Possible reasons for this condition to be True are:
	//
	// * "Accepted"
	//
	// Possible reasons for this condition to be False are:
	//
	// * "PortUnavailable"
	// * "UnsupportedProtocol"
	// * "TooManyListeners"
	//
	// Possible reasons for this condition to be Unknown are:
	//
	// * "Pending"
	//
	// Controllers may raise this condition with other reasons,
	// but should prefer to use the reasons listed above to improve
	// interoperability.
	ListenerEntryConditionAccepted ListenerEntryConditionType = "Accepted"

	// This reason is used with the "Accepted" condition when the condition is
	// True.
	ListenerEntryReasonAccepted ListenerEntryConditionReason = "Accepted"

	// This reason is used with the "Accepted" condition when the
	// Listener could not be attached to be Gateway because its
	// protocol type is not supported.
	ListenerEntryReasonUnsupportedProtocol ListenerEntryConditionReason = "UnsupportedProtocol"

	// This reason is used with the "Accepted" condition when the
	// Listener could not be attached to be Gateway because the Gateway
	// has too many Listeners.
	ListenerEntryReasonTooManyListeners ListenerEntryConditionReason = "TooManyListeners"
)
View Source
const (
	// This condition indicates whether the controller was able to
	// resolve all the object references for the Listener.
	//
	// Possible reasons for this condition to be true are:
	//
	// * "ResolvedRefs"
	//
	// Possible reasons for this condition to be False are:
	//
	// * "InvalidCertificateRef"
	// * "InvalidRouteKinds"
	// * "RefNotPermitted"
	//
	// Controllers may raise this condition with other reasons,
	// but should prefer to use the reasons listed above to improve
	// interoperability.
	ListenerEntryConditionResolvedRefs ListenerEntryConditionType = "ResolvedRefs"

	// This reason is used with the "ResolvedRefs" condition when the condition
	// is true.
	ListenerEntryReasonResolvedRefs ListenerEntryConditionReason = "ResolvedRefs"

	// This reason is used with the "ResolvedRefs" condition when the
	// Listener has a TLS configuration with at least one TLS CertificateRef
	// that is invalid or does not exist.
	// A CertificateRef is considered invalid when it refers to a nonexistent
	// or unsupported resource or kind, or when the data within that resource
	// is malformed.
	// This reason must be used only when the reference is allowed, either by
	// referencing an object in the same namespace as the Gateway, or when
	// a cross-namespace reference has been explicitly allowed by a ReferenceGrant.
	// If the reference is not allowed, the reason RefNotPermitted must be used
	// instead.
	ListenerEntryReasonInvalidCertificateRef ListenerEntryConditionReason = "InvalidCertificateRef"

	// This reason is used with the "ResolvedRefs" condition when an invalid or
	// unsupported Route kind is specified by the Listener.
	ListenerEntryReasonInvalidRouteKinds ListenerEntryConditionReason = "InvalidRouteKinds"

	// This reason is used with the "ResolvedRefs" condition when the
	// Listener has a TLS configuration that references an object in another
	// namespace, where the object in the other namespace does not have a
	// ReferenceGrant explicitly allowing the reference.
	ListenerEntryReasonRefNotPermitted ListenerEntryConditionReason = "RefNotPermitted"
)
View Source
const (
	// This condition indicates whether a Listener has generated some
	// configuration that will soon be ready in the underlying data plane.
	//
	// It is a positive-polarity summary condition, and so should always be
	// present on the resource with ObservedGeneration set.
	//
	// It should be set to Unknown if the controller performs updates to the
	// status before it has all the information it needs to be able to determine
	// if the condition is true.
	//
	// Possible reasons for this condition to be True are:
	//
	// * "Programmed"
	//
	// Possible reasons for this condition to be False are:
	//
	// * "Invalid"
	// * "PortUnavailable"
	//
	// Possible reasons for this condition to be Unknown are:
	//
	// * "Pending"
	//
	// Controllers may raise this condition with other reasons,
	// but should prefer to use the reasons listed above to improve
	// interoperability.
	ListenerEntryConditionProgrammed ListenerEntryConditionType = "Programmed"

	// This reason is used with the "Programmed" condition when the condition is
	// true.
	ListenerEntryReasonProgrammed ListenerEntryConditionReason = "Programmed"
)
View Source
const (
	// "Ready" is a condition type reserved for future use. It should not be used by implementations.
	// Note: This condition is not really "deprecated", but rather "reserved"; however, deprecated triggers Go linters
	// to alert about usage.
	//
	// If used in the future, "Ready" will represent the final state where all configuration is confirmed good
	// _and has completely propagated to the data plane_. That is, it is a _guarantee_ that, as soon as something
	// sees the Condition as `true`, then connections will be correctly routed _immediately_.
	//
	// This is a very strong guarantee, and to date no implementation has satisfied it enough to implement it.
	// This reservation can be discussed in the future if necessary.
	//
	// Deprecated: Ready is reserved for future use
	ListenerEntryConditionReady ListenerEntryConditionType = "Ready"

	// Deprecated: Ready is reserved for future use
	ListenerEntryReasonReady ListenerEntryConditionReason = "Ready"
)
View Source
const GroupName = "gateway.networking.x-k8s.io"

GroupName specifies the group name used to register the objects.

Variables

View Source
var (
	// localSchemeBuilder and AddToScheme will stay in k8s.io/kubernetes.
	SchemeBuilder runtime.SchemeBuilder

	// Deprecated: use Install instead
	AddToScheme = localSchemeBuilder.AddToScheme
	Install     = localSchemeBuilder.AddToScheme
)
View Source
var GroupVersion = v1.GroupVersion{Group: GroupName, Version: "v1alpha1"}

GroupVersion specifies the group and the version used to register the objects.

View Source
var SchemeGroupVersion = schema.GroupVersion{Group: GroupName, Version: "v1alpha1"}

SchemeGroupVersion is group version used to register these objects Deprecated: use GroupVersion instead.

Functions

func Resource

func Resource(resource string) schema.GroupResource

Resource takes an unqualified resource and returns a Group qualified GroupResource

Types

type AllowedRoutes

type AllowedRoutes = v1.AllowedRoutes

+k8s:deepcopy-gen=false

type BackendTrafficPolicySpec

type BackendTrafficPolicySpec struct {
	// TargetRefs identifies API object(s) to apply this policy to.
	// Currently, Backends (A grouping of like endpoints such as Service,
	// ServiceImport, or any implementation-specific backendRef) are the only
	// valid API target references.
	//
	// Currently, a TargetRef can not be scoped to a specific port on a
	// Service.
	//
	// +listType=map
	// +listMapKey=group
	// +listMapKey=kind
	// +listMapKey=name
	// +kubebuilder:validation:MinItems=1
	// +kubebuilder:validation:MaxItems=16
	TargetRefs []LocalPolicyTargetReference `json:"targetRefs"`

	// RetryConstraint defines the configuration for when to allow or prevent
	// further retries to a target backend, by dynamically calculating a 'retry
	// budget'. This budget is calculated based on the percentage of incoming
	// traffic composed of retries over a given time interval. Once the budget
	// is exceeded, additional retries will be rejected.
	//
	// For example, if the retry budget interval is 10 seconds, there have been
	// 1000 active requests in the past 10 seconds, and the allowed percentage
	// of requests that can be retried is 20% (the default), then 200 of those
	// requests may be composed of retries. Active requests will only be
	// considered for the duration of the interval when calculating the retry
	// budget. Retrying the same original request multiple times within the
	// retry budget interval will lead to each retry being counted towards
	// calculating the budget.
	//
	// Configuring a RetryConstraint in BackendTrafficPolicy is compatible with
	// HTTPRoute Retry settings for each HTTPRouteRule that targets the same
	// backend. While the HTTPRouteRule Retry stanza can specify whether a
	// request will be retried, and the number of retry attempts each client
	// may perform, RetryConstraint helps prevent cascading failures such as
	// retry storms during periods of consistent failures.
	//
	// After the retry budget has been exceeded, additional retries to the
	// backend MUST return a 503 response to the client.
	//
	// Additional configurations for defining a constraint on retries MAY be
	// defined in the future.
	//
	// Support: Extended
	//
	// +optional
	// <gateway:experimental>
	RetryConstraint *RetryConstraint `json:"retryConstraint,omitempty"`

	// SessionPersistence defines and configures session persistence
	// for the backend.
	//
	// Support: Extended
	//
	// +optional
	SessionPersistence *SessionPersistence `json:"sessionPersistence,omitempty"`
}

BackendTrafficPolicySpec define the desired state of BackendTrafficPolicy Note: there is no Override or Default policy configuration.

func (*BackendTrafficPolicySpec) DeepCopy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new BackendTrafficPolicySpec.

func (*BackendTrafficPolicySpec) DeepCopyInto

func (in *BackendTrafficPolicySpec) DeepCopyInto(out *BackendTrafficPolicySpec)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type BudgetDetails

type BudgetDetails struct {
	// Percent defines the maximum percentage of active requests that may
	// be made up of retries.
	//
	// Support: Extended
	//
	// +optional
	// +kubebuilder:default=20
	// +kubebuilder:validation:Minimum=0
	// +kubebuilder:validation:Maximum=100
	Percent *int `json:"percent,omitempty"`

	// Interval defines the duration in which requests will be considered
	// for calculating the budget for retries.
	//
	// Support: Extended
	//
	// +optional
	// +kubebuilder:default="10s"
	// +kubebuilder:validation:XValidation:message="interval can not be greater than one hour or less than one second",rule="!(duration(self) < duration('1s') || duration(self) > duration('1h'))"
	Interval *Duration `json:"interval,omitempty"`
}

BudgetDetails specifies the details of the budget configuration, like the percentage of requests in the budget, and the interval between checks.

func (*BudgetDetails) DeepCopy

func (in *BudgetDetails) DeepCopy() *BudgetDetails

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new BudgetDetails.

func (*BudgetDetails) DeepCopyInto

func (in *BudgetDetails) DeepCopyInto(out *BudgetDetails)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type Duration

type Duration = v1.Duration

+k8s:deepcopy-gen=false

type GatewayTLSConfig

type GatewayTLSConfig = v1.GatewayTLSConfig

+k8s:deepcopy-gen=false

type Group

type Group = v1.Group

+k8s:deepcopy-gen=false

type Hostname

type Hostname = v1.Hostname

+k8s:deepcopy-gen=false

type Kind

type Kind = v1.Kind

+k8s:deepcopy-gen=false

type ListenerEntry

type ListenerEntry struct {
	// Name is the name of the Listener. This name MUST be unique within a
	// ListenerSet.
	//
	// Name is not required to be unique across a Gateway and ListenerSets.
	// Routes can attach to a Listener by having a ListenerSet as a parentRef
	// and setting the SectionName
	Name SectionName `json:"name"`

	// Hostname specifies the virtual hostname to match for protocol types that
	// define this concept. When unspecified, all hostnames are matched. This
	// field is ignored for protocols that don't require hostname based
	// matching.
	//
	// Implementations MUST apply Hostname matching appropriately for each of
	// the following protocols:
	//
	// * TLS: The Listener Hostname MUST match the SNI.
	// * HTTP: The Listener Hostname MUST match the Host header of the request.
	// * HTTPS: The Listener Hostname SHOULD match at both the TLS and HTTP
	//   protocol layers as described above. If an implementation does not
	//   ensure that both the SNI and Host header match the Listener hostname,
	//   it MUST clearly document that.
	//
	// For HTTPRoute and TLSRoute resources, there is an interaction with the
	// `spec.hostnames` array. When both listener and route specify hostnames,
	// there MUST be an intersection between the values for a Route to be
	// accepted. For more information, refer to the Route specific Hostnames
	// documentation.
	//
	// Hostnames that are prefixed with a wildcard label (`*.`) are interpreted
	// as a suffix match. That means that a match for `*.example.com` would match
	// both `test.example.com`, and `foo.test.example.com`, but not `example.com`.
	//
	// +optional
	Hostname *Hostname `json:"hostname,omitempty"`

	// Port is the network port. Multiple listeners may use the
	// same port, subject to the Listener compatibility rules.
	Port PortNumber `json:"port"`

	// Protocol specifies the network protocol this listener expects to receive.
	Protocol ProtocolType `json:"protocol"`

	// TLS is the TLS configuration for the Listener. This field is required if
	// the Protocol field is "HTTPS" or "TLS". It is invalid to set this field
	// if the Protocol field is "HTTP", "TCP", or "UDP".
	//
	// The association of SNIs to Certificate defined in GatewayTLSConfig is
	// defined based on the Hostname field for this listener.
	//
	// The GatewayClass MUST use the longest matching SNI out of all
	// available certificates for any TLS handshake.
	//
	// +optional
	TLS *GatewayTLSConfig `json:"tls,omitempty"`

	// AllowedRoutes defines the types of routes that MAY be attached to a
	// Listener and the trusted namespaces where those Route resources MAY be
	// present.
	//
	// Although a client request may match multiple route rules, only one rule
	// may ultimately receive the request. Matching precedence MUST be
	// determined in order of the following criteria:
	//
	// * The most specific match as defined by the Route type.
	// * 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.
	//
	// All valid rules within a Route attached to this Listener should be
	// implemented. Invalid Route rules can be ignored (sometimes that will mean
	// the full Route). If a Route rule transitions from valid to invalid,
	// support for that Route rule should be dropped to ensure consistency. For
	// example, even if a filter specified by a Route rule is invalid, the rest
	// of the rules within that Route should still be supported.
	//
	// +kubebuilder:default={namespaces:{from: Same}}
	// +optional
	AllowedRoutes *AllowedRoutes `json:"allowedRoutes,omitempty"`
}

func (*ListenerEntry) DeepCopy

func (in *ListenerEntry) DeepCopy() *ListenerEntry

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ListenerEntry.

func (*ListenerEntry) DeepCopyInto

func (in *ListenerEntry) DeepCopyInto(out *ListenerEntry)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type ListenerEntryConditionReason

type ListenerEntryConditionReason string

ListenerEntryConditionReason defines the set of reasons that explain why a particular ListenerEntry condition type has been raised.

const (
	// This reason is used with the "Accepted" condition when the Listener
	// requests a port that cannot be used on the Gateway. This reason could be
	// used in a number of instances, including:
	//
	// * The port is already in use.
	// * The port is not supported by the implementation.
	// * The implementation is unable to assign the port to the Listener.
	ListenerEntryReasonPortUnavailable ListenerEntryConditionReason = "PortUnavailable"

	// This reason is used with the "Accepted" and "Programmed"
	// conditions when the Listener is either not yet reconciled or not yet not
	// online and ready to accept client traffic.
	ListenerEntryReasonPending ListenerEntryConditionReason = "Pending"

	// This reason is used with the "Accepted" and "Programmed" conditions when the
	// Listener is syntactically or semantically invalid.
	ListenerEntryReasonInvalid ListenerEntryConditionReason = "Invalid"
)

Shared ListenerEntry "Accepted" & "Programmed" Reasons

type ListenerEntryConditionType

type ListenerEntryConditionType string

ListenerEntryConditionType is a type of condition associated with the listener. This type should be used with the ListenerEntryStatus.Conditions field.

type ListenerEntryStatus

type ListenerEntryStatus struct {
	// Name is the name of the Listener that this status corresponds to.
	Name SectionName `json:"name"`

	// Port is the network port the listener is configured to listen on.
	Port PortNumber `json:"port"`

	// SupportedKinds is the list indicating the Kinds supported by this
	// listener. This MUST represent the kinds an implementation supports for
	// that Listener configuration.
	//
	// If kinds are specified in Spec that are not supported, they MUST NOT
	// appear in this list and an implementation MUST set the "ResolvedRefs"
	// condition to "False" with the "InvalidRouteKinds" reason. If both valid
	// and invalid Route kinds are specified, the implementation MUST
	// reference the valid Route kinds that have been specified.
	//
	// +kubebuilder:validation:MaxItems=8
	SupportedKinds []RouteGroupKind `json:"supportedKinds"`

	// AttachedRoutes represents the total number of Routes that have been
	// successfully attached to this Listener.
	//
	// Successful attachment of a Route to a Listener is based solely on the
	// combination of the AllowedRoutes field on the corresponding Listener
	// and the Route's ParentRefs field. A Route is successfully attached to
	// a Listener when it is selected by the Listener's AllowedRoutes field
	// AND the Route has a valid ParentRef selecting the whole Gateway
	// resource or a specific Listener as a parent resource (more detail on
	// attachment semantics can be found in the documentation on the various
	// Route kinds ParentRefs fields). Listener or Route status does not impact
	// successful attachment, i.e. the AttachedRoutes field count MUST be set
	// for Listeners with condition Accepted: false and MUST count successfully
	// attached Routes that may themselves have Accepted: false conditions.
	//
	// Uses for this field include troubleshooting Route attachment and
	// measuring blast radius/impact of changes to a Listener.
	AttachedRoutes int32 `json:"attachedRoutes"`

	// Conditions describe the current condition of this listener.
	//
	// +listType=map
	// +listMapKey=type
	// +kubebuilder:validation:MaxItems=8
	Conditions []metav1.Condition `json:"conditions"`
}

ListenerStatus is the status associated with a Listener.

func (*ListenerEntryStatus) DeepCopy

func (in *ListenerEntryStatus) DeepCopy() *ListenerEntryStatus

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ListenerEntryStatus.

func (*ListenerEntryStatus) DeepCopyInto

func (in *ListenerEntryStatus) DeepCopyInto(out *ListenerEntryStatus)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type ListenerSetConditionReason

type ListenerSetConditionReason string

ListenerSetConditionReason defines the set of reasons that explain why a particular ListenerSet condition type has been raised.

const (
	// This reason is used with the "Programmed" and "Accepted" conditions when
	// the ListenerSet is syntactically or semantically invalid. For example, this
	// could include unspecified TLS configuration, or some unrecognized or
	// invalid values in the TLS configuration.
	ListenerSetReasonInvalid ListenerSetConditionReason = "Invalid"

	// This reason is used with the "Accepted" and "Programmed"
	// conditions when the status is "Unknown" and no controller has reconciled
	// the Gateway.
	ListenerSetReasonPending ListenerSetConditionReason = "Pending"
)

Shared ListenerSet Reasons

type ListenerSetConditionType

type ListenerSetConditionType string

ListenerSetConditionType is a type of condition associated with a ListenerSet. This type should be used with the ListenerSetStatus.Conditions field.

type ListenerSetSpec

type ListenerSetSpec struct {
	// ParentRef references the Gateway that the listeners are attached to.
	ParentRef ParentGatewayReference `json:"parentRef"`

	// Listeners associated with this ListenerSet. Listeners define
	// logical endpoints that are bound on this referenced parent Gateway's addresses.
	//
	// Listeners in a `Gateway` and their attached `ListenerSets` are concatenated
	// as a list when programming the underlying infrastructure. Each listener
	// name does not need to be unique across the Gateway and ListenerSets.
	// See ListenerEntry.Name for more details.
	//
	// Implementations MUST treat the parent Gateway as having the merged
	// list of all listeners from itself and attached ListenerSets using
	// the following precedence:
	//
	// 1. "parent" Gateway
	// 2. ListenerSet ordered by creation time (oldest first)
	// 3. ListenerSet ordered alphabetically by “{namespace}/{name}”.
	//
	// An implementation MAY reject listeners by setting the ListenerEntryStatus
	// `Accepted“ condition to False with the Reason `TooManyListeners`
	//
	// If a listener has a conflict, this will be reported in the
	// Status.ListenerEntryStatus setting the `Conflicted` condition to True.
	//
	// Implementations SHOULD be cautious about what information from the
	// parent or siblings are reported to avoid accidentally leaking
	// sensitive information that the child would not otherwise have access
	// to. This can include contents of secrets etc.
	//
	// +listType=map
	// +listMapKey=name
	// +kubebuilder:validation:MinItems=1
	// +kubebuilder:validation:MaxItems=64
	// +kubebuilder:validation:XValidation:message="tls must not be specified for protocols ['HTTP', 'TCP', 'UDP']",rule="self.all(l, l.protocol in ['HTTP', 'TCP', 'UDP'] ? !has(l.tls) : true)"
	// +kubebuilder:validation:XValidation:message="tls mode must be Terminate for protocol HTTPS",rule="self.all(l, (l.protocol == 'HTTPS' && has(l.tls)) ? (l.tls.mode == ” || l.tls.mode == 'Terminate') : true)"
	// +kubebuilder:validation:XValidation:message="hostname must not be specified for protocols ['TCP', 'UDP']",rule="self.all(l, l.protocol in ['TCP', 'UDP']  ? (!has(l.hostname) || l.hostname == ”) : true)"
	// +kubebuilder:validation:XValidation:message="Listener name must be unique within the Gateway",rule="self.all(l1, self.exists_one(l2, l1.name == l2.name))"
	// +kubebuilder:validation:XValidation:message="Combination of port, protocol and hostname must be unique for each listener",rule="self.all(l1, !has(l1.port) || self.exists_one(l2, has(l2.port) && l1.port == l2.port && l1.protocol == l2.protocol && (has(l1.hostname) && has(l2.hostname) ? l1.hostname == l2.hostname : !has(l1.hostname) && !has(l2.hostname))))"
	Listeners []ListenerEntry `json:"listeners"`
}

ListenerSetSpec defines the desired state of a ListenerSet.

func (*ListenerSetSpec) DeepCopy

func (in *ListenerSetSpec) DeepCopy() *ListenerSetSpec

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ListenerSetSpec.

func (*ListenerSetSpec) DeepCopyInto

func (in *ListenerSetSpec) DeepCopyInto(out *ListenerSetSpec)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type ListenerSetStatus

type ListenerSetStatus struct {
	// Conditions describe the current conditions of the ListenerSet.
	//
	// Implementations MUST express ListenerSet conditions using the
	// `ListenerSetConditionType` and `ListenerSetConditionReason`
	// constants so that operators and tools can converge on a common
	// vocabulary to describe ListenerSet state.
	//
	// Known condition types are:
	//
	// * "Accepted"
	// * "Programmed"
	//
	// +optional
	// +listType=map
	// +listMapKey=type
	// +kubebuilder:validation:MaxItems=8
	// +kubebuilder:default={{type: "Accepted", status: "Unknown", reason:"Pending", message:"Waiting for controller", lastTransitionTime: "1970-01-01T00:00:00Z"},{type: "Programmed", status: "Unknown", reason:"Pending", message:"Waiting for controller", lastTransitionTime: "1970-01-01T00:00:00Z"}}
	Conditions []metav1.Condition `json:"conditions,omitempty"`

	// Listeners provide status for each unique listener port defined in the Spec.
	//
	// +optional
	// +listType=map
	// +listMapKey=name
	// +kubebuilder:validation:MaxItems=64
	Listeners []ListenerEntryStatus `json:"listeners,omitempty"`
}

func (*ListenerSetStatus) DeepCopy

func (in *ListenerSetStatus) DeepCopy() *ListenerSetStatus

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ListenerSetStatus.

func (*ListenerSetStatus) DeepCopyInto

func (in *ListenerSetStatus) DeepCopyInto(out *ListenerSetStatus)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type LocalPolicyTargetReference

type LocalPolicyTargetReference = v1alpha2.LocalPolicyTargetReference

+k8s:deepcopy-gen=false

type Namespace

type Namespace = v1.Namespace

+k8s:deepcopy-gen=false

type ObjectName

type ObjectName = v1.ObjectName

+k8s:deepcopy-gen=false

type ParentGatewayReference

type ParentGatewayReference struct {
	// Group is the group of the referent.
	//
	// +optional
	// +kubebuilder:default="gateway.networking.k8s.io"
	Group *Group `json:"group"`

	// Kind is kind of the referent. For example "Gateway".
	//
	// +optional
	// +kubebuilder:default=Gateway
	Kind *Kind `json:"kind"`

	// Name is the name of the referent.
	Name ObjectName `json:"name"`

	// Namespace is the namespace of the referent.  If not present,
	// the namespace of the referent is assumed to be the same as
	// the namespace of the referring object.
	//
	// +optional
	Namespace *Namespace `json:"namespace,omitempty"`
}

ParentGatewayReference identifies an API object including its namespace, defaulting to Gateway.

func (*ParentGatewayReference) DeepCopy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ParentGatewayReference.

func (*ParentGatewayReference) DeepCopyInto

func (in *ParentGatewayReference) DeepCopyInto(out *ParentGatewayReference)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type PolicyStatus

type PolicyStatus = v1alpha2.PolicyStatus

+k8s:deepcopy-gen=false

type PortNumber

type PortNumber = v1.PortNumber

+k8s:deepcopy-gen=false

type ProtocolType

type ProtocolType = v1.ProtocolType

+k8s:deepcopy-gen=false

type RequestRate

type RequestRate struct {
	// Count specifies the number of requests per time interval.
	//
	// Support: Extended
	// +kubebuilder:validation:Minimum=1
	// +kubebuilder:validation:Maximum=1000000
	Count *int `json:"count,omitempty"`

	// Interval specifies the divisor of the rate of requests, the amount of
	// time during which the given count of requests occur.
	//
	// Support: Extended
	// +kubebuilder:validation:XValidation:message="interval can not be greater than one hour",rule="!(duration(self) == duration('0s') || duration(self) > duration('1h'))"
	Interval *Duration `json:"interval,omitempty"`
}

RequestRate expresses a rate of requests over a given period of time.

func (*RequestRate) DeepCopy

func (in *RequestRate) DeepCopy() *RequestRate

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RequestRate.

func (*RequestRate) DeepCopyInto

func (in *RequestRate) DeepCopyInto(out *RequestRate)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type RetryConstraint

type RetryConstraint struct {
	// Budget holds the details of the retry budget configuration.
	//
	// +optional
	// +kubebuilder:default={percent: 20, interval: "10s"}
	Budget *BudgetDetails `json:"budget,omitempty"`

	// MinRetryRate defines the minimum rate of retries that will be allowable
	// over a specified duration of time.
	//
	// The effective overall minimum rate of retries targeting the backend
	// service may be much higher, as there can be any number of clients which
	// are applying this setting locally.
	//
	// This ensures that requests can still be retried during periods of low
	// traffic, where the budget for retries may be calculated as a very low
	// value.
	//
	// Support: Extended
	//
	// +optional
	// +kubebuilder:default={count: 10, interval: "1s"}
	MinRetryRate *RequestRate `json:"minRetryRate,omitempty"`
}

RetryConstraint defines the configuration for when to retry a request.

func (*RetryConstraint) DeepCopy

func (in *RetryConstraint) DeepCopy() *RetryConstraint

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RetryConstraint.

func (*RetryConstraint) DeepCopyInto

func (in *RetryConstraint) DeepCopyInto(out *RetryConstraint)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type RouteGroupKind

type RouteGroupKind = v1.RouteGroupKind

+k8s:deepcopy-gen=false

type SectionName

type SectionName = v1.SectionName

+k8s:deepcopy-gen=false

type SessionPersistence

type SessionPersistence = v1.SessionPersistence

+k8s:deepcopy-gen=false

type XBackendTrafficPolicy

type XBackendTrafficPolicy struct {
	metav1.TypeMeta   `json:",inline"`
	metav1.ObjectMeta `json:"metadata,omitempty"`

	// Spec defines the desired state of BackendTrafficPolicy.
	Spec BackendTrafficPolicySpec `json:"spec"`

	// Status defines the current state of BackendTrafficPolicy.
	Status PolicyStatus `json:"status,omitempty"`
}

XBackendTrafficPolicy defines the configuration for how traffic to a target backend should be handled.

func (*XBackendTrafficPolicy) DeepCopy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new XBackendTrafficPolicy.

func (*XBackendTrafficPolicy) DeepCopyInto

func (in *XBackendTrafficPolicy) DeepCopyInto(out *XBackendTrafficPolicy)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*XBackendTrafficPolicy) DeepCopyObject

func (in *XBackendTrafficPolicy) DeepCopyObject() runtime.Object

DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.

type XBackendTrafficPolicyList

type XBackendTrafficPolicyList struct {
	metav1.TypeMeta `json:",inline"`
	metav1.ListMeta `json:"metadata,omitempty"`
	Items           []XBackendTrafficPolicy `json:"items"`
}

XBackendTrafficPolicyList contains a list of BackendTrafficPolicies +kubebuilder:object:root=true

func (*XBackendTrafficPolicyList) DeepCopy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new XBackendTrafficPolicyList.

func (*XBackendTrafficPolicyList) DeepCopyInto

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*XBackendTrafficPolicyList) DeepCopyObject

func (in *XBackendTrafficPolicyList) DeepCopyObject() runtime.Object

DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.

type XListenerSet

type XListenerSet struct {
	metav1.TypeMeta   `json:",inline"`
	metav1.ObjectMeta `json:"metadata,omitempty"`

	// Spec defines the desired state of ListenerSet.
	Spec ListenerSetSpec `json:"spec"`

	// Status defines the current state of ListenerSet.
	//
	// +kubebuilder:default={conditions: {{type: "Accepted", status: "Unknown", reason:"Pending", message:"Waiting for controller", lastTransitionTime: "1970-01-01T00:00:00Z"},{type: "Programmed", status: "Unknown", reason:"Pending", message:"Waiting for controller", lastTransitionTime: "1970-01-01T00:00:00Z"}}}
	Status ListenerSetStatus `json:"status,omitempty"`
}

XListenerSet defines a set of additional listeners to attach to an existing Gateway.

func (*XListenerSet) DeepCopy

func (in *XListenerSet) DeepCopy() *XListenerSet

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new XListenerSet.

func (*XListenerSet) DeepCopyInto

func (in *XListenerSet) DeepCopyInto(out *XListenerSet)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*XListenerSet) DeepCopyObject

func (in *XListenerSet) DeepCopyObject() runtime.Object

DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.

type XListenerSetList

type XListenerSetList struct {
	metav1.TypeMeta `json:",inline"`
	metav1.ListMeta `json:"metadata,omitempty"`
	Items           []XListenerSet `json:"items"`
}

+kubebuilder:object:root=true

func (*XListenerSetList) DeepCopy

func (in *XListenerSetList) DeepCopy() *XListenerSetList

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new XListenerSetList.

func (*XListenerSetList) DeepCopyInto

func (in *XListenerSetList) DeepCopyInto(out *XListenerSetList)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*XListenerSetList) DeepCopyObject

func (in *XListenerSetList) DeepCopyObject() runtime.Object

DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL