v1alpha1

package
v0.5.0 Latest Latest
Warning

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

Go to latest
Published: Oct 27, 2023 License: AGPL-3.0 Imports: 23 Imported by: 0

Documentation

Overview

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

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

Index

Constants

This section is empty.

Variables

View Source
var (
	// GroupVersion is group version used to register these objects.
	GroupVersion = schema.GroupVersion{Group: "tempo.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
)

AllStatusConditions lists all possible status conditions.

Functions

func ValidateStorageCAConfigMap added in v0.5.0

func ValidateStorageCAConfigMap(caConfigMap corev1.ConfigMap) field.ErrorList

ValidateStorageCAConfigMap validates the CA config map for accessing object storage.

func ValidateStorageSecret

func ValidateStorageSecret(tempo TempoStack, storageSecret corev1.Secret) field.ErrorList

ValidateStorageSecret validates the object storage secret required for tempo.

func ValidateTenantConfigs

func ValidateTenantConfigs(tempo TempoStack) error

ValidateTenantConfigs validates the tenants mode specification.

Types

type AuthenticationSpec

type AuthenticationSpec struct {
	// TenantName defines the name of the tenant.
	// The value of this field should be sent in X-Scope-OrgID header to identify the tenant.
	//
	// +required
	// +kubebuilder:validation:Required
	// +operator-sdk:csv:customresourcedefinitions:type=spec,displayName="Tenant Name"
	TenantName string `json:"tenantName"`
	// TenantID defines the id of the tenant.
	//
	// +required
	// +kubebuilder:validation:Required
	// +operator-sdk:csv:customresourcedefinitions:type=spec,displayName="Tenant ID"
	TenantID string `json:"tenantId"`
	// OIDC defines the spec for the OIDC tenant's authentication.
	//
	// +optional
	// +kubebuilder:validation:Optional
	// +operator-sdk:csv:customresourcedefinitions:type=spec,displayName="OIDC Configuration"
	OIDC *OIDCSpec `json:"oidc,omitempty"`
}

AuthenticationSpec defines the oidc configuration per tenant for tempo Gateway component.

func (*AuthenticationSpec) DeepCopy

func (in *AuthenticationSpec) DeepCopy() *AuthenticationSpec

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

func (*AuthenticationSpec) DeepCopyInto

func (in *AuthenticationSpec) DeepCopyInto(out *AuthenticationSpec)

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

type AuthorizationSpec

type AuthorizationSpec struct {
	// Roles defines a set of permissions to interact with a tenant.
	//
	// +optional
	// +kubebuilder:validation:Optional
	// +operator-sdk:csv:customresourcedefinitions:type=spec,displayName="Static Roles"
	Roles []RoleSpec `json:"roles"`
	// RoleBindings defines configuration to bind a set of roles to a set of subjects.
	//
	// +optional
	// +kubebuilder:validation:Optional
	// +operator-sdk:csv:customresourcedefinitions:type=spec,displayName="Static Role Bindings"
	RoleBindings []RoleBindingsSpec `json:"roleBindings"`
}

AuthorizationSpec defines the opa, role bindings and roles configuration per tenant for tempo Gateway component.

func (*AuthorizationSpec) DeepCopy

func (in *AuthorizationSpec) DeepCopy() *AuthorizationSpec

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

func (*AuthorizationSpec) DeepCopyInto

func (in *AuthorizationSpec) DeepCopyInto(out *AuthorizationSpec)

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

type ComponentStatus

type ComponentStatus struct {
	// Compactor is a map to the pod status of the compactor pod.
	//
	// +optional
	// +kubebuilder:validation:Optional
	// +operator-sdk:csv:customresourcedefinitions:type=status,xDescriptors="urn:alm:descriptor:com.tectonic.ui:podStatuses",displayName="Compactor",order=5
	Compactor PodStatusMap `json:"compactor"`

	// Distributor is a map to the per pod status of the distributor deployment
	//
	// +optional
	// +kubebuilder:validation:Optional
	// +operator-sdk:csv:customresourcedefinitions:type=status,xDescriptors="urn:alm:descriptor:com.tectonic.ui:podStatuses",displayName="Distributor",order=1
	Distributor PodStatusMap `json:"distributor"`

	// Ingester is a map to the per pod status of the ingester statefulset
	//
	// +optional
	// +kubebuilder:validation:Optional
	// +operator-sdk:csv:customresourcedefinitions:type=status,xDescriptors="urn:alm:descriptor:com.tectonic.ui:podStatuses",displayName="Ingester",order=2
	Ingester PodStatusMap `json:"ingester"`

	// Querier is a map to the per pod status of the querier deployment
	//
	// +optional
	// +kubebuilder:validation:Optional
	// +operator-sdk:csv:customresourcedefinitions:type=status,xDescriptors="urn:alm:descriptor:com.tectonic.ui:podStatuses",displayName="Querier",order=3
	Querier PodStatusMap `json:"querier"`

	// QueryFrontend is a map to the per pod status of the query frontend deployment
	//
	// +optional
	// +kubebuilder:validation:Optional
	// +operator-sdk:csv:customresourcedefinitions:type=status,xDescriptors="urn:alm:descriptor:com.tectonic.ui:podStatuses",displayName="Query Frontend",order=4
	QueryFrontend PodStatusMap `json:"queryFrontend"`

	// Gateway is a map to the per pod status of the query frontend deployment
	//
	// +optional
	// +kubebuilder:validation:Optional
	// +operator-sdk:csv:customresourcedefinitions:type=status,xDescriptors="urn:alm:descriptor:com.tectonic.ui:podStatuses",displayName="Query Frontend",order=4
	Gateway PodStatusMap `json:"gateway"`
}

ComponentStatus defines the status of each component.

func (*ComponentStatus) DeepCopy

func (in *ComponentStatus) DeepCopy() *ComponentStatus

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

func (*ComponentStatus) DeepCopyInto

func (in *ComponentStatus) DeepCopyInto(out *ComponentStatus)

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

type ConditionReason

type ConditionReason string

ConditionReason defines possible reasons for each condition.

const (
	// ReasonReady defines a healthy tempo instance.
	ReasonReady ConditionReason = "Ready"
	// ReasonInvalidStorageConfig defines that the object storage configuration is invalid (missing or incomplete storage secret).
	ReasonInvalidStorageConfig ConditionReason = "InvalidStorageConfig"
	// ReasonFailedComponents when all/some Tempo components fail to roll out.
	ReasonFailedComponents ConditionReason = "FailedComponents"
	// ReasonPendingComponents when all/some Tempo components pending dependencies.
	ReasonPendingComponents ConditionReason = "PendingComponents"
	// ReasonCouldNotGetOpenShiftBaseDomain when operator cannot get OpenShift base domain, that is used for OAuth redirect URL.
	ReasonCouldNotGetOpenShiftBaseDomain ConditionReason = "CouldNotGetOpenShiftBaseDomain"
	// ReasonCouldNotGetOpenShiftTLSPolicy when operator cannot get OpenShift TLS security cluster policy.
	ReasonCouldNotGetOpenShiftTLSPolicy ConditionReason = "CouldNotGetOpenShiftTLSPolicy"
	// ReasonMissingGatewayTenantSecret when operator cannot get Secret containing sensitive Gateway information.
	ReasonMissingGatewayTenantSecret ConditionReason = "ReasonMissingGatewayTenantSecret"
	// ReasonInvalidTenantsConfiguration when the tenant configuration provided is invalid.
	ReasonInvalidTenantsConfiguration ConditionReason = "InvalidTenantsConfiguration"
	// ReasonFailedReconciliation when the operator failed to reconcile.
	ReasonFailedReconciliation ConditionReason = "FailedReconciliation"
)

type ConditionStatus

type ConditionStatus string

ConditionStatus defines the status of a condition (e.g. ready, failed, pending or configuration error).

const (
	// ConditionReady defines that all components are ready.
	ConditionReady ConditionStatus = "Ready"
	// ConditionFailed defines that one or more components are in a failed state.
	ConditionFailed ConditionStatus = "Failed"
	// ConditionPending defines that one or more components are in a pending state.
	ConditionPending ConditionStatus = "Pending"
	// ConditionConfigurationError defines that there is a configuration error.
	ConditionConfigurationError ConditionStatus = "ConfigurationError"
)

type Defaulter

type Defaulter struct {
	// contains filtered or unexported fields
}

Defaulter implements the CustomDefaulter interface.

func NewDefaulter

func NewDefaulter(ctrlConfig v1alpha1.ProjectConfig) *Defaulter

NewDefaulter creates a new instance of Defaulter, which implements functions for setting defaults on the Tempo CR.

func (*Defaulter) DeepCopy

func (in *Defaulter) DeepCopy() *Defaulter

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

func (*Defaulter) DeepCopyInto

func (in *Defaulter) DeepCopyInto(out *Defaulter)

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

func (*Defaulter) Default

func (d *Defaulter) Default(ctx context.Context, obj runtime.Object) error

Default applies default values to a Kubernetes object.

type IngestionLimitSpec

type IngestionLimitSpec struct {
	// IngestionBurstSizeBytes defines the burst size (bytes) used in ingestion.
	//
	// +optional
	// +kubebuilder:validation:Optional
	// +operator-sdk:csv:customresourcedefinitions:type=spec,xDescriptors="urn:alm:descriptor:com.tectonic.ui:number",displayName="Ingestion Burst Size in Bytes"
	IngestionBurstSizeBytes *int `json:"ingestionBurstSizeBytes,omitempty"`

	// IngestionRateLimitBytes defines the Per-user ingestion rate limit (bytes) used in ingestion.
	//
	// +optional
	// +kubebuilder:validation:Optional
	// +operator-sdk:csv:customresourcedefinitions:type=spec,xDescriptors="urn:alm:descriptor:com.tectonic.ui:number",displayName="Ingestion Rate Limit in Bytes"
	IngestionRateLimitBytes *int `json:"ingestionRateLimitBytes,omitempty"`

	// MaxBytesPerTrace defines the maximum number of bytes of an acceptable trace.
	//
	// +optional
	// +kubebuilder:validation:Optional
	// +operator-sdk:csv:customresourcedefinitions:type=spec,xDescriptors="urn:alm:descriptor:com.tectonic.ui:number",displayName="Max Bytes per Trace"
	MaxBytesPerTrace *int `json:"maxBytesPerTrace,omitempty"`

	// MaxTracesPerUser defines the maximum number of traces a user can send.
	//
	// +optional
	// +kubebuilder:validation:Optional
	// +operator-sdk:csv:customresourcedefinitions:type=spec,xDescriptors="urn:alm:descriptor:com.tectonic.ui:number",displayName="Max Traces per User"
	MaxTracesPerUser *int `json:"maxTracesPerUser,omitempty"`
}

IngestionLimitSpec defines the limits applied at the ingestion path.

func (*IngestionLimitSpec) DeepCopy

func (in *IngestionLimitSpec) DeepCopy() *IngestionLimitSpec

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

func (*IngestionLimitSpec) DeepCopyInto

func (in *IngestionLimitSpec) DeepCopyInto(out *IngestionLimitSpec)

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

type IngressSpec

type IngressSpec struct {
	// Type defines the type of Ingress for the Jaeger Query UI.
	// Currently ingress, route and none are supported.
	//
	// +optional
	// +kubebuilder:validation:Optional
	// +operator-sdk:csv:customresourcedefinitions:type=spec,displayName="Type"
	Type IngressType `json:"type,omitempty"`

	// Annotations defines the annotations of the Ingress object.
	//
	// +optional
	// +kubebuilder:validation:Optional
	// +operator-sdk:csv:customresourcedefinitions:type=spec,displayName="Annotations"
	Annotations map[string]string `json:"annotations,omitempty"`

	// Host defines the hostname of the Ingress object.
	//
	// +optional
	// +kubebuilder:validation:Optional
	// +operator-sdk:csv:customresourcedefinitions:type=spec,displayName="Host"
	Host string `json:"host,omitempty"`

	// IngressClassName is the name of an IngressClass cluster resource. Ingress
	// controller implementations use this field to know whether they should be
	// serving this Ingress resource.
	// +optional
	IngressClassName *string `json:"ingressClassName,omitempty"`

	// Route defines OpenShift Route specific options.
	//
	// +optional
	// +kubebuilder:validation:Optional
	// +operator-sdk:csv:customresourcedefinitions:type=spec,displayName="Route Configuration"
	Route RouteSpec `json:"route,omitempty"`
}

IngressSpec defines Jaeger Query Ingress options.

func (*IngressSpec) DeepCopy

func (in *IngressSpec) DeepCopy() *IngressSpec

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

func (*IngressSpec) DeepCopyInto

func (in *IngressSpec) DeepCopyInto(out *IngressSpec)

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

type IngressType

type IngressType string

IngressType represents how a service should be exposed (ingress vs route). +kubebuilder:validation:Enum=ingress;route

const (
	// IngressTypeNone specifies that no ingress or route entry should be created.
	IngressTypeNone IngressType = ""
	// IngressTypeIngress specifies that an ingress entry should be created.
	IngressTypeIngress IngressType = "ingress"
	// IngressTypeRoute specifies that a route entry should be created.
	IngressTypeRoute IngressType = "route"
)

type JaegerQueryMonitor added in v0.5.0

type JaegerQueryMonitor struct {
	// Enabled enables monitoring tab in Jaeger console.
	// PrometheusEndpoint needs to be set to enable the feature.
	// +optional
	// +kubebuilder:validation:Optional
	// +operator-sdk:csv:customresourcedefinitions:type=spec,displayName="Enabled"
	Enabled bool `json:"enabled"`

	// PrometheusEndpoint configures endpoint to the Prometheus that contains span RED metrics.
	// For instance on OpenShift this is set to https://thanos-querier.openshift-monitoring.svc.cluster.local:9091
	// +optional
	// +kubebuilder:validation:Optional
	// +operator-sdk:csv:customresourcedefinitions:type=spec,displayName="Prometheus endpoint"
	PrometheusEndpoint string `json:"prometheusEndpoint"`
}

JaegerQueryMonitor defines configuration for the service monitoring tab in the Jaeger console. The monitoring tab uses Prometheus to query span RED metrics. This feature requires running OpenTelemetry collector with spanmetricsconnector - https://github.com/open-telemetry/opentelemetry-collector-contrib/tree/main/connector/spanmetricsconnector which derives span RED metrics from spans and exports the metrics to Prometheus.

func (*JaegerQueryMonitor) DeepCopy added in v0.5.0

func (in *JaegerQueryMonitor) DeepCopy() *JaegerQueryMonitor

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

func (*JaegerQueryMonitor) DeepCopyInto added in v0.5.0

func (in *JaegerQueryMonitor) DeepCopyInto(out *JaegerQueryMonitor)

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

type JaegerQuerySpec

type JaegerQuerySpec struct {
	// Enabled is used to define if Jaeger Query component should be created.
	//
	// +optional
	// +kubebuilder:validation:Optional
	// +operator-sdk:csv:customresourcedefinitions:type=spec,displayName="Enable Jaeger Query UI"
	Enabled bool `json:"enabled"`

	// Ingress defines Jaeger Query Ingress options.
	//
	// +optional
	// +kubebuilder:validation:Optional
	// +operator-sdk:csv:customresourcedefinitions:type=spec,displayName="Jaeger Query UI Ingress Settings"
	Ingress IngressSpec `json:"ingress,omitempty"`

	// MonitorTab defines monitor tab configuration.
	// +optional
	// +kubebuilder:validation:Optional
	// +operator-sdk:csv:customresourcedefinitions:type=spec,displayName="Jaeger Query UI Monitor Tab Settings"
	MonitorTab JaegerQueryMonitor `json:"monitorTab"`
}

JaegerQuerySpec defines Jaeger Query options.

func (*JaegerQuerySpec) DeepCopy

func (in *JaegerQuerySpec) DeepCopy() *JaegerQuerySpec

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

func (*JaegerQuerySpec) DeepCopyInto

func (in *JaegerQuerySpec) DeepCopyInto(out *JaegerQuerySpec)

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

type LimitSpec

type LimitSpec struct {
	// PerTenant is used to define rate limits per tenant.
	//
	// +optional
	// +kubebuilder:validation:Optional
	// +operator-sdk:csv:customresourcedefinitions:type=spec,displayName="Tenant Limits"
	PerTenant map[string]RateLimitSpec `json:"perTenant,omitempty"`

	// Global is used to define global rate limits.
	//
	// +optional
	// +kubebuilder:validation:Optional
	// +operator-sdk:csv:customresourcedefinitions:type=spec,displayName="Global Limit"
	Global RateLimitSpec `json:"global"`
}

LimitSpec defines Global and PerTenant rate limits.

func (*LimitSpec) DeepCopy

func (in *LimitSpec) DeepCopy() *LimitSpec

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

func (*LimitSpec) DeepCopyInto

func (in *LimitSpec) DeepCopyInto(out *LimitSpec)

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

type ManagementStateType

type ManagementStateType string

ManagementStateType defines the type for CR management states.

+kubebuilder:validation:Enum=Managed;Unmanaged

const (
	// ManagementStateManaged when the TempoStack custom resource should be
	// reconciled by the operator.
	ManagementStateManaged ManagementStateType = "Managed"

	// ManagementStateUnmanaged when the TempoStack custom resource should not be
	// reconciled by the operator.
	ManagementStateUnmanaged ManagementStateType = "Unmanaged"
)

type MetricsConfigSpec

type MetricsConfigSpec struct {
	// CreateServiceMonitors specifies if ServiceMonitors should be created for Tempo components.
	//
	// +optional
	// +kubebuilder:validation:Optional
	// +operator-sdk:csv:customresourcedefinitions:type=spec,displayName="Create ServiceMonitors for Tempo components"
	CreateServiceMonitors bool `json:"createServiceMonitors,omitempty"`

	// CreatePrometheusRules specifies if Prometheus rules for alerts should be created for Tempo components.
	//
	// +optional
	// +kubebuilder:validation:Optional
	// +operator-sdk:csv:customresourcedefinitions:type=spec,displayName="Create PrometheusRules for Tempo components"
	CreatePrometheusRules bool `json:"createPrometheusRules,omitempty"`
}

MetricsConfigSpec defines a metrics config.

func (*MetricsConfigSpec) DeepCopy

func (in *MetricsConfigSpec) DeepCopy() *MetricsConfigSpec

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

func (*MetricsConfigSpec) DeepCopyInto

func (in *MetricsConfigSpec) DeepCopyInto(out *MetricsConfigSpec)

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

type ModeType

type ModeType string

ModeType is the authentication/authorization mode in which Tempo Gateway will be configured.

+kubebuilder:validation:Enum=static;openshift

const (
	// ModeStatic mode asserts the Authorization Spec's Roles and RoleBindings
	// using an in-process OpenPolicyAgent Rego authorizer.
	ModeStatic ModeType = "static"
	// ModeOpenShift mode uses TokenReview API for authentication and subject access review for authorization.
	ModeOpenShift ModeType = "openshift"
)

type OIDCSpec

type OIDCSpec struct {
	// Secret defines the spec for the clientID, clientSecret and issuerCAPath for tenant's authentication.
	//
	// +optional
	// +kubebuilder:validation:Optional
	// +operator-sdk:csv:customresourcedefinitions:type=spec,displayName="Tenant Secret"
	Secret *TenantSecretSpec `json:"secret"`
	// IssuerURL defines the URL for issuer.
	//
	// +optional
	// +kubebuilder:validation:Optional
	// +operator-sdk:csv:customresourcedefinitions:type=spec,displayName="Issuer URL"
	IssuerURL string `json:"issuerURL"`
	// RedirectURL defines the URL for redirect.
	//
	// +optional
	// +kubebuilder:validation:Optional
	// +operator-sdk:csv:customresourcedefinitions:type=spec,displayName="Redirect URL"
	RedirectURL string `json:"redirectURL,omitempty"`
	// Group claim field from ID Token
	//
	// +optional
	// +kubebuilder:validation:Optional
	GroupClaim string `json:"groupClaim,omitempty"`
	// User claim field from ID Token
	//
	// +optional
	// +kubebuilder:validation:Optional
	UsernameClaim string `json:"usernameClaim,omitempty"`
}

OIDCSpec defines the oidc configuration spec for Tempo Gateway component.

func (*OIDCSpec) DeepCopy

func (in *OIDCSpec) DeepCopy() *OIDCSpec

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

func (*OIDCSpec) DeepCopyInto

func (in *OIDCSpec) DeepCopyInto(out *OIDCSpec)

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

type ObjectStorageSecretSpec

type ObjectStorageSecretSpec struct {
	// Type of object storage that should be used
	//
	// +required
	// +kubebuilder:validation:Required
	// +operator-sdk:csv:customresourcedefinitions:type=spec,xDescriptors={"urn:alm:descriptor:com.tectonic.ui:select:azure","urn:alm:descriptor:com.tectonic.ui:select:gcs","urn:alm:descriptor:com.tectonic.ui:select:s3"},displayName="Object Storage Secret Type"
	Type ObjectStorageSecretType `json:"type"`

	// Name of a secret in the namespace configured for object storage secrets.
	//
	// +required
	// +kubebuilder:validation:Required
	// +kubebuilder:validation:MinLength=1
	// +operator-sdk:csv:customresourcedefinitions:type=spec,xDescriptors="urn:alm:descriptor:io.kubernetes:Secret",displayName="Object Storage Secret Name"
	Name string `json:"name"`
}

ObjectStorageSecretSpec is a secret reference containing name only, no namespace.

func (*ObjectStorageSecretSpec) DeepCopy

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

func (*ObjectStorageSecretSpec) DeepCopyInto

func (in *ObjectStorageSecretSpec) DeepCopyInto(out *ObjectStorageSecretSpec)

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

type ObjectStorageSecretType

type ObjectStorageSecretType string

ObjectStorageSecretType defines the type of storage which can be used with the Tempo cluster.

+kubebuilder:validation:Enum=azure;gcs;s3

const (
	// ObjectStorageSecretAzure when using Azure Storage for Tempo storage.
	ObjectStorageSecretAzure ObjectStorageSecretType = "azure"

	// ObjectStorageSecretGCS when using Google Cloud Storage for Tempo storage.
	ObjectStorageSecretGCS ObjectStorageSecretType = "gcs"

	// ObjectStorageSecretS3 when using S3 for Tempo storage.
	ObjectStorageSecretS3 ObjectStorageSecretType = "s3"
)

type ObjectStorageSpec

type ObjectStorageSpec struct {
	// TLS configuration for reaching the object storage endpoint.
	//
	// +optional
	// +kubebuilder:validation:Optional
	// +operator-sdk:csv:customresourcedefinitions:type=spec,displayName="TLS Config"
	TLS ObjectStorageTLSSpec `json:"tls,omitempty"`

	// Secret for object storage authentication.
	// Name of a secret in the same namespace as the TempoStack custom resource.
	//
	// +kubebuilder:validation:Required
	// +operator-sdk:csv:customresourcedefinitions:type=spec,displayName="Object Storage Secret"
	Secret ObjectStorageSecretSpec `json:"secret"`
}

ObjectStorageSpec defines the requirements to access the object storage bucket to persist traces by the ingester component.

func (*ObjectStorageSpec) DeepCopy

func (in *ObjectStorageSpec) DeepCopy() *ObjectStorageSpec

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

func (*ObjectStorageSpec) DeepCopyInto

func (in *ObjectStorageSpec) DeepCopyInto(out *ObjectStorageSpec)

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

type ObjectStorageTLSSpec

type ObjectStorageTLSSpec struct {
	// CA is the name of a ConfigMap containing a `ca.crt` key with a CA certificate.
	// It needs to be in the same namespace as the TempoStack custom resource.
	//
	// +optional
	// +kubebuilder:validation:optional
	// +operator-sdk:csv:customresourcedefinitions:type=spec,xDescriptors="urn:alm:descriptor:io.kubernetes:ConfigMap",displayName="CA ConfigMap Name"
	CA string `json:"caName,omitempty"`
}

ObjectStorageTLSSpec is the TLS configuration for reaching the object storage endpoint.

func (*ObjectStorageTLSSpec) DeepCopy

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

func (*ObjectStorageTLSSpec) DeepCopyInto

func (in *ObjectStorageTLSSpec) DeepCopyInto(out *ObjectStorageTLSSpec)

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

type ObservabilitySpec

type ObservabilitySpec struct {
	// Metrics defines the metrics configuration for operands.
	//
	// +optional
	// +kubebuilder:validation:Optional
	// +operator-sdk:csv:customresourcedefinitions:type=spec,displayName="Metrics Config"
	Metrics MetricsConfigSpec `json:"metrics,omitempty"`

	// Tracing defines a config for operands.
	//
	// +optional
	// +kubebuilder:validation:Optional
	// +operator-sdk:csv:customresourcedefinitions:type=spec,displayName="Tracing Config"
	Tracing TracingConfigSpec `json:"tracing,omitempty"`
}

ObservabilitySpec defines how telemetry data gets handled.

func (*ObservabilitySpec) DeepCopy

func (in *ObservabilitySpec) DeepCopy() *ObservabilitySpec

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

func (*ObservabilitySpec) DeepCopyInto

func (in *ObservabilitySpec) DeepCopyInto(out *ObservabilitySpec)

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

type PermissionType

type PermissionType string

PermissionType is a Tempo Gateway RBAC permission.

+kubebuilder:validation:Enum=read;write

const (
	// Write gives access to write data to a tenant.
	Write PermissionType = "write"
	// Read gives access to read data from a tenant.
	Read PermissionType = "read"
)

type PodStatusMap

type PodStatusMap map[corev1.PodPhase][]string

PodStatusMap defines the type for mapping pod status to pod name.

func (PodStatusMap) DeepCopy

func (in PodStatusMap) DeepCopy() PodStatusMap

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

func (PodStatusMap) DeepCopyInto

func (in PodStatusMap) DeepCopyInto(out *PodStatusMap)

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

type QueryLimit

type QueryLimit struct {
	// MaxBytesPerTagValues defines the maximum size in bytes of a tag-values query.
	//
	// +optional
	// +kubebuilder:validation:Optional
	// +operator-sdk:csv:customresourcedefinitions:type=spec,xDescriptors="urn:alm:descriptor:com.tectonic.ui:number",displayName="Max Tags per User"
	MaxBytesPerTagValues *int `json:"maxBytesPerTagValues,omitempty"`

	// DEPRECATED. MaxSearchBytesPerTrace defines the maximum size of search data for a single
	// trace in bytes.
	// default: `0` to disable.
	//
	// +optional
	// +kubebuilder:validation:Optional
	// +operator-sdk:csv:customresourcedefinitions:type=spec,xDescriptors="urn:alm:descriptor:com.tectonic.ui:number",displayName="Max Traces per User"
	MaxSearchBytesPerTrace *int `json:"maxSearchBytesPerTrace,omitempty"`

	// MaxSearchDuration defines the maximum allowed time range for a search.
	// If this value is not set, then spec.search.maxDuration is used.
	//
	// +optional
	// +kubebuilder:validation:Optional
	// +operator-sdk:csv:customresourcedefinitions:type=spec,displayName="Max Search Duration per User"
	MaxSearchDuration metav1.Duration `json:"maxSearchDuration"`
}

QueryLimit defines query limits.

func (*QueryLimit) DeepCopy

func (in *QueryLimit) DeepCopy() *QueryLimit

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

func (*QueryLimit) DeepCopyInto

func (in *QueryLimit) DeepCopyInto(out *QueryLimit)

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

type RateLimitSpec

type RateLimitSpec struct {
	// Ingestion is used to define ingestion rate limits.
	//
	// +optional
	// +kubebuilder:validation:Optional
	// +operator-sdk:csv:customresourcedefinitions:type=spec,displayName="Ingestion Limit"
	Ingestion IngestionLimitSpec `json:"ingestion"`

	// Query is used to define query rate limits.
	//
	// +optional
	// +kubebuilder:validation:Optional
	// +operator-sdk:csv:customresourcedefinitions:type=spec,displayName="Query Limit"
	Query QueryLimit `json:"query"`
}

RateLimitSpec defines rate limits for Ingestion and Query components.

func (*RateLimitSpec) DeepCopy

func (in *RateLimitSpec) DeepCopy() *RateLimitSpec

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

func (*RateLimitSpec) DeepCopyInto

func (in *RateLimitSpec) DeepCopyInto(out *RateLimitSpec)

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

type Resources

type Resources struct {
	// The total amount of resources for Tempo instance.
	// The operator autonomously splits resources between deployed Tempo components.
	// Only limits are supported, the operator calculates requests automatically.
	// See http://github.com/grafana/tempo/issues/1540.
	//
	// +optional
	// +operator-sdk:csv:customresourcedefinitions:type=spec,displayName="Resource Requirements"
	Total *corev1.ResourceRequirements `json:"total,omitempty"`
}

Resources defines resources configuration.

func (*Resources) DeepCopy

func (in *Resources) DeepCopy() *Resources

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

func (*Resources) DeepCopyInto

func (in *Resources) DeepCopyInto(out *Resources)

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

type RetentionConfig

type RetentionConfig struct {
	// Traces defines retention period. Supported parameter suffixes are "s", "m" and "h".
	// example: 336h
	// default: value is 48h.
	//
	// +optional
	// +kubebuilder:validation:Optional
	// +operator-sdk:csv:customresourcedefinitions:type=spec,xDescriptors="urn:alm:descriptor:com.tectonic.ui:text",displayName="Trace Retention Period"
	Traces metav1.Duration `json:"traces"`
}

RetentionConfig defines how long data should be provided.

func (*RetentionConfig) DeepCopy

func (in *RetentionConfig) DeepCopy() *RetentionConfig

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

func (*RetentionConfig) DeepCopyInto

func (in *RetentionConfig) DeepCopyInto(out *RetentionConfig)

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

type RetentionSpec

type RetentionSpec struct {
	// PerTenant is used to configure retention per tenant.
	//
	// +optional
	// +kubebuilder:validation:Optional
	// +operator-sdk:csv:customresourcedefinitions:type=spec,displayName="PerTenant Retention"
	PerTenant map[string]RetentionConfig `json:"perTenant,omitempty"`
	// Global is used to configure global retention.
	//
	// +optional
	// +kubebuilder:validation:Optional
	// +operator-sdk:csv:customresourcedefinitions:type=spec,displayName="Global Retention"
	Global RetentionConfig `json:"global"`
}

RetentionSpec defines global and per tenant retention configurations.

func (*RetentionSpec) DeepCopy

func (in *RetentionSpec) DeepCopy() *RetentionSpec

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

func (*RetentionSpec) DeepCopyInto

func (in *RetentionSpec) DeepCopyInto(out *RetentionSpec)

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

type RoleBindingsSpec

type RoleBindingsSpec struct {
	Name     string    `json:"name"`
	Subjects []Subject `json:"subjects"`
	Roles    []string  `json:"roles"`
}

RoleBindingsSpec binds a set of roles to a set of subjects.

func (*RoleBindingsSpec) DeepCopy

func (in *RoleBindingsSpec) DeepCopy() *RoleBindingsSpec

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

func (*RoleBindingsSpec) DeepCopyInto

func (in *RoleBindingsSpec) DeepCopyInto(out *RoleBindingsSpec)

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

type RoleSpec

type RoleSpec struct {
	Name        string           `json:"name"`
	Resources   []string         `json:"resources"`
	Tenants     []string         `json:"tenants"`
	Permissions []PermissionType `json:"permissions"`
}

RoleSpec describes a set of permissions to interact with a tenant.

func (*RoleSpec) DeepCopy

func (in *RoleSpec) DeepCopy() *RoleSpec

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

func (*RoleSpec) DeepCopyInto

func (in *RoleSpec) DeepCopyInto(out *RoleSpec)

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

type RouteSpec

type RouteSpec struct {
	// Termination specifies the termination type. By default "edge" is used.
	//
	// +optional
	// +kubebuilder:validation:Optional
	// +operator-sdk:csv:customresourcedefinitions:type=spec,displayName="TLS Termination Policy"
	Termination TLSRouteTerminationType `json:"termination,omitempty"`
}

RouteSpec defines OpenShift Route specific options.

func (*RouteSpec) DeepCopy

func (in *RouteSpec) DeepCopy() *RouteSpec

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

func (*RouteSpec) DeepCopyInto

func (in *RouteSpec) DeepCopyInto(out *RouteSpec)

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

type SearchSpec

type SearchSpec struct {
	// Limit used for search requests if none is set by the caller (default: 20)
	//
	// +optional
	// +kubebuilder:validation:Optional
	// +operator-sdk:csv:customresourcedefinitions:type=spec,displayName="Limit used for search requests if none is set by the caller, this limit the number of traces returned by the query"
	DefaultResultLimit *int `json:"defaultResultLimit,omitempty"`
	// The maximum allowed time range for a search, default: 0s which means unlimited.
	//
	// +optional
	// +kubebuilder:validation:Optional
	// +operator-sdk:csv:customresourcedefinitions:type=spec,displayName="Max search time range allowed"
	MaxDuration metav1.Duration `json:"maxDuration,omitempty"`
	// The maximum allowed value of the limit parameter on search requests. If the search request limit parameter
	// exceeds the value configured here it will be set to the value configured here.
	// The default value of 0 disables this limit.
	//
	// +optional
	// +kubebuilder:validation:Optional
	// +operator-sdk:csv:customresourcedefinitions:type=spec,displayName="The maximum allowed value of the limit parameter on search requests, this determine the max number of traces allowed to be returned"
	MaxResultLimit int `json:"maxResultLimit,omitempty"`
}

SearchSpec specified the global search parameters.

func (*SearchSpec) DeepCopy

func (in *SearchSpec) DeepCopy() *SearchSpec

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

func (*SearchSpec) DeepCopyInto

func (in *SearchSpec) DeepCopyInto(out *SearchSpec)

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

type Subject

type Subject struct {
	Name string      `json:"name"`
	Kind SubjectKind `json:"kind"`
}

Subject represents a subject that has been bound to a role.

func (*Subject) DeepCopy

func (in *Subject) DeepCopy() *Subject

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

func (*Subject) DeepCopyInto

func (in *Subject) DeepCopyInto(out *Subject)

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

type SubjectKind

type SubjectKind string

SubjectKind is a kind of Tempo Gateway RBAC subject.

+kubebuilder:validation:Enum=user;group

const (
	// User represents a subject that is a user.
	User SubjectKind = "user"
	// Group represents a subject that is a group.
	Group SubjectKind = "group"
)

type TLSRouteTerminationType

type TLSRouteTerminationType string

TLSRouteTerminationType is used to indicate which TLS settings should be used. +kubebuilder:validation:Enum=insecure;edge;passthrough;reencrypt

const (
	// TLSRouteTerminationTypeInsecure indicates that insecure connections are allowed.
	TLSRouteTerminationTypeInsecure TLSRouteTerminationType = "insecure"
	// TLSRouteTerminationTypeEdge indicates that encryption should be terminated
	// at the edge router.
	TLSRouteTerminationTypeEdge TLSRouteTerminationType = "edge"
	// TLSRouteTerminationTypePassthrough indicates that the destination service is
	// responsible for decrypting traffic.
	TLSRouteTerminationTypePassthrough TLSRouteTerminationType = "passthrough"
	// TLSRouteTerminationTypeReencrypt indicates that traffic will be decrypted on the edge
	// and re-encrypt using a new certificate.
	TLSRouteTerminationTypeReencrypt TLSRouteTerminationType = "reencrypt"
)

type TempoComponentSpec

type TempoComponentSpec struct {
	// Replicas represents the number of replicas to create for this component.
	// +optional
	// +operator-sdk:csv:customresourcedefinitions:type=spec,displayName="Component Replicas"
	Replicas *int32 `json:"replicas,omitempty"`

	// NodeSelector is the simplest recommended form of node selection constraint.
	//
	// +optional
	// +operator-sdk:csv:customresourcedefinitions:type=spec,displayName="Node Selector"
	NodeSelector map[string]string `json:"nodeSelector,omitempty"`

	// Tolerations defines component specific pod tolerations.
	//
	// +optional
	// +listType=atomic
	// +operator-sdk:csv:customresourcedefinitions:type=spec,displayName="Tolerations"
	Tolerations []corev1.Toleration `json:"tolerations,omitempty"`
}

TempoComponentSpec defines specific schedule settings for tempo components.

func (*TempoComponentSpec) DeepCopy

func (in *TempoComponentSpec) DeepCopy() *TempoComponentSpec

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

func (*TempoComponentSpec) DeepCopyInto

func (in *TempoComponentSpec) DeepCopyInto(out *TempoComponentSpec)

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

type TempoGatewaySpec

type TempoGatewaySpec struct {
	// TempoComponentSpec is embedded to extend this definition with further options.
	//
	// Currently there is no way to inline this field.
	// See: https://github.com/golang/go/issues/6213
	//
	// +optional
	// +kubebuilder:validation:Optional
	TempoComponentSpec `json:"component,omitempty"`

	Enabled bool `json:"enabled"`
	// Ingress defines gateway Ingress options.
	//
	// +optional
	// +kubebuilder:validation:Optional
	// +operator-sdk:csv:customresourcedefinitions:type=spec,displayName="Jaeger gateway Ingress Settings"
	Ingress IngressSpec `json:"ingress,omitempty"`
}

TempoGatewaySpec extends TempoComponentSpec with gateway parameters.

func (*TempoGatewaySpec) DeepCopy

func (in *TempoGatewaySpec) DeepCopy() *TempoGatewaySpec

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

func (*TempoGatewaySpec) DeepCopyInto

func (in *TempoGatewaySpec) DeepCopyInto(out *TempoGatewaySpec)

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

type TempoQueryFrontendSpec

type TempoQueryFrontendSpec struct {
	// TempoComponentSpec is embedded to extend this definition with further options.
	//
	// Currently there is no way to inline this field.
	// See: https://github.com/golang/go/issues/6213
	//
	// +optional
	// +kubebuilder:validation:Optional
	TempoComponentSpec `json:"component,omitempty"`

	// JaegerQuerySpec defines Jaeger Query specific options.
	//
	// +optional
	// +kubebuilder:validation:Optional
	// +operator-sdk:csv:customresourcedefinitions:type=spec,displayName="Jaeger Query Settings"
	JaegerQuery JaegerQuerySpec `json:"jaegerQuery"`
}

TempoQueryFrontendSpec extends TempoComponentSpec with frontend specific parameters.

func (*TempoQueryFrontendSpec) DeepCopy

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

func (*TempoQueryFrontendSpec) DeepCopyInto

func (in *TempoQueryFrontendSpec) DeepCopyInto(out *TempoQueryFrontendSpec)

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

type TempoStack

type TempoStack struct {
	Status            TempoStackStatus `json:"status,omitempty"`
	metav1.TypeMeta   `json:",inline"`
	metav1.ObjectMeta `json:"metadata,omitempty"`
	Spec              TempoStackSpec `json:"spec,omitempty"`
}

TempoStack is the spec for Tempo deployments.

+operator-sdk:csv:customresourcedefinitions:displayName="TempoStack",resources={{ConfigMap,v1},{ServiceAccount,v1},{Service,v1},{Secret,v1},{StatefulSet,v1},{Deployment,v1},{Ingress,v1},{Route,v1}} +kubebuilder:resource:shortName=tempo;tempos

func (*TempoStack) DeepCopy

func (in *TempoStack) DeepCopy() *TempoStack

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

func (*TempoStack) DeepCopyInto

func (in *TempoStack) DeepCopyInto(out *TempoStack)

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

func (*TempoStack) DeepCopyObject

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

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

func (*TempoStack) SetupWebhookWithManager

func (r *TempoStack) SetupWebhookWithManager(mgr ctrl.Manager, ctrlConfig v1alpha1.ProjectConfig) error

SetupWebhookWithManager initializes the webhook.

type TempoStackList

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

TempoStackList contains a list of TempoStack.

func (*TempoStackList) DeepCopy

func (in *TempoStackList) DeepCopy() *TempoStackList

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

func (*TempoStackList) DeepCopyInto

func (in *TempoStackList) DeepCopyInto(out *TempoStackList)

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

func (*TempoStackList) DeepCopyObject

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

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

type TempoStackSpec

type TempoStackSpec struct {
	// ManagementState defines if the CR should be managed by the operator or not.
	// Default is managed.
	//
	// +required
	// +kubebuilder:validation:Required
	// +kubebuilder:default:=Managed
	// +operator-sdk:csv:customresourcedefinitions:type=spec,xDescriptors={"urn:alm:descriptor:com.tectonic.ui:select:Managed","urn:alm:descriptor:com.tectonic.ui:select:Unmanaged"},displayName="Management State"
	ManagementState ManagementStateType `json:"managementState,omitempty"`

	// LimitSpec is used to limit ingestion and querying rates.
	//
	// +optional
	// +operator-sdk:csv:customresourcedefinitions:type=spec,displayName="Ingestion and Querying Ratelimiting"
	LimitSpec LimitSpec `json:"limits,omitempty"`

	// StorageClassName for PVCs used by ingester. Defaults to nil (default storage class in the cluster).
	//
	// +optional
	// +operator-sdk:csv:customresourcedefinitions:type=spec,displayName="StorageClassName for PVCs"
	StorageClassName *string `json:"storageClassName,omitempty"`

	// Resources defines resources configuration.
	// +optional
	// +operator-sdk:csv:customresourcedefinitions:type=spec,displayName="Resources"
	Resources Resources `json:"resources,omitempty"`

	// StorageSize for PVCs used by ingester. Defaults to 10Gi.
	//
	// +optional
	// +operator-sdk:csv:customresourcedefinitions:type=spec,displayName="Storage size for PVCs"
	StorageSize resource.Quantity `json:"storageSize,omitempty"`

	// Images defines the image for each container.
	//
	// +optional
	// +operator-sdk:csv:customresourcedefinitions:type=spec,displayName="Container Images"
	Images v1alpha1.ImagesSpec `json:"images,omitempty"`

	// Storage defines the spec for the object storage endpoint to store traces.
	// User is required to create secret and supply it.
	//
	// +kubebuilder:validation:Required
	// +operator-sdk:csv:customresourcedefinitions:type=spec,displayName="Object Storage"
	Storage ObjectStorageSpec `json:"storage"`

	// NOTE: currently this field is not considered.
	// Retention period defined by dataset.
	// User can specify how long data should be stored.
	//
	// +optional
	// +operator-sdk:csv:customresourcedefinitions:type=spec,displayName="Retention Period"
	Retention RetentionSpec `json:"retention,omitempty"`

	// ServiceAccount defines the service account to use for all tempo components.
	//
	// +optional
	// +operator-sdk:csv:customresourcedefinitions:type=spec,displayName="Service Account"
	ServiceAccount string `json:"serviceAccount,omitempty"`

	// SearchSpec control the configuration for the search capabilities.
	//
	// +optional
	// +operator-sdk:csv:customresourcedefinitions:type=spec,displayName="Search configuration options"
	SearchSpec SearchSpec `json:"search,omitempty"`

	// Template defines requirements for a set of tempo components.
	//
	// +optional
	// +operator-sdk:csv:customresourcedefinitions:type=spec,displayName="Tempo Component Templates"
	Template TempoTemplateSpec `json:"template,omitempty"`

	// NOTE: currently this field is not considered.
	// ReplicationFactor is used to define how many component replicas should exist.
	//
	// +optional
	// +operator-sdk:csv:customresourcedefinitions:type=spec,displayName="Replication Factor"
	ReplicationFactor int `json:"replicationFactor,omitempty"`

	// Tenants defines the per-tenant authentication and authorization spec.
	//
	// +optional
	// +kubebuilder:validation:Optional
	// +operator-sdk:csv:customresourcedefinitions:type=spec,displayName="Tenants Configuration"
	Tenants *TenantsSpec `json:"tenants,omitempty"`

	// ObservabilitySpec defines how telemetry data gets handled.
	//
	// +optional
	// +kubebuilder:validation:Optional
	// +operator-sdk:csv:customresourcedefinitions:type=spec,displayName="Observability"
	Observability ObservabilitySpec `json:"observability,omitempty"`
}

TempoStackSpec defines the desired state of TempoStack.

func (*TempoStackSpec) DeepCopy

func (in *TempoStackSpec) DeepCopy() *TempoStackSpec

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

func (*TempoStackSpec) DeepCopyInto

func (in *TempoStackSpec) DeepCopyInto(out *TempoStackSpec)

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

type TempoStackStatus

type TempoStackStatus struct {
	// Version of the Tempo Operator.
	// +optional
	OperatorVersion string `json:"operatorVersion,omitempty"`

	// Version of the managed Tempo instance.
	// +optional
	TempoVersion string `json:"tempoVersion,omitempty"`

	// DEPRECATED. Version of the Tempo Query component used.
	// +optional
	TempoQueryVersion string `json:"tempoQueryVersion,omitempty"`

	// Components provides summary of all Tempo pod status grouped
	// per component.
	//
	// +optional
	// +kubebuilder:validation:Optional
	Components ComponentStatus `json:"components,omitempty"`

	// Conditions of the Tempo deployment health.
	//
	// +optional
	// +kubebuilder:validation:Optional
	// +operator-sdk:csv:customresourcedefinitions:type=status,xDescriptors="urn:alm:descriptor:io.kubernetes.conditions"
	Conditions []metav1.Condition `json:"conditions,omitempty"`
}

TempoStackStatus defines the observed state of TempoStack.

func (*TempoStackStatus) DeepCopy

func (in *TempoStackStatus) DeepCopy() *TempoStackStatus

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

func (*TempoStackStatus) DeepCopyInto

func (in *TempoStackStatus) DeepCopyInto(out *TempoStackStatus)

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

type TempoTemplateSpec

type TempoTemplateSpec struct {
	// Distributor defines the distributor component spec.
	//
	// +optional
	// +kubebuilder:validation:Optional
	// +operator-sdk:csv:customresourcedefinitions:type=spec,displayName="Distributor pods"
	Distributor TempoComponentSpec `json:"distributor,omitempty"`

	// Ingester defines the ingester component spec.
	//
	// +optional
	// +kubebuilder:validation:Optional
	// +operator-sdk:csv:customresourcedefinitions:type=spec,displayName="Ingester pods"
	Ingester TempoComponentSpec `json:"ingester,omitempty"`

	// Compactor defines the tempo compactor component spec.
	//
	// +optional
	// +kubebuilder:validation:Optional
	// +operator-sdk:csv:customresourcedefinitions:type=spec,displayName="Compactor pods"
	Compactor TempoComponentSpec `json:"compactor,omitempty"`

	// Querier defines the querier component spec.
	//
	// +optional
	// +kubebuilder:validation:Optional
	// +operator-sdk:csv:customresourcedefinitions:type=spec,displayName="Querier pods"
	Querier TempoComponentSpec `json:"querier,omitempty"`

	// TempoQueryFrontendSpec defines the query frontend spec.
	//
	// +optional
	// +kubebuilder:validation:Optional
	// +operator-sdk:csv:customresourcedefinitions:type=spec,displayName="Query Frontend pods"
	QueryFrontend TempoQueryFrontendSpec `json:"queryFrontend,omitempty"`

	// Gateway defines the tempo gateway spec.
	//
	// +optional
	// +kubebuilder:validation:Optional
	// +operator-sdk:csv:customresourcedefinitions:type=spec,displayName="Gateway pods"
	Gateway TempoGatewaySpec `json:"gateway,omitempty"`
}

TempoTemplateSpec defines the template of all requirements to configure scheduling of all Tempo components to be deployed.

func (*TempoTemplateSpec) DeepCopy

func (in *TempoTemplateSpec) DeepCopy() *TempoTemplateSpec

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

func (*TempoTemplateSpec) DeepCopyInto

func (in *TempoTemplateSpec) DeepCopyInto(out *TempoTemplateSpec)

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

type TenantSecretSpec

type TenantSecretSpec struct {
	// Name of a secret in the namespace configured for tenant secrets.
	//
	// +optional
	// +kubebuilder:validation:Optional
	// +operator-sdk:csv:customresourcedefinitions:type=spec,xDescriptors="urn:alm:descriptor:io.kubernetes:Secret",displayName="Tenant Secret Name"
	Name string `json:"name"`
}

TenantSecretSpec is a secret reference containing name only for a secret living in the same namespace as the (Tempo) TempoStack custom resource.

func (*TenantSecretSpec) DeepCopy

func (in *TenantSecretSpec) DeepCopy() *TenantSecretSpec

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

func (*TenantSecretSpec) DeepCopyInto

func (in *TenantSecretSpec) DeepCopyInto(out *TenantSecretSpec)

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

type TenantsSpec

type TenantsSpec struct {
	// Mode defines the multitenancy mode.
	//
	// +required
	// +kubebuilder:validation:Required
	// +kubebuilder:default:=static
	// +operator-sdk:csv:customresourcedefinitions:type=spec,xDescriptors={"urn:alm:descriptor:com.tectonic.ui:select:static","urn:alm:descriptor:com.tectonic.ui:select:openshift"},displayName="Mode"
	Mode ModeType `json:"mode"`

	// Authentication defines the tempo-gateway component authentication configuration spec per tenant.
	//
	// +optional
	// +kubebuilder:validation:Optional
	// +operator-sdk:csv:customresourcedefinitions:type=spec,displayName="Authentication"
	Authentication []AuthenticationSpec `json:"authentication,omitempty"`
	// Authorization defines the tempo-gateway component authorization configuration spec per tenant.
	//
	// +optional
	// +kubebuilder:validation:Optional
	// +operator-sdk:csv:customresourcedefinitions:type=spec,displayName="Authorization"
	Authorization *AuthorizationSpec `json:"authorization,omitempty"`
}

TenantsSpec defines the mode, authentication and authorization configuration of the tempo gateway component.

func (*TenantsSpec) DeepCopy

func (in *TenantsSpec) DeepCopy() *TenantsSpec

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

func (*TenantsSpec) DeepCopyInto

func (in *TenantsSpec) DeepCopyInto(out *TenantsSpec)

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

type TracingConfigSpec

type TracingConfigSpec struct {
	// SamplingFraction defines the sampling ratio. Valid values are 0 to 1.
	//
	// +optional
	// +kubebuilder:validation:Optional
	// +operator-sdk:csv:customresourcedefinitions:type=spec,displayName="Sampling Fraction"
	SamplingFraction string `json:"sampling_fraction,omitempty"`

	// JaegerAgentEndpoint defines the jaeger endpoint data gets send to.
	//
	// +optional
	// +kubebuilder:validation:Optional
	// +kubebuilder:default:="localhost:6831"
	// +operator-sdk:csv:customresourcedefinitions:type=spec,displayName="Jaeger-Agent-Endpoint"
	JaegerAgentEndpoint string `json:"jaeger_agent_endpoint,omitempty"`
}

TracingConfigSpec defines a tracing config including endpoints and sampling.

func (*TracingConfigSpec) DeepCopy

func (in *TracingConfigSpec) DeepCopy() *TracingConfigSpec

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

func (*TracingConfigSpec) DeepCopyInto

func (in *TracingConfigSpec) DeepCopyInto(out *TracingConfigSpec)

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