v1alpha2

package
v1.6.1 Latest Latest
Warning

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

Go to latest
Published: Feb 6, 2025 License: Apache-2.0 Imports: 5 Imported by: 1

Documentation

Overview

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

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

Index

Constants

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: "v1alpha2"}

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 ObservabilityPolicy

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

func (in *ObservabilityPolicy) DeepCopy() *ObservabilityPolicy

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

func (*ObservabilityPolicy) DeepCopyInto

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

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

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

func (*ObservabilityPolicy) GetPolicyStatus

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

func (*ObservabilityPolicy) GetTargetRefs

func (*ObservabilityPolicy) SetPolicyStatus

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

type ObservabilityPolicyList

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

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

func (*ObservabilityPolicyList) DeepCopyInto

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

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

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

type ObservabilityPolicySpec

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.
	//
	// TargetRefs must be _distinct_. This means that the multi-part key defined by `kind` and `name` must
	// be unique across all targetRef entries in the ObservabilityPolicy.
	//
	// +kubebuilder:validation:MinItems=1
	// +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')"
	// +kubebuilder:validation:XValidation:message="TargetRef Kind and Name combination must be unique",rule="self.all(p1, self.exists_one(p2, (p1.name == p2.name) && (p1.kind == p2.kind)))"
	//nolint:lll
	TargetRefs []gatewayv1alpha2.LocalPolicyTargetReference `json:"targetRefs"`
}

ObservabilityPolicySpec defines the desired state of the ObservabilityPolicy.

func (*ObservabilityPolicySpec) DeepCopy

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

func (*ObservabilityPolicySpec) DeepCopyInto

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

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

type TraceContext

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

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

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 []ngfAPIv1alpha1.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

func (in *Tracing) DeepCopy() *Tracing

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

func (*Tracing) DeepCopyInto

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