v1alpha1

package
v0.0.0-...-77ce34b Latest Latest
Warning

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

Go to latest
Published: Sep 6, 2023 License: Apache-2.0 Imports: 17 Imported by: 0

Documentation

Overview

Package v1alpha1 contains API Schema definitions for the appo11y v1alpha1 API group +kubebuilder:object:generate=true +groupName=appo11y.grafana.com

Index

Constants

View Source
const (
	ExporterPrometheus  = "Prometheus"
	ExporterOTELMetrics = "OpenTelemetryMetrics"
	ExporterOTELTraces  = "OpenTelemetryTraces"
)
View Source
const (
	InstrumentedLabel = "grafana.com/instrumented-by"
)

TODO: user-overridable

Variables

View Source
var (
	// GroupVersion is group version used to register these objects
	GroupVersion = schema.GroupVersion{Group: "appo11y.grafana.com", Version: "v1alpha1"}

	// SchemeBuilder is used to add go types to the GroupVersionKind scheme
	SchemeBuilder = &scheme.Builder{GroupVersion: GroupVersion}

	// AddToScheme adds the types in this group-version to the given scheme.
	AddToScheme = SchemeBuilder.AddToScheme
)

Functions

func AddInstrumenter

func AddInstrumenter(instrumenterName string, sidecar *v1.Container, dst *v1.Pod)

func InstrumentIfRequired

func InstrumentIfRequired(iq *Instrumenter, dst *v1.Pod) bool

InstrumentIfRequired instruments, if needed, the destination pod, and returns whether it has been instrumented

func NeedsInstrumentation

func NeedsInstrumentation(iq *Instrumenter, dst *v1.Pod) (*v1.Container, bool)

NeedsInstrumentation returns whether the given pod requires instrumentation, and a container with the instrumenter, in case of requiring it.

func RemoveInstrumenter

func RemoveInstrumenter(dst *v1.Pod)

func SetupWebhookWithManager

func SetupWebhookWithManager(mgr ctrl.Manager) error

SetupWebhookWithManager needs to manually register the webhook (not using the kubebuilder/operator-sdk workflow) as it needs to be registered towards a core type that is not registerd as type by the controller.

Types

type Exporter

type Exporter string

Exporter type for metrics +kubebuilder:validation:Enum:="Prometheus";"OpenTelemetryMetrics";"OpenTelemetryTraces"

type Instrumenter

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

	Spec   InstrumenterSpec   `json:"spec,omitempty"`
	Status InstrumenterStatus `json:"status,omitempty"`
}

Instrumenter is the Schema for the instrumenters API

func (*Instrumenter) DeepCopy

func (in *Instrumenter) DeepCopy() *Instrumenter

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

func (*Instrumenter) DeepCopyInto

func (in *Instrumenter) DeepCopyInto(out *Instrumenter)

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

func (*Instrumenter) DeepCopyObject

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

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

type InstrumenterList

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

InstrumenterList contains a list of Instrumenter

func (*InstrumenterList) DeepCopy

func (in *InstrumenterList) DeepCopy() *InstrumenterList

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

func (*InstrumenterList) DeepCopyInto

func (in *InstrumenterList) DeepCopyInto(out *InstrumenterList)

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

func (*InstrumenterList) DeepCopyObject

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

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

type InstrumenterSpec

type InstrumenterSpec struct {
	// Image allows overriding the autoinstrumenter container image for development purposes
	// +kubebuilder:validate:MinLength:=1
	// +kubebuilder:default:="grafana/ebpf-autoinstrument:latest"
	// TODO: make Image values optional and use relatedImages sections in bundle
	Image string `json:"image,omitempty"`

	// ImagePullPolicy allows overriding the container pull policy for development purposes
	// +kubebuilder:default:="IfNotPresent"
	ImagePullPolicy v1.PullPolicy `json:"imagePullPolicy,omitempty"`

	// Exporters define the exporter endpoints that the autoinstrumenter must support
	// +optional
	// +kubebuilder:default:={"Prometheus"}
	Export []Exporter `json:"export"`

	// Selector overrides the selection of Pods and executables to instrument
	// +kubebuilder:default:={portLabel:"grafana.com/instrument-port"}
	Selector Selector `json:"selector,omitempty"`

	// Prometheus allows configuring the autoinstrumenter as a Prometheus pull exporter.
	// +kubebuilder:default:={path:"/metrics"}
	Prometheus Prometheus `json:"prometheus,omitempty"`

	// OpenTelemetry allows configuring the autoinstrumenter as an OpenTelemetry metrics
	// and traces exporter
	// +kubebuilder:default:={interval:"5s"}
	OpenTelemetry OpenTelemetry `json:"openTelemetry,omitempty"`

	// OverrideEnv allows overriding the autoinstrumenter env vars for fine-grained
	// configuration
	// +optional
	OverrideEnv []v1.EnvVar `json:"overrideEnv,omitempty"`
}

