v1alpha1

package
v1.5.1 Latest Latest
Warning

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

Go to latest
Published: Dec 16, 2024 License: Apache-2.0 Imports: 5 Imported by: 0

Documentation

Overview

Package v1alpha1 contains API Schema definitions for the gateway.nginx.org API group.

+kubebuilder:object:generate=true +groupName=gateway.nginx.org

Index

Constants

View Source
const (
	// NginxGatewayConditionValid is a condition that is true when the NginxGateway
	// configuration is syntactically and semantically valid.
	NginxGatewayConditionValid NginxGatewayConditionType = "Valid"

	// NginxGatewayReasonValid is a reason that is used with the "Valid" condition when the condition is True.
	NginxGatewayReasonValid NginxGatewayConditionReason = "Valid"

	// NginxGatewayReasonInvalid is a reason that is used with the "Valid" condition when the condition is False.
	NginxGatewayReasonInvalid NginxGatewayConditionReason = "Invalid"
)
View Source
const (
	// SnippetsFilterConditionTypeAccepted indicates that the SnippetsFilter is accepted.
	//
	// Possible reasons for this condition to be True:
	//
	// * Accepted
	//
	// Possible reasons for this condition to be False:
	//
	// * Invalid.
	SnippetsFilterConditionTypeAccepted SnippetsFilterConditionType = "Accepted"

	// SnippetsFilterConditionReasonAccepted is used with the Accepted condition type when
	// the condition is true.
	SnippetsFilterConditionReasonAccepted SnippetsFilterConditionReason = "Accepted"

	// SnippetsFilterConditionReasonInvalid is used with the Accepted condition type when
	// SnippetsFilter is invalid.
	SnippetsFilterConditionReasonInvalid SnippetsFilterConditionReason = "Invalid"
)
View Source
const GroupName = "gateway.nginx.org"

GroupName specifies the group name used to register the objects.

Variables

View Source
var (
	// SchemeBuilder collects functions that add things to a scheme. It's to allow
	// code to compile without explicitly referencing generated types. You should
	// declare one in each package that will have generated deep copy or conversion
	// functions.
	SchemeBuilder = runtime.NewSchemeBuilder(addKnownTypes)

	// AddToScheme applies all the stored functions to the scheme. A non-nil error
	// indicates that one function failed and the attempt was abandoned.
	AddToScheme = SchemeBuilder.AddToScheme
)
View Source
var SchemeGroupVersion = schema.GroupVersion{Group: GroupName, Version: "v1alpha1"}

SchemeGroupVersion is group version used to register these objects.

Functions

func Resource

func Resource(resource string) schema.GroupResource

Resource takes an unqualified resource and returns a Group qualified GroupResource.

Types

type Address added in v1.5.0

type Address struct {
	// Type specifies the type of address.
	Type AddressType `json:"type"`

	// Value specifies the address value.
	Value string `json:"value"`
}

Address is a struct that specifies address type and value.

func (*Address) DeepCopy added in v1.5.0

func (in *Address) DeepCopy() *Address

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

func (*Address) DeepCopyInto added in v1.5.0

func (in *Address) DeepCopyInto(out *Address)

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

type AddressType added in v1.5.0

type AddressType string

AddressType specifies the type of address. +kubebuilder:validation:Enum=CIDR;IPAddress;Hostname

const (
	// CIDRAddressType specifies that the address is a CIDR block.
	CIDRAddressType AddressType = "CIDR"

	// IPAddressType specifies that the address is an IP address.
	IPAddressType AddressType = "IPAddress"

	// HostnameAddressType specifies that the address is a Hostname.
	HostnameAddressType AddressType = "Hostname"
)

type ClientBody added in v1.3.0

type ClientBody struct {
	// MaxSize sets the maximum allowed size of the client request body.
	// If the size in a request exceeds the configured value,
	// the 413 (Request Entity Too Large) error is returned to the client.
	// Setting size to 0 disables checking of client request body size.
	// Default: https://nginx.org/en/docs/http/ngx_http_core_module.html#client_max_body_size.
	//
	// +optional
	MaxSize *Size `json:"maxSize,omitempty"`

	// Timeout defines a timeout for reading client request body. The timeout is set only for a period between
	// two successive read operations, not for the transmission of the whole request body.
	// If a client does not transmit anything within this time, the request is terminated with the
	// 408 (Request Time-out) error.
	// Default: https://nginx.org/en/docs/http/ngx_http_core_module.html#client_body_timeout.
	//
	// +optional
	Timeout *Duration `json:"timeout,omitempty"`
}

ClientBody contains the settings for the client request body.

func (*ClientBody) DeepCopy added in v1.3.0

func (in *ClientBody) DeepCopy() *ClientBody

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

func (*ClientBody) DeepCopyInto added in v1.3.0

func (in *ClientBody) DeepCopyInto(out *ClientBody)

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

type ClientKeepAlive added in v1.3.0

type ClientKeepAlive struct {
	// Requests sets the maximum number of requests that can be served through one keep-alive connection.
	// After the maximum number of requests are made, the connection is closed. Closing connections periodically
	// is necessary to free per-connection memory allocations. Therefore, using too high maximum number of requests
	// is not recommended as it can lead to excessive memory usage.
	// Default: https://nginx.org/en/docs/http/ngx_http_core_module.html#keepalive_requests.
	//
	// +optional
	// +kubebuilder:validation:Minimum=0
	Requests *int32 `json:"requests,omitempty"`

	// Time defines the maximum time during which requests can be processed through one keep-alive connection.
	// After this time is reached, the connection is closed following the subsequent request processing.
	// Default: https://nginx.org/en/docs/http/ngx_http_core_module.html#keepalive_time.
	//
	// +optional
	Time *Duration `json:"time,omitempty"`

	// Timeout defines the keep-alive timeouts for clients.
	//
	// +kubebuilder:validation:XValidation:message="header can only be specified if server is specified",rule="!(has(self.header) && !has(self.server))"
	//
	//
	// +optional
	//nolint:lll
	Timeout *ClientKeepAliveTimeout `json:"timeout,omitempty"`
}

ClientKeepAlive defines the keep-alive settings for clients.

func (*ClientKeepAlive) DeepCopy added in v1.3.0

func (in *ClientKeepAlive) DeepCopy() *ClientKeepAlive

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

func (*ClientKeepAlive) DeepCopyInto added in v1.3.0

func (in *ClientKeepAlive) DeepCopyInto(out *ClientKeepAlive)

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

type ClientKeepAliveTimeout added in v1.3.0

type ClientKeepAliveTimeout struct {
	// Server sets the timeout during which a keep-alive client connection will stay open on the server side.
	// Setting this value to 0 disables keep-alive client connections.
	//
	// +optional
	Server *Duration `json:"server,omitempty"`

	// Header sets the timeout in the "Keep-Alive: timeout=time" response header field.
	//
	// +optional
	Header *Duration `json:"header,omitempty"`
}

ClientKeepAliveTimeout defines the timeouts related to keep-alive client connections. Default: https://nginx.org/en/docs/http/ngx_http_core_module.html#keepalive_timeout.

func (*ClientKeepAliveTimeout) DeepCopy added in v1.3.0

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

func (*ClientKeepAliveTimeout) DeepCopyInto added in v1.3.0

func (in *ClientKeepAliveTimeout) DeepCopyInto(out *ClientKeepAliveTimeout)

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

type ClientSettingsPolicy added in v1.3.0

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

	// Spec defines the desired state of the ClientSettingsPolicy.
	Spec ClientSettingsPolicySpec `json:"spec"`

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

ClientSettingsPolicy is an Inherited Attached Policy. It provides a way to configure the behavior of the connection between the client and NGINX Gateway Fabric.

func (*ClientSettingsPolicy) DeepCopy added in v1.3.0

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

func (*ClientSettingsPolicy) DeepCopyInto added in v1.3.0

func (in *ClientSettingsPolicy) DeepCopyInto(out *ClientSettingsPolicy)

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

func (*ClientSettingsPolicy) DeepCopyObject added in v1.3.0

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

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

func (*ClientSettingsPolicy) GetPolicyStatus added in v1.3.0

func (p *ClientSettingsPolicy) GetPolicyStatus() v1alpha2.PolicyStatus

func (*ClientSettingsPolicy) GetTargetRefs added in v1.3.0

func (*ClientSettingsPolicy) SetPolicyStatus added in v1.3.0

func (p *ClientSettingsPolicy) SetPolicyStatus(status v1alpha2.PolicyStatus)

type ClientSettingsPolicyList added in v1.3.0

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

ClientSettingsPolicyList contains a list of ClientSettingsPolicies.

func (*ClientSettingsPolicyList) DeepCopy added in v1.3.0

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

func (*ClientSettingsPolicyList) DeepCopyInto added in v1.3.0

func (in *ClientSettingsPolicyList) DeepCopyInto(out *ClientSettingsPolicyList)

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

func (*ClientSettingsPolicyList) DeepCopyObject added in v1.3.0

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

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

type ClientSettingsPolicySpec added in v1.3.0

type ClientSettingsPolicySpec struct {
	// Body defines the client request body settings.
	//
	// +optional
	Body *ClientBody `json:"body,omitempty"`

	// KeepAlive defines the keep-alive settings.
	//
	// +optional
	KeepAlive *ClientKeepAlive `json:"keepAlive,omitempty"`

	// TargetRef identifies an API object to apply the policy to.
	// Object must be in the same namespace as the policy.
	// Support: Gateway, HTTPRoute, GRPCRoute.
	//
	// +kubebuilder:validation:XValidation:message="TargetRef Kind must be one of: Gateway, HTTPRoute, or GRPCRoute",rule="(self.kind=='Gateway' || self.kind=='HTTPRoute' || self.kind=='GRPCRoute')"
	// +kubebuilder:validation:XValidation:message="TargetRef Group must be gateway.networking.k8s.io.",rule="(self.group=='gateway.networking.k8s.io')"
	//nolint:lll
	TargetRef gatewayv1alpha2.LocalPolicyTargetReference `json:"targetRef"`
}

ClientSettingsPolicySpec defines the desired state of ClientSettingsPolicy.

func (*ClientSettingsPolicySpec) DeepCopy added in v1.3.0

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

func (*ClientSettingsPolicySpec) DeepCopyInto added in v1.3.0

func (in *ClientSettingsPolicySpec) DeepCopyInto(out *ClientSettingsPolicySpec)

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

type ControllerLogLevel

type ControllerLogLevel string

ControllerLogLevel type defines the logging level for the control plane.

+kubebuilder:validation:Enum=info;debug;error

const (
	// ControllerLogLevelInfo is the info level for control plane logging.
	ControllerLogLevelInfo ControllerLogLevel = "info"

	// ControllerLogLevelDebug is the debug level for control plane logging.
	ControllerLogLevelDebug ControllerLogLevel = "debug"

	// ControllerLogLevelError is the error level for control plane logging.
	ControllerLogLevelError ControllerLogLevel = "error"
)

type ControllerStatus added in v1.5.0

type ControllerStatus struct {
	// ControllerName is a domain/path string that indicates the name of the
	// controller that wrote this status. This corresponds with the
	// controllerName field on GatewayClass.
	//
	// Example: "example.net/gateway-controller".
	//
	// The format of this field is DOMAIN "/" PATH, where DOMAIN and PATH are
	// valid Kubernetes names
	// (https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names).
	//
	// Controllers MUST populate this field when writing status. Controllers should ensure that
	// entries to status populated with their ControllerName are cleaned up when they are no
	// longer necessary.
	ControllerName v1.GatewayController `json:"controllerName"`

	// Conditions describe the status of the SnippetsFilter.
	//
	// +optional
	// +listType=map
	// +listMapKey=type
	// +kubebuilder:validation:MinItems=1
	// +kubebuilder:validation:MaxItems=8
	Conditions []metav1.Condition `json:"conditions,omitempty"`
}

func (*ControllerStatus) DeepCopy added in v1.5.0

func (in *ControllerStatus) DeepCopy() *ControllerStatus

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

func (*ControllerStatus) DeepCopyInto added in v1.5.0

func (in *ControllerStatus) DeepCopyInto(out *ControllerStatus)

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

type Duration added in v1.3.0

type Duration string

Duration is a string value representing a duration in time. Duration can be specified in milliseconds (ms), seconds (s), minutes (m), hours (h). A value without a suffix is seconds. Examples: 120s, 50ms, 5m, 1h.

+kubebuilder:validation:Pattern=`^[0-9]{1,4}(ms|s|m|h)?$`

type IPFamilyType added in v1.4.0

type IPFamilyType string

IPFamilyType specifies the IP family to be used by NGINX.

+kubebuilder:validation:Enum=dual;ipv4;ipv6

const (
	// Dual specifies that NGINX will use both IPv4 and IPv6.
	Dual IPFamilyType = "dual"
	// IPv4 specifies that NGINX will use only IPv4.
	IPv4 IPFamilyType = "ipv4"
	// IPv6 specifies that NGINX will use only IPv6.
	IPv6 IPFamilyType = "ipv6"
)

type Logging

type Logging struct {
	// Level defines the logging level.
	//
	// +optional
	// +kubebuilder:default=info
	Level *ControllerLogLevel `json:"level,omitempty"`
}

Logging defines logging related settings for the control plane.

func (*Logging) DeepCopy

func (in *Logging) DeepCopy() *Logging

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

func (*Logging) DeepCopyInto

func (in *Logging) DeepCopyInto(out *Logging)

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

type NginxContext added in v1.5.0

type NginxContext string

NginxContext represents the NGINX configuration context.

+kubebuilder:validation:Enum=main;http;http.server;http.server.location

const (
	// NginxContextMain is the main context of the NGINX configuration.
	NginxContextMain NginxContext = "main"

	// NginxContextHTTP is the http context of the NGINX configuration.
	// https://nginx.org/en/docs/http/ngx_http_core_module.html#http
	NginxContextHTTP NginxContext = "http"

	// NginxContextHTTPServer is the server context of the NGINX configuration.
	// https://nginx.org/en/docs/http/ngx_http_core_module.html#server
	NginxContextHTTPServer NginxContext = "http.server"

	// NginxContextHTTPServerLocation is the location context of the NGINX configuration.
	// https://nginx.org/en/docs/http/ngx_http_core_module.html#location
	NginxContextHTTPServerLocation NginxContext = "http.server.location"
)

type NginxErrorLogLevel added in v1.5.0

type NginxErrorLogLevel string

NginxErrorLogLevel type defines the log level of error logs for NGINX.

+kubebuilder:validation:Enum=debug;info;notice;warn;error;crit;alert;emerg

const (
	// NginxLogLevelDebug is the debug level for NGINX error logs.
	NginxLogLevelDebug NginxErrorLogLevel = "debug"

	// NginxLogLevelInfo is the info level for NGINX error logs.
	NginxLogLevelInfo NginxErrorLogLevel = "info"

	// NginxLogLevelNotice is the notice level for NGINX error logs.
	NginxLogLevelNotice NginxErrorLogLevel = "notice"

	// NginxLogLevelWarn is the warn level for NGINX error logs.
	NginxLogLevelWarn NginxErrorLogLevel = "warn"

	// NginxLogLevelError is the error level for NGINX error logs.
	NginxLogLevelError NginxErrorLogLevel = "error"

	// NginxLogLevelCrit is the crit level for NGINX error logs.
	NginxLogLevelCrit NginxErrorLogLevel = "crit"

	// NginxLogLevelAlert is the alert level for NGINX error logs.
	NginxLogLevelAlert NginxErrorLogLevel = "alert"

	// NginxLogLevelEmerg is the emerg level for NGINX error logs.
	NginxLogLevelEmerg NginxErrorLogLevel = "emerg"
)

type NginxGateway

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

	// NginxGatewaySpec defines the desired state of the NginxGateway.
	Spec NginxGatewaySpec `json:"spec"`

	// NginxGatewayStatus defines the state of the NginxGateway.
	Status NginxGatewayStatus `json:"status,omitempty"`
}

NginxGateway represents the dynamic configuration for an NGINX Gateway Fabric control plane.

func (*NginxGateway) DeepCopy

func (in *NginxGateway) DeepCopy() *NginxGateway

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

func (*NginxGateway) DeepCopyInto

func (in *NginxGateway) DeepCopyInto(out *NginxGateway)

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

func (*NginxGateway) DeepCopyObject

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

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

type NginxGatewayConditionReason

type NginxGatewayConditionReason string

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

type NginxGatewayConditionType

type NginxGatewayConditionType string

NginxGatewayConditionType is a type of condition associated with an NginxGateway. This type should be used with the NginxGatewayStatus.Conditions field.

type NginxGatewayList

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

NginxGatewayList contains a list of NginxGateways.

func (*NginxGatewayList) DeepCopy

func (in *NginxGatewayList) DeepCopy() *NginxGatewayList

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

func (*NginxGatewayList) DeepCopyInto

func (in *NginxGatewayList) DeepCopyInto(out *NginxGatewayList)

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

func (*NginxGatewayList) DeepCopyObject

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

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

type NginxGatewaySpec

type NginxGatewaySpec struct {
	// Logging defines logging related settings for the control plane.
	//
	// +optional
	Logging *Logging `json:"logging,omitempty"`
}

NginxGatewaySpec defines the desired state of the NginxGateway.

func (*NginxGatewaySpec) DeepCopy

func (in *NginxGatewaySpec) DeepCopy() *NginxGatewaySpec

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

func (*NginxGatewaySpec) DeepCopyInto

func (in *NginxGatewaySpec) DeepCopyInto(out *NginxGatewaySpec)

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

type NginxGatewayStatus

type NginxGatewayStatus struct {
	// +optional
	// +listType=map
	// +listMapKey=type
	// +kubebuilder:validation:MaxItems=8
	Conditions []metav1.Condition `json:"conditions,omitempty"`
}

NginxGatewayStatus defines the state of the NginxGateway.

func (*NginxGatewayStatus) DeepCopy

func (in *NginxGatewayStatus) DeepCopy() *NginxGatewayStatus

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

func (*NginxGatewayStatus) DeepCopyInto

func (in *NginxGatewayStatus) DeepCopyInto(out *NginxGatewayStatus)

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

type NginxLogging added in v1.5.0

type NginxLogging struct {
	// ErrorLevel defines the error log level. Possible log levels listed in order of increasing severity are
	// debug, info, notice, warn, error, crit, alert, and emerg. Setting a certain log level will cause all messages
	// of the specified and more severe log levels to be logged. For example, the log level 'error' will cause error,
	// crit, alert, and emerg messages to be logged. https://nginx.org/en/docs/ngx_core_module.html#error_log
	//
	// +optional
	// +kubebuilder:default=info
	ErrorLevel *NginxErrorLogLevel `json:"errorLevel,omitempty"`
}

NginxLogging defines logging related settings for NGINX.

func (*NginxLogging) DeepCopy added in v1.5.0

func (in *NginxLogging) DeepCopy() *NginxLogging

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

func (*NginxLogging) DeepCopyInto added in v1.5.0

func (in *NginxLogging) DeepCopyInto(out *NginxLogging)

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

type NginxProxy added in v1.3.0

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

	// Spec defines the desired state of the NginxProxy.
	Spec NginxProxySpec `json:"spec"`
}

NginxProxy is a configuration object that is attached to a GatewayClass parametersRef. It provides a way to configure global settings for all Gateways defined from the GatewayClass.

func (*NginxProxy) DeepCopy added in v1.3.0

func (in *NginxProxy) DeepCopy() *NginxProxy

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

func (*NginxProxy) DeepCopyInto added in v1.3.0

func (in *NginxProxy) DeepCopyInto(out *NginxProxy)

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

func (*NginxProxy) DeepCopyObject added in v1.3.0

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

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

type NginxProxyList added in v1.3.0

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

NginxProxyList contains a list of NginxProxies.

func (*NginxProxyList) DeepCopy added in v1.3.0

func (in *NginxProxyList) DeepCopy() *NginxProxyList

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

func (*NginxProxyList) DeepCopyInto added in v1.3.0

func (in *NginxProxyList) DeepCopyInto(out *NginxProxyList)

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

func (*NginxProxyList) DeepCopyObject added in v1.3.0

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

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

type NginxProxySpec added in v1.3.0

type NginxProxySpec struct {
	// IPFamily specifies the IP family to be used by the NGINX.
	// Default is "dual", meaning the server will use both IPv4 and IPv6.
	//
	// +optional
	// +kubebuilder:default:=dual
	IPFamily *IPFamilyType `json:"ipFamily,omitempty"`
	// Telemetry specifies the OpenTelemetry configuration.
	//
	// +optional
	Telemetry *Telemetry `json:"telemetry,omitempty"`
	// RewriteClientIP defines configuration for rewriting the client IP to the original client's IP.
	// +kubebuilder:validation:XValidation:message="if mode is set, trustedAddresses is a required field",rule="!(has(self.mode) && (!has(self.trustedAddresses) || size(self.trustedAddresses) == 0))"
	//
	// +optional
	//nolint:lll
	RewriteClientIP *RewriteClientIP `json:"rewriteClientIP,omitempty"`
	// Logging defines logging related settings for NGINX.
	//
	// +optional
	Logging *NginxLogging `json:"logging,omitempty"`
	// DisableHTTP2 defines if http2 should be disabled for all servers.
	// Default is false, meaning http2 will be enabled for all servers.
	//
	// +optional
	DisableHTTP2 bool `json:"disableHTTP2,omitempty"`
}

NginxProxySpec defines the desired state of the NginxProxy.

func (*NginxProxySpec) DeepCopy added in v1.3.0

func (in *NginxProxySpec) DeepCopy() *NginxProxySpec

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

func (*NginxProxySpec) DeepCopyInto added in v1.3.0

func (in *NginxProxySpec) DeepCopyInto(out *NginxProxySpec)

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

type ObservabilityPolicy added in v1.3.0

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

	// Spec defines the desired state of the ObservabilityPolicy.
	Spec ObservabilityPolicySpec `json:"spec"`

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

ObservabilityPolicy is a Direct Attached Policy. It provides a way to configure observability settings for the NGINX Gateway Fabric data plane. Used in conjunction with the NginxProxy CRD that is attached to the GatewayClass parametersRef.

func (*ObservabilityPolicy) DeepCopy added in v1.3.0

func (in *ObservabilityPolicy) DeepCopy() *ObservabilityPolicy

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

func (*ObservabilityPolicy) DeepCopyInto added in v1.3.0

func (in *ObservabilityPolicy) DeepCopyInto(out *ObservabilityPolicy)

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

func (*ObservabilityPolicy) DeepCopyObject added in v1.3.0

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

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

func (*ObservabilityPolicy) GetPolicyStatus added in v1.3.0

func (p *ObservabilityPolicy) GetPolicyStatus() v1alpha2.PolicyStatus

func (*ObservabilityPolicy) GetTargetRefs added in v1.3.0

func (*ObservabilityPolicy) SetPolicyStatus added in v1.3.0

func (p *ObservabilityPolicy) SetPolicyStatus(status v1alpha2.PolicyStatus)

type ObservabilityPolicyList added in v1.3.0

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

ObservabilityPolicyList contains a list of ObservabilityPolicies.

func (*ObservabilityPolicyList) DeepCopy added in v1.3.0

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

func (*ObservabilityPolicyList) DeepCopyInto added in v1.3.0

func (in *ObservabilityPolicyList) DeepCopyInto(out *ObservabilityPolicyList)

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

func (*ObservabilityPolicyList) DeepCopyObject added in v1.3.0

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

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

type ObservabilityPolicySpec added in v1.3.0

type ObservabilityPolicySpec struct {
	// Tracing allows for enabling and configuring tracing.
	//
	// +optional
	Tracing *Tracing `json:"tracing,omitempty"`

	// TargetRefs identifies the API object(s) to apply the policy to.
	// Objects must be in the same namespace as the policy.
	// Support: HTTPRoute, GRPCRoute.
	//
	// +kubebuilder:validation:MaxItems=16
	// +kubebuilder:validation:XValidation:message="TargetRef Kind must be: HTTPRoute or GRPCRoute",rule="(self.exists(t, t.kind=='HTTPRoute') || self.exists(t, t.kind=='GRPCRoute'))"
	// +kubebuilder:validation:XValidation:message="TargetRef Group must be gateway.networking.k8s.io.",rule="self.all(t, t.group=='gateway.networking.k8s.io')"
	//nolint:lll
	TargetRefs []gatewayv1alpha2.LocalPolicyTargetReference `json:"targetRefs"`
}

ObservabilityPolicySpec defines the desired state of the ObservabilityPolicy.

func (*ObservabilityPolicySpec) DeepCopy added in v1.3.0

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

func (*ObservabilityPolicySpec) DeepCopyInto added in v1.3.0

func (in *ObservabilityPolicySpec) DeepCopyInto(out *ObservabilityPolicySpec)

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

type RewriteClientIP added in v1.5.0

type RewriteClientIP struct {
	// Mode defines how NGINX will rewrite the client's IP address.
	// There are two possible modes:
	// - ProxyProtocol: NGINX will rewrite the client's IP using the PROXY protocol header.
	// - XForwardedFor: NGINX will rewrite the client's IP using the X-Forwarded-For header.
	// Sets NGINX directive real_ip_header: https://nginx.org/en/docs/http/ngx_http_realip_module.html#real_ip_header
	//
	// +optional
	Mode *RewriteClientIPModeType `json:"mode,omitempty"`

	// SetIPRecursively configures whether recursive search is used when selecting the client's address from
	// the X-Forwarded-For header. It is used in conjunction with TrustedAddresses.
	// If enabled, NGINX will recurse on the values in X-Forwarded-Header from the end of array
	// to start of array and select the first untrusted IP.
	// For example, if X-Forwarded-For is [11.11.11.11, 22.22.22.22, 55.55.55.1],
	// and TrustedAddresses is set to 55.55.55.1/32, NGINX will rewrite the client IP to 22.22.22.22.
	// If disabled, NGINX will select the IP at the end of the array.
	// In the previous example, 55.55.55.1 would be selected.
	// Sets NGINX directive real_ip_recursive: https://nginx.org/en/docs/http/ngx_http_realip_module.html#real_ip_recursive
	//
	// +optional
	SetIPRecursively *bool `json:"setIPRecursively,omitempty"`

	// TrustedAddresses specifies the addresses that are trusted to send correct client IP information.
	// If a request comes from a trusted address, NGINX will rewrite the client IP information,
	// and forward it to the backend in the X-Forwarded-For* and X-Real-IP headers.
	// If the request does not come from a trusted address, NGINX will not rewrite the client IP information.
	// TrustedAddresses only supports CIDR blocks: 192.33.21.1/24, fe80::1/64.
	// To trust all addresses (not recommended for production), set to 0.0.0.0/0.
	// If no addresses are provided, NGINX will not rewrite the client IP information.
	// Sets NGINX directive set_real_ip_from: https://nginx.org/en/docs/http/ngx_http_realip_module.html#set_real_ip_from
	// This field is required if mode is set.
	//
	// +optional
	// +listType=map
	// +listMapKey=type
	// +kubebuilder:validation:MaxItems=16
	TrustedAddresses []Address `json:"trustedAddresses,omitempty"`
}

RewriteClientIP specifies the configuration for rewriting the client's IP address.

func (*RewriteClientIP) DeepCopy added in v1.5.0

func (in *RewriteClientIP) DeepCopy() *RewriteClientIP

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

func (*RewriteClientIP) DeepCopyInto added in v1.5.0

func (in *RewriteClientIP) DeepCopyInto(out *RewriteClientIP)

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

type RewriteClientIPModeType added in v1.5.0

type RewriteClientIPModeType string

RewriteClientIPModeType defines how NGINX Gateway Fabric will determine the client's original IP address. +kubebuilder:validation:Enum=ProxyProtocol;XForwardedFor

const (
	// RewriteClientIPModeProxyProtocol configures NGINX to accept PROXY protocol and
	// set the client's IP address to the IP address in the PROXY protocol header.
	// Sets the proxy_protocol parameter on the listen directive of all servers and sets real_ip_header
	// to proxy_protocol: https://nginx.org/en/docs/http/ngx_http_realip_module.html#real_ip_header.
	RewriteClientIPModeProxyProtocol RewriteClientIPModeType = "ProxyProtocol"

	// RewriteClientIPModeXForwardedFor configures NGINX to set the client's IP address to the
	// IP address in the X-Forwarded-For HTTP header.
	// https://nginx.org/en/docs/http/ngx_http_realip_module.html#real_ip_header.
	RewriteClientIPModeXForwardedFor RewriteClientIPModeType = "XForwardedFor"
)

type Size added in v1.3.0

type Size string

Size is a string value representing a size. Size can be specified in bytes, kilobytes (k), megabytes (m), or gigabytes (g). Examples: 1024, 8k, 1m.

+kubebuilder:validation:Pattern=`^\d{1,4}(k|m|g)?$`

type Snippet added in v1.5.0

type Snippet struct {
	// Context is the NGINX context to insert the snippet into.
	Context NginxContext `json:"context"`

	// Value is the NGINX configuration snippet.
	// +kubebuilder:validation:MinLength=1
	Value string `json:"value"`
}

Snippet represents an NGINX configuration snippet.

func (*Snippet) DeepCopy added in v1.5.0

func (in *Snippet) DeepCopy() *Snippet

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

func (*Snippet) DeepCopyInto added in v1.5.0

func (in *Snippet) DeepCopyInto(out *Snippet)

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

type SnippetsFilter added in v1.5.0

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

	// Spec defines the desired state of the SnippetsFilter.
	Spec SnippetsFilterSpec `json:"spec"`

	// Status defines the state of the SnippetsFilter.
	Status SnippetsFilterStatus `json:"status,omitempty"`
}

SnippetsFilter is a filter that allows inserting NGINX configuration into the generated NGINX config for HTTPRoute and GRPCRoute resources.

func (*SnippetsFilter) DeepCopy added in v1.5.0

func (in *SnippetsFilter) DeepCopy() *SnippetsFilter

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

func (*SnippetsFilter) DeepCopyInto added in v1.5.0

func (in *SnippetsFilter) DeepCopyInto(out *SnippetsFilter)

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

func (*SnippetsFilter) DeepCopyObject added in v1.5.0

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

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

type SnippetsFilterConditionReason added in v1.5.0

type SnippetsFilterConditionReason string

SnippetsFilterConditionReason is a reason for a SnippetsFilter condition type.

type SnippetsFilterConditionType added in v1.5.0

type SnippetsFilterConditionType string

SnippetsFilterConditionType is a type of condition associated with SnippetsFilter.

type SnippetsFilterList added in v1.5.0

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

SnippetsFilterList contains a list of SnippetFilters.

func (*SnippetsFilterList) DeepCopy added in v1.5.0

func (in *SnippetsFilterList) DeepCopy() *SnippetsFilterList

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

func (*SnippetsFilterList) DeepCopyInto added in v1.5.0

func (in *SnippetsFilterList) DeepCopyInto(out *SnippetsFilterList)

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

func (*SnippetsFilterList) DeepCopyObject added in v1.5.0

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

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

type SnippetsFilterSpec added in v1.5.0

type SnippetsFilterSpec struct {
	// Snippets is a list of NGINX configuration snippets.
	// There can only be one snippet per context.
	// Allowed contexts: main, http, http.server, http.server.location.
	// +kubebuilder:validation:MinItems=1
	// +kubebuilder:validation:MaxItems=4
	// +kubebuilder:validation:XValidation:message="Only one snippet allowed per context",rule="self.all(s1, self.exists_one(s2, s1.context == s2.context))"
	//nolint:lll
	Snippets []Snippet `json:"snippets"`
}

SnippetsFilterSpec defines the desired state of the SnippetsFilter.

func (*SnippetsFilterSpec) DeepCopy added in v1.5.0

func (in *SnippetsFilterSpec) DeepCopy() *SnippetsFilterSpec

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

func (*SnippetsFilterSpec) DeepCopyInto added in v1.5.0

func (in *SnippetsFilterSpec) DeepCopyInto(out *SnippetsFilterSpec)

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

type SnippetsFilterStatus added in v1.5.0

type SnippetsFilterStatus struct {
	// Controllers is a list of Gateway API controllers that processed the SnippetsFilter
	// and the status of the SnippetsFilter with respect to each controller.
	//
	// +kubebuilder:validation:MaxItems=16
	Controllers []ControllerStatus `json:"controllers,omitempty"`
}

SnippetsFilterStatus defines the state of SnippetsFilter.

func (*SnippetsFilterStatus) DeepCopy added in v1.5.0

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

func (*SnippetsFilterStatus) DeepCopyInto added in v1.5.0

func (in *SnippetsFilterStatus) DeepCopyInto(out *SnippetsFilterStatus)

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

type SpanAttribute added in v1.3.0

type SpanAttribute struct {
	// Key is the key for a span attribute.
	// Format: must have all '"' escaped and must not contain any '$' or end with an unescaped '\'
	//
	// +kubebuilder:validation:MinLength=1
	// +kubebuilder:validation:MaxLength=255
	// +kubebuilder:validation:Pattern=`^([^"$\\]|\\[^$])*$`
	Key string `json:"key"`

	// Value is the value for a span attribute.
	// Format: must have all '"' escaped and must not contain any '$' or end with an unescaped '\'
	//
	// +kubebuilder:validation:MinLength=1
	// +kubebuilder:validation:MaxLength=255
	// +kubebuilder:validation:Pattern=`^([^"$\\]|\\[^$])*$`
	Value string `json:"value"`
}

SpanAttribute is a key value pair to be added to a tracing span.

func (*SpanAttribute) DeepCopy added in v1.3.0

func (in *SpanAttribute) DeepCopy() *SpanAttribute

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

func (*SpanAttribute) DeepCopyInto added in v1.3.0

func (in *SpanAttribute) DeepCopyInto(out *SpanAttribute)

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

type Telemetry added in v1.3.0

type Telemetry struct {
	// Exporter specifies OpenTelemetry export parameters.
	//
	// +optional
	Exporter *TelemetryExporter `json:"exporter,omitempty"`

	// ServiceName is the "service.name" attribute of the OpenTelemetry resource.
	// Default is 'ngf:<gateway-namespace>:<gateway-name>'. If a value is provided by the user,
	// then the default becomes a prefix to that value.
	//
	// +optional
	// +kubebuilder:validation:MaxLength=127
	// +kubebuilder:validation:Pattern=`^[a-zA-Z0-9_-]+$`
	ServiceName *string `json:"serviceName,omitempty"`

	// SpanAttributes are custom key/value attributes that are added to each span.
	//
	// +optional
	// +listType=map
	// +listMapKey=key
	// +kubebuilder:validation:MaxItems=64
	SpanAttributes []SpanAttribute `json:"spanAttributes,omitempty"`
}

Telemetry specifies the OpenTelemetry configuration.

func (*Telemetry) DeepCopy added in v1.3.0

func (in *Telemetry) DeepCopy() *Telemetry

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

func (*Telemetry) DeepCopyInto added in v1.3.0