InstrumenterSpec defines the desired state of Instrumenter

func (*InstrumenterSpec) DeepCopy

func (in *InstrumenterSpec) DeepCopy() *InstrumenterSpec

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

func (*InstrumenterSpec) DeepCopyInto

func (in *InstrumenterSpec) DeepCopyInto(out *InstrumenterSpec)

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

type InstrumenterStatus

type InstrumenterStatus struct {
}

InstrumenterStatus defines the observed state of Instrumenter

func (*InstrumenterStatus) DeepCopy

func (in *InstrumenterStatus) DeepCopy() *InstrumenterStatus

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

func (*InstrumenterStatus) DeepCopyInto

func (in *InstrumenterStatus) DeepCopyInto(out *InstrumenterStatus)

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

type OpenTelemetry

type OpenTelemetry struct {
	// Endpoint of the OpenTelemetry collector
	// +optional
	// TODO: properly validate URL (or empty value)
	Endpoint string `json:"endpoint,omitempty"`

	// InsecureSkipVerify controls whether the instrumenter OTEL client verifies the server's
	// certificate chain and host name.
	// If set to `true`, the OTEL client accepts any certificate presented by the server
	// and any host name in that certificate. In this mode, TLS is susceptible to machine-in-the-middle
	// attacks. This option should be used only for testing and development purposes.
	// +kubebuilder:default:=false
	InsecureSkipVerify bool `json:"insecureSkipVerify,omitempty"`

	// Interval is the intervening time between metrics exports
	// +kubebuilder:default:="5s"
	Interval metav1.Duration `json:"interval,omitempty"`
}

func (*OpenTelemetry) DeepCopy

func (in *OpenTelemetry) DeepCopy() *OpenTelemetry

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

func (*OpenTelemetry) DeepCopyInto

func (in *OpenTelemetry) DeepCopyInto(out *OpenTelemetry)

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

type Prometheus

type Prometheus struct {
	// +kubebuilder:default:="/metrics"
	Path string `json:"path,omitempty"`

	// +kubebuilder:default:=9102
	// +kubebuilder:validate:Minimum:=1
	// +kubebuilder:validate:Maximum:=65535
	Port int `json:"port,omitempty"`

	// +kubebuilder:default:={scrape:"prometheus.io/scrape"}
	Annotations PrometheusAnnotations `json:"annotations,omitempty"`
}

func (*Prometheus) DeepCopy

func (in *Prometheus) DeepCopy() *Prometheus

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

func (*Prometheus) DeepCopyInto

func (in *Prometheus) DeepCopyInto(out *Prometheus)

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

type PrometheusAnnotations

type PrometheusAnnotations struct {
	// +kubebuilder:default:="prometheus.io/scrape"
	Scrape string `json:"scrape,omitempty"`

	// +kubebuilder:default:="prometheus.io/scheme"
	Scheme string `json:"scheme,omitempty"`

	// +kubebuilder:default:="prometheus.io/port"
	Port string `json:"port,omitempty"`

	// +kubebuilder:default:="prometheus.io/path"
	Path string `json:"path,omitempty"`
}

func (*PrometheusAnnotations) DeepCopy

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

func (*PrometheusAnnotations) DeepCopyInto

func (in *PrometheusAnnotations) DeepCopyInto(out *PrometheusAnnotations)

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

type Selector

type Selector struct {
	// PortLabel specifies which Pod label would specify which executable needs to be instrumented,
	// according to the port it opens.
	// Any pod containing the label would be selected for instrumentation
	// +optional
	// +kubebuilder:default:="grafana.com/instrument-port"
	PortLabel string `json:"portLabel"`
}

Selector allows selecting the Pod and executable to autoinstrument

func (*Selector) DeepCopy

func (in *Selector) DeepCopy() *Selector

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

func (*Selector) DeepCopyInto

func (in *Selector) DeepCopyInto(out *Selector)

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