func (in *Telemetry) DeepCopyInto(out *Telemetry)

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

type TelemetryExporter added in v1.3.0

type TelemetryExporter struct {
	// Interval is the maximum interval between two exports.
	// Default: https://nginx.org/en/docs/ngx_otel_module.html#otel_exporter
	//
	// +optional
	Interval *Duration `json:"interval,omitempty"`

	// BatchSize is the maximum number of spans to be sent in one batch per worker.
	// Default: https://nginx.org/en/docs/ngx_otel_module.html#otel_exporter
	//
	// +optional
	// +kubebuilder:validation:Minimum=0
	BatchSize *int32 `json:"batchSize,omitempty"`

	// BatchCount is the number of pending batches per worker, spans exceeding the limit are dropped.
	// Default: https://nginx.org/en/docs/ngx_otel_module.html#otel_exporter
	//
	// +optional
	// +kubebuilder:validation:Minimum=0
	BatchCount *int32 `json:"batchCount,omitempty"`

	// Endpoint is the address of OTLP/gRPC endpoint that will accept telemetry data.
	// Format: alphanumeric hostname with optional http scheme and optional port.
	//
	//nolint:lll
	// +kubebuilder:validation:Pattern=`^(?:http?:\/\/)?[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?(?:\.[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?)*(?::\d{1,5})?$`
	Endpoint string `json:"endpoint"`
}

TelemetryExporter specifies OpenTelemetry export parameters.

func (*TelemetryExporter) DeepCopy added in v1.3.0

func (in *TelemetryExporter) DeepCopy() *TelemetryExporter

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

func (*TelemetryExporter) DeepCopyInto added in v1.3.0

func (in *TelemetryExporter) DeepCopyInto(out *TelemetryExporter)

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

type TraceContext added in v1.3.0

type TraceContext string

TraceContext specifies how to propagate traceparent/tracestate headers.

+kubebuilder:validation:Enum=extract;inject;propagate;ignore

const (
	// TraceContextExtract uses an existing trace context from the request, so that the identifiers
	// of a trace and the parent span are inherited from the incoming request.
	TraceContextExtract TraceContext = "extract"

	// TraceContextInject adds a new context to the request, overwriting existing headers, if any.
	TraceContextInject TraceContext = "inject"

	// TraceContextPropagate updates the existing context (combines extract and inject).
	TraceContextPropagate TraceContext = "propagate"

	// TraceContextIgnore skips context headers processing.
	TraceContextIgnore TraceContext = "ignore"
)

type TraceStrategy added in v1.3.0

type TraceStrategy string

TraceStrategy defines the tracing strategy.

+kubebuilder:validation:Enum=ratio;parent

const (
	// TraceStrategyRatio enables ratio-based tracing, defaulting to 100% sampling rate.
	TraceStrategyRatio TraceStrategy = "ratio"

	// TraceStrategyParent enables tracing and only records spans if the parent span was sampled.
	TraceStrategyParent TraceStrategy = "parent"
)

type Tracing added in v1.3.0

type Tracing struct {
	// Strategy defines if tracing is ratio-based or parent-based.
	Strategy TraceStrategy `json:"strategy"`

	// Ratio is the percentage of traffic that should be sampled. Integer from 0 to 100.
	// By default, 100% of http requests are traced. Not applicable for parent-based tracing.
	// If ratio is set to 0, tracing is disabled.
	//
	// +optional
	// +kubebuilder:validation:Minimum=0
	// +kubebuilder:validation:Maximum=100
	Ratio *int32 `json:"ratio,omitempty"`

	// Context specifies how to propagate traceparent/tracestate headers.
	// Default: https://nginx.org/en/docs/ngx_otel_module.html#otel_trace_context
	//
	// +optional
	Context *TraceContext `json:"context,omitempty"`

	// SpanName defines the name of the Otel span. By default is the name of the location for a request.
	// If specified, applies to all locations that are created for a route.
	// Format: must have all '"' escaped and must not contain any '$' or end with an unescaped '\'
	// Examples of invalid names: some-$value, quoted-"value"-name, unescaped\
	//
	// +optional
	// +kubebuilder:validation:MinLength=1
	// +kubebuilder:validation:MaxLength=255
	// +kubebuilder:validation:Pattern=`^([^"$\\]|\\[^$])*$`
	SpanName *string `json:"spanName,omitempty"`

	// SpanAttributes are custom key/value attributes that are added to each span.
	//
	// +optional
	// +listType=map
	// +listMapKey=key
	// +kubebuilder:validation:MaxItems=64
	SpanAttributes []SpanAttribute `json:"spanAttributes,omitempty"`
}

Tracing allows for enabling and configuring OpenTelemetry tracing.

+kubebuilder:validation:XValidation:message="ratio can only be specified if strategy is of type ratio",rule="!(has(self.ratio) && self.strategy != 'ratio')"

func (*Tracing) DeepCopy added in v1.3.0

func (in *Tracing) DeepCopy() *Tracing

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

func (*Tracing) DeepCopyInto added in v1.3.0

func (in *Tracing) DeepCopyInto(out *Tracing)

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

Jump to

Keyboard shortcuts

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