diff --git a/.gitignore b/.gitignore index 87689c5bc..af93dd08f 100644 --- a/.gitignore +++ b/.gitignore @@ -17,3 +17,9 @@ bin/ # Files generated by e2e tests kubeconfig + +# website + +website/public/* +website/resources/* +docs/prologue/contributing.md diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 000000000..7ef6eb610 --- /dev/null +++ b/.gitmodules @@ -0,0 +1,3 @@ +[submodule "website/themes/doks"] + path = website/themes/doks + url = https://github.com/h-enk/doks.git diff --git a/ADOPTERS.md b/ADOPTERS.md new file mode 100644 index 000000000..bb0e42b65 --- /dev/null +++ b/ADOPTERS.md @@ -0,0 +1,32 @@ +--- +title: Adopters +lead: "" +date: 2021-04-30T10:40:00+00:00 +lastmod: 2021-04-30T10:40:00+00:00 +draft: false +images: [] +--- + + + +This document tracks people and use cases for the Tempo Operator in production. By creating a list of production use cases we hope to build a community of advisors that we can reach out to with experience using various the Tempo Operator applications, operation environments, and cluster sizes. The Tempo Operator development team may reach out periodically to check-in on how the Tempo Operator is working in the field and update this list. + + +## Red Hat Inc + +https://www.redhat.com + +Environments: AWS, Azure, Google Cloud, Bare Metal, etc diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 000000000..8beda2ba6 --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,46 @@ +--- +title: Contributing +description: How can I contribute to the Tempo Operator? +lead: "" +lastmod: "2021-03-08T08:48:57+00:00" +draft: false +images: [] +menu: + docs: + parent: prologue +weight: 200 +toc: true +--- + +This project is licensed under the [AGPLv3 license](LICENSE) and accept +contributions via GitHub pull requests. This document outlines some of the +conventions on development workflow, contact points +and other resources to make it easier to get your contribution accepted. + + +# Contributor License Agreement + +By contributing to this project you agree to the Contributor License Agreement. + +# Email and Chat + +The project currently uses the [Grafana Slack](https://grafana.slack.com): +- [#tempo-operator-dev](https://grafana.slack.com/archives/C0414EUU39A) + +## Getting Started + +- Fork the repository on GitHub +- Read the [README](README.md) for build and test instructions +- Play with the project, submit bugs, submit patches! + +## Contribution Flow + +This is a rough outline of what a contributor's workflow looks like: + +- Create a topic branch from where you want to base your work (usually `main`). +- Make commits of logical units. +- Push your changes to a topic branch in your fork of the repository. +- Make sure the tests pass, and add any new tests as appropriate. +- Submit a pull request to the original repository. + +Thanks for your contributions! diff --git a/Dockerfile b/Dockerfile index 0401cd154..96a39c762 100644 --- a/Dockerfile +++ b/Dockerfile @@ -4,7 +4,7 @@ FROM golang:1.19 as builder WORKDIR /workspace # Cache tool dependencies COPY Makefile Makefile -RUN make controller-gen crdoc kustomize +RUN make controller-gen gen-crd-api-reference-docs kustomize # Copy the Go Modules manifests COPY go.mod go.mod COPY go.sum go.sum diff --git a/Makefile b/Makefile index 94a10dd47..a9a681179 100644 --- a/Makefile +++ b/Makefile @@ -12,6 +12,13 @@ IMG_REPO ?= tempo-operator IMG ?= ${IMG_PREFIX}/${IMG_REPO}:v${OPERATOR_VERSION} BUNDLE_IMG ?= ${IMG_PREFIX}/${IMG_REPO}-bundle:v${OPERATOR_VERSION} + +# Website generation variables +WEBSITE_DIR ?= website +WEBSITE_BASE_URL ?= https://tempo-operator.netlify.app +HUGO_VERSION = v0.80.0 + + # When the VERBOSE variable is set to 1, all the commands are shown ifeq ("$(VERBOSE)","true") echo_prefix=">>>>" @@ -163,19 +170,20 @@ $(LOCALBIN): ## Tool Versions KUSTOMIZE_VERSION ?= v4.5.5 CONTROLLER_TOOLS_VERSION ?= v0.9.2 -CRDOC_VERSION ?= v0.5.2 -OPERATOR_SDK_VERSION ?= 1.27.0 +GEN_CRD_VERSION ?= v0.0.5 ENVTEST_VERSION ?= latest +OPERATOR_SDK_VERSION ?= 1.27.0 CERTMANAGER_VERSION ?= 1.9.1 ## Tool Binaries KUSTOMIZE ?= $(LOCALBIN)/kustomize-$(KUSTOMIZE_VERSION) CONTROLLER_GEN ?= $(LOCALBIN)/controller-gen-$(CONTROLLER_TOOLS_VERSION) ENVTEST ?= $(LOCALBIN)/setup-envtest-$(ENVTEST_VERSION) -CRDOC = $(LOCALBIN)/crdoc-$(CRDOC_VERSION) +GEN_CRD = $(LOCALBIN)/gen-crd-api-reference-docs-$(GEN_CRD_VERSION) OPERATOR_SDK ?= $(LOCALBIN)/operator-sdk-$(OPERATOR_SDK_VERSION) KIND ?= $(LOCALBIN)/kind KUTTL ?= $(LOCALBIN)/kubectl-kuttl +HUGO ?= $(LOCALBIN)/hugo-$(HUGO_VERSION) # Options for KIND version to use export KUBE_VERSION ?= 1.25 @@ -255,18 +263,10 @@ ci: test ensure-generate-is-noop lint: golangci-lint run -.PHONY: api-docs -api-docs: crdoc kustomize - @{ \ - set -e ;\ - TMP_DIR=$$(mktemp -d) ; \ - $(KUSTOMIZE) build config/crd -o $$TMP_DIR/crd-output.yaml ;\ - $(CRDOC) --resources $$TMP_DIR/crd-output.yaml --output docs/api.md ;\ - } -.PHONY: crdoc -crdoc: ## Download crdoc locally if necessary. - test -s $(LOCALBIN)/crdoc-$(CRDOC_VERSION) || $(call go-get-tool,$(CRDOC), fybrik.io/crdoc,$(CRDOC_VERSION)) +.PHONY: gen-crd-api-reference-docs +gen-crd-api-reference-docs: ## Download gen-crd-api-reference-docs locally if necessary. + test -s $(GEN_CRD) || $(call go-get-tool,$(GEN_CRD),github.com/ViaQ/gen-crd-api-reference-docs,$(GEN_CRD_VERSION)) .PHONY: kustomize @@ -357,7 +357,8 @@ ensure-generate-is-noop: generate bundle @git diff -s --exit-code apis/config/v1alpha1/zz_generated.*.go || (echo "Build failed: a model has been changed but the generated resources aren't up to date. Run 'make generate' and update your PR." && exit 1) @git diff -s --exit-code bundle config || (echo "Build failed: the bundle, config files has been changed but the generated bundle, config files aren't up to date. Run 'make bundle' and update your PR." && git diff && exit 1) @git diff -s --exit-code bundle.Dockerfile || (echo "Build failed: the bundle.Dockerfile file has been changed. The file should be the same as generated one. Run 'make bundle' and update your PR." && git diff && exit 1) - @git diff -s --exit-code docs/api.md || (echo "Build failed: the api.md file has been changed but the generated api.md file isn't up to date. Run 'make api-docs' and update your PR." && git diff && exit 1) + @git diff -s --exit-code docs/operator/api.md || (echo "Build failed: the api.md file has been changed but the generated api.md file isn't up to date. Run 'make api-docs' and update your PR." && git diff && exit 1) + @git diff -s --exit-code docs/operator/feature-gates.md || (echo "Build failed: the feature-gates.md file has been changed but the generated feature-gates.md file isn't up to date. Run 'make api-docs' and update your PR." && git diff && exit 1) .PHONY: cert-manager cert-manager: cmctl @@ -381,3 +382,45 @@ cmctl: mv $$TMP_DIR/cmctl $(CMCTL) ;\ rm -rf $$TMP_DIR ;\ } + +.PHONY: api-docs +api-docs: docs/operator/api.md docs/operator/feature-gates.md + +##@ Website +TYPES_TARGET := $(shell find apis/tempo -type f -iname "*_types.go") +docs/operator/api.md: $(TYPES_TARGET) gen-crd-api-reference-docs + $(GEN_CRD) -api-dir "github.com/os-observability/tempo-operator/apis/tempo/" -config "$(PWD)/config/docs/config.json" -template-dir "$(PWD)/config/docs/templates" -out-file "$(PWD)/$@" + sed -i 's/+docs:/ docs:/' $@ + sed -i 's/+parent:/ parent:/' $@ + sed -i 's/##/\n##/' $@ + sed -i 's/+newline/\n/' $@ + + +FEATURE_GATES_TARGET := $(shell find apis/config -type f -iname "*_types.go") +docs/operator/feature-gates.md: $(FEATURE_GATES_TARGET) gen-crd-api-reference-docs + $(GEN_CRD) -api-dir "github.com/os-observability/tempo-operator/apis/config/v1alpha1/" -config "$(PWD)/config/docs/config.json" -template-dir "$(PWD)/config/docs/templates" -out-file "$(PWD)/$@" + sed -i 's/title: "API"/title: "Feature Gates"/' $@ + sed -i 's/+docs:/ docs:/' $@ + sed -i 's/+parent:/ parent:/' $@ + sed -i 's/##/\n##/' $@ + sed -i 's/+newline/\n/' $@ + +.PHONY: web-pre +web-pre: docs/operator/api.md docs/operator/feature-gates.md + @echo ">> preprocessing docs for website" + @git submodule update --init --recursive + cp CONTRIBUTING.md docs/prologue/contributing.md + sed -i 's/(LICENSE)/(https:\/\/raw.githubusercontent.com\/os-observability\/tempo-operator\/main\/LICENSE)/' docs/prologue/contributing.md + sed -i 's/(README.md)/(https:\/\/github.com\/os-observability\/tempo-operator#readme)/' docs/prologue/contributing.md + cd $(WEBSITE_DIR)/themes/doks/ && npm install && rm -rf content + +.PHONY: web +web: web-pre hugo ## Run production build of the tempo-operator.dev website + cd $(WEBSITE_DIR) && $(HUGO) -b $(WEBSITE_BASE_URL) + +.PHONY: web-serve +web-serve: web-pre ## Run local preview version of the tempo-operator.dev website + @cd $(WEBSITE_DIR) && $(HUGO) serve + +hugo: + test -s $(HUGO) || $(call go-get-tool,$(HUGO),--tags extended github.com/gohugoio/hugo,$(HUGO_VERSION)) diff --git a/apis/config/v1alpha1/doc.go b/apis/config/v1alpha1/doc.go new file mode 100644 index 000000000..327ff06c8 --- /dev/null +++ b/apis/config/v1alpha1/doc.go @@ -0,0 +1,4 @@ +// Package v1alpha1 contains API Schema definitions for the config.tempo v1alpha1 API group. +// +kubebuilder:object:generate=true +// +groupName=config.tempo.grafana.com +package v1alpha1 diff --git a/apis/tempo/register.go b/apis/tempo/register.go new file mode 100644 index 000000000..9d6387db3 --- /dev/null +++ b/apis/tempo/register.go @@ -0,0 +1 @@ +package tempo diff --git a/apis/tempo/v1alpha1/doc.go b/apis/tempo/v1alpha1/doc.go new file mode 100644 index 000000000..d4f577aa0 --- /dev/null +++ b/apis/tempo/v1alpha1/doc.go @@ -0,0 +1,4 @@ +// Package v1alpha1 contains API Schema definitions for the tempo v1alpha1 API group. +// +kubebuilder:object:generate=true +// +groupName=tempo.grafana.com +package v1alpha1 diff --git a/config/docs/config.json b/config/docs/config.json new file mode 100644 index 000000000..ae2d8bc81 --- /dev/null +++ b/config/docs/config.json @@ -0,0 +1,64 @@ +{ + "hideMemberFields": [ + "TypeMeta" + ], + "hideTypePatterns": [ + "ParseError$", + "List$" + ], + "externalPackages": [ + { + "typeMatchPrefix": "^k8s\\.io/apimachinery/pkg/apis/meta/v1\\.Duration$", + "docsURLTemplate": "https://pkg.go.dev/k8s.io/apimachinery/pkg/apis/meta/v1#Duration" + }, + { + "typeMatchPrefix": "^k8s\\.io/apimachinery/pkg/util/intstr\\.IntOrString$", + "docsURLTemplate": "https://pkg.go.dev/k8s.io/apimachinery/pkg/util/intstr#IntOrString" + }, + { + "typeMatchPrefix": "^k8s\\.io/(api|apimachinery/pkg/apis)/", + "docsURLTemplate": "https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.24/#{{lower .TypeIdentifier}}-{{arrIndex .PackageSegments -1}}-{{arrIndex .PackageSegments -2}}" + }, + { + "typeMatchPrefix": "^k8s\\.io/apiextensions-apiserver/pkg/apis/apiextensions/v1\\.JSON$", + "docsURLTemplate": "https://pkg.go.dev/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1#JSON" + }, + { + "typeMatchPrefix": "^github\\.com/os-observability/tempo-operator/apis/tempo/v1alpha1", + "docsURLTemplate": "../v1/api.md#tempo.grafana.com/v1alpha1.{{ .TypeIdentifier}}" + }, + { + "typeMatchPrefix": "^github\\.com/os-observability/tempo-operator/apis/config/v1alpha1", + "docsURLTemplate": "../v1/feature-gates.md#tempo-grafana-com-v1alpha1-{{ .TypeIdentifier}}" + }, + { + "typeMatchPrefix": "^k8s\\.io/component-base/config/v1alpha1\\.LeaderElectionConfiguration$", + "docsURLTemplate": "https://pkg.go.dev/k8s.io/component-base/config#LeaderElectionConfiguration" + }, + { + "typeMatchPrefix": "^sigs\\.k8s\\.io/controller-runtime/pkg/config/v1alpha1\\.ControllerConfigurationSpec$", + "docsURLTemplate": "https://pkg.go.dev/sigs.k8s.io/controller-runtime/pkg/config/v1alpha1#ControllerConfigurationSpec" + }, + { + "typeMatchPrefix": "^sigs\\.k8s\\.io/controller-runtime/pkg/config/v1alpha1\\.ControllerMetrics$", + "docsURLTemplate": "https://pkg.go.dev/sigs.k8s.io/controller-runtime/pkg/config/v1alpha1#ControllerMetrics" + }, + { + "typeMatchPrefix": "^sigs\\.k8s\\.io/controller-runtime/pkg/config/v1alpha1\\.ControllerHealth$", + "docsURLTemplate": "https://pkg.go.dev/sigs.k8s.io/controller-runtime/pkg/config/v1alpha1#ControllerHealth" + }, + { + "typeMatchPrefix": "^sigs\\.k8s\\.io/controller-runtime/pkg/config/v1alpha1\\.ControllerWebhook$", + "docsURLTemplate": "https://pkg.go.dev/sigs.k8s.io/controller-runtime/pkg/config/v1alpha1#ControllerWebhook" + } + ], + "typeDisplayNamePrefixOverrides": { + "k8s.io/api/": "Kubernetes ", + "k8s.io/apimachinery/pkg/apis/": "Kubernetes ", + "k8s.io/component-base/config/": "Kubernetes ", + "sigs.k8s.io/controller-runtime/pkg/config/": "K8S Controller-runtime ", + "github.com/os-observability/tempo-operator/apis/tempo/v1alpha1": "Tempo Operator v1alpha1", + "github.com/os-observability/tempo-operator/apis/config/v1alpha1": "Feature Gates" + }, + "markdownDisabled": false +} diff --git a/config/docs/templates/members.tpl b/config/docs/templates/members.tpl new file mode 100644 index 000000000..fa05f205f --- /dev/null +++ b/config/docs/templates/members.tpl @@ -0,0 +1,45 @@ +{{ define "member" }} +{{ if not (hiddenMember .)}} +{{ if fieldEmbedded . }} +{{ range .Type.Members }} +{{ template "member" . }} +{{ end }} +{{ else }} +
{{ fieldName . }}
metadata
field.
+ {{ end }}
+
+ {{.Underlying}}
alias){{ end -}}
+{{ with (typeReferences .) }}
+ + (Appears on: + {{- $prev := "" -}} + {{- range . -}} + {{- if $prev -}}, {{ end -}} + {{- $prev = . -}} + {{ typeDisplayName . }} + {{- end -}} + ) +
+{{ end }} + +Value | +Description | +
---|---|
{{ typeDisplayName . }} |
+ {{ safe (renderComments .CommentLines) }} | +
Field | +Description | +
---|---|
+ apiVersion + string + |
+
+
+ {{apiGroup .}}
+
+ |
+
+ kind + string + |
+ {{.Name.Name}} |
+
Name | -Type | -Description | -Required | -
---|---|---|---|
apiVersion | -string | -tempo.grafana.com/v1alpha1 | -true | -
kind | -string | -TempoStack | -true | -
metadata | -object | -Refer to the Kubernetes API documentation for the fields of the `metadata` field. | -true | -
spec | -object | -
- TempoStackSpec defines the desired state of TempoStack. - |
- false | -
status | -object | -
- TempoStackStatus defines the observed state of TempoStack. - |
- false | -
Name | -Type | -Description | -Required | -
---|---|---|---|
storage | -object | -
- Storage defines S3 compatible object storage configuration. User is required to create secret and supply it. - |
- true | -
images | -object | -
- Images defines the image for each container. - |
- false | -
limits | -object | -
- LimitSpec is used to limit ingestion and querying rates. - |
- false | -
replicationFactor | -integer | -
- NOTE: currently this field is not considered. ReplicationFactor is used to define how many component replicas should exist. - |
- false | -
resources | -object | -
- Resources defines resources configuration. - |
- false | -
retention | -object | -
- NOTE: currently this field is not considered. Retention period defined by dataset. User can specify how long data should be stored. - |
- false | -
search | -object | -
- SearchSpec control the configuration for the search capabilities. - |
- false | -
serviceAccount | -string | -
- ServiceAccount defines the service account to use for all tempo components. - |
- false | -
storageClassName | -string | -
- StorageClassName for PVCs used by ingester. Defaults to nil (default storage class in the cluster). - |
- false | -
storageSize | -int or string | -
- StorageSize for PVCs used by ingester. Defaults to 10Gi. - |
- false | -
template | -object | -
- Components defines requirements for a set of tempo components. - |
- false | -
tenants | -object | -
- Tenants defines the per-tenant authentication and authorization spec. - |
- false | -
Name | -Type | -Description | -Required | -
---|---|---|---|
secret | -string | -
- Secret for object storage authentication. Name of a secret in the same namespace as the tempo TempoStack custom resource. - |
- true | -
tls | -object | -
- TLS configuration for reaching the object storage endpoint. - |
- false | -
Name | -Type | -Description | -Required | -
---|---|---|---|
caName | -string | -
- CA is the name of a ConfigMap containing a CA certificate. It needs to be in the same namespace as the Tempo custom resource. - |
- false | -
Name | -Type | -Description | -Required | -
---|---|---|---|
tempo | -string | -
- Tempo defines the tempo container image. - |
- false | -
tempoGateway | -string | -
- TempoGateway defines the tempo-gateway container image. - |
- false | -
tempoQuery | -string | -
- TempoQuery defines the tempo-query container image. - |
- false | -
Name | -Type | -Description | -Required | -
---|---|---|---|
global | -object | -
- Global is used to define global rate limits. - |
- false | -
perTenant | -map[string]object | -
- PerTenant is used to define rate limits per tenant. - |
- false | -
Name | -Type | -Description | -Required | -
---|---|---|---|
ingestion | -object | -
- Ingestion is used to define ingestion rate limits. - |
- false | -
query | -object | -
- Query is used to define query rate limits. - |
- false | -
Name | -Type | -Description | -Required | -
---|---|---|---|
ingestionBurstSizeBytes | -integer | -
- IngestionBurstSizeBytes defines the burst size (bytes) used in ingestion. - |
- false | -
ingestionRateLimitBytes | -integer | -
- IngestionRateLimitBytes defines the Per-user ingestion rate limit (bytes) used in ingestion. - |
- false | -
maxBytesPerTrace | -integer | -
- MaxBytesPerTrace defines the maximum number of bytes of an acceptable trace. - |
- false | -
maxTracesPerUser | -integer | -
- MaxTracesPerUser defines the maximum number of traces a user can send. - |
- false | -
Name | -Type | -Description | -Required | -
---|---|---|---|
maxBytesPerTagValues | -integer | -
- MaxBytesPerTagValues defines the maximum size in bytes of a tag-values query. - |
- false | -
maxSearchBytesPerTrace | -integer | -
- MaxSearchBytesPerTrace defines the maximum size of search data for a single trace in bytes. default: `0` to disable. - |
- false | -
Name | -Type | -Description | -Required | -
---|---|---|---|
ingestion | -object | -
- Ingestion is used to define ingestion rate limits. - |
- false | -
query | -object | -
- Query is used to define query rate limits. - |
- false | -
Name | -Type | -Description | -Required | -
---|---|---|---|
ingestionBurstSizeBytes | -integer | -
- IngestionBurstSizeBytes defines the burst size (bytes) used in ingestion. - |
- false | -
ingestionRateLimitBytes | -integer | -
- IngestionRateLimitBytes defines the Per-user ingestion rate limit (bytes) used in ingestion. - |
- false | -
maxBytesPerTrace | -integer | -
- MaxBytesPerTrace defines the maximum number of bytes of an acceptable trace. - |
- false | -
maxTracesPerUser | -integer | -
- MaxTracesPerUser defines the maximum number of traces a user can send. - |
- false | -
Name | -Type | -Description | -Required | -
---|---|---|---|
maxBytesPerTagValues | -integer | -
- MaxBytesPerTagValues defines the maximum size in bytes of a tag-values query. - |
- false | -
maxSearchBytesPerTrace | -integer | -
- MaxSearchBytesPerTrace defines the maximum size of search data for a single trace in bytes. default: `0` to disable. - |
- false | -
Name | -Type | -Description | -Required | -
---|---|---|---|
total | -object | -
- 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. - |
- false | -
Name | -Type | -Description | -Required | -
---|---|---|---|
limits | -map[string]int or string | -
- Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ - |
- false | -
requests | -map[string]int or string | -
- Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ - |
- false | -
Name | -Type | -Description | -Required | -
---|---|---|---|
global | -object | -
- Global is used to configure global retention. - |
- false | -
perTenant | -map[string]object | -
- PerTenant is used to configure retention per tenant. - |
- false | -
Name | -Type | -Description | -Required | -
---|---|---|---|
traces | -string | -
- Traces defines retention period. Supported parameter suffixes are “s”, “m” and “h”. example: 336h default: value is 48h. - |
- false | -
Name | -Type | -Description | -Required | -
---|---|---|---|
traces | -string | -
- Traces defines retention period. Supported parameter suffixes are “s”, “m” and “h”. example: 336h default: value is 48h. - |
- false | -
Name | -Type | -Description | -Required | -
---|---|---|---|
defaultResultLimit | -integer | -
- Limit used for search requests if none is set by the caller (default: 20) - |
- false | -
maxDuration | -string | -
- The maximum allowed time range for a search, default: 0s which means unlimited. - |
- false | -
maxResultLimit | -integer | -
- 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. - |
- false | -
Name | -Type | -Description | -Required | -
---|---|---|---|
compactor | -object | -
- Compactor defines the tempo compactor component spec. - |
- false | -
distributor | -object | -
- Distributor defines the distributor component spec. - |
- false | -
gateway | -object | -
- Gateway defines the tempo gateway spec. - |
- false | -
ingester | -object | -
- Ingester defines the ingester component spec. - |
- false | -
querier | -object | -
- Querier defines the querier component spec. - |
- false | -
queryFrontend | -object | -
- TempoQueryFrontendSpec defines the query frontend spec. - |
- false | -
Name | -Type | -Description | -Required | -
---|---|---|---|
nodeSelector | -map[string]string | -
- NodeSelector is the simplest recommended form of node selection constraint. - |
- false | -
replicas | -integer | -
- Replicas represents the number of replicas to create for this component. - - Format: int32 - |
- false | -
tolerations | -[]object | -
- Tolerations defines component specific pod tolerations. - |
- false | -
Name | -Type | -Description | -Required | -
---|---|---|---|
effect | -string | -
- Effect indicates the taint effect to match. Empty means match all taint effects. When specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute. - |
- false | -
key | -string | -
- Key is the taint key that the toleration applies to. Empty means match all taint keys. If the key is empty, operator must be Exists; this combination means to match all values and all keys. - |
- false | -
operator | -string | -
- Operator represents a key's relationship to the value. Valid operators are Exists and Equal. Defaults to Equal. Exists is equivalent to wildcard for value, so that a pod can tolerate all taints of a particular category. - |
- false | -
tolerationSeconds | -integer | -
- TolerationSeconds represents the period of time the toleration (which must be of effect NoExecute, otherwise this field is ignored) tolerates the taint. By default, it is not set, which means tolerate the taint forever (do not evict). Zero and negative values will be treated as 0 (evict immediately) by the system. - - Format: int64 - |
- false | -
value | -string | -
- Value is the taint value the toleration matches to. If the operator is Exists, the value should be empty, otherwise just a regular string. - |
- false | -
Name | -Type | -Description | -Required | -
---|---|---|---|
nodeSelector | -map[string]string | -
- NodeSelector is the simplest recommended form of node selection constraint. - |
- false | -
replicas | -integer | -
- Replicas represents the number of replicas to create for this component. - - Format: int32 - |
- false | -
tolerations | -[]object | -
- Tolerations defines component specific pod tolerations. - |
- false | -
Name | -Type | -Description | -Required | -
---|---|---|---|
effect | -string | -
- Effect indicates the taint effect to match. Empty means match all taint effects. When specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute. - |
- false | -
key | -string | -
- Key is the taint key that the toleration applies to. Empty means match all taint keys. If the key is empty, operator must be Exists; this combination means to match all values and all keys. - |
- false | -
operator | -string | -
- Operator represents a key's relationship to the value. Valid operators are Exists and Equal. Defaults to Equal. Exists is equivalent to wildcard for value, so that a pod can tolerate all taints of a particular category. - |
- false | -
tolerationSeconds | -integer | -
- TolerationSeconds represents the period of time the toleration (which must be of effect NoExecute, otherwise this field is ignored) tolerates the taint. By default, it is not set, which means tolerate the taint forever (do not evict). Zero and negative values will be treated as 0 (evict immediately) by the system. - - Format: int64 - |
- false | -
value | -string | -
- Value is the taint value the toleration matches to. If the operator is Exists, the value should be empty, otherwise just a regular string. - |
- false | -
Name | -Type | -Description | -Required | -
---|---|---|---|
enabled | -boolean | -
- - |
- true | -
component | -object | -
- 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 - |
- false | -
Name | -Type | -Description | -Required | -
---|---|---|---|
nodeSelector | -map[string]string | -
- NodeSelector is the simplest recommended form of node selection constraint. - |
- false | -
replicas | -integer | -
- Replicas represents the number of replicas to create for this component. - - Format: int32 - |
- false | -
tolerations | -[]object | -
- Tolerations defines component specific pod tolerations. - |
- false | -
Name | -Type | -Description | -Required | -
---|---|---|---|
effect | -string | -
- Effect indicates the taint effect to match. Empty means match all taint effects. When specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute. - |
- false | -
key | -string | -
- Key is the taint key that the toleration applies to. Empty means match all taint keys. If the key is empty, operator must be Exists; this combination means to match all values and all keys. - |
- false | -
operator | -string | -
- Operator represents a key's relationship to the value. Valid operators are Exists and Equal. Defaults to Equal. Exists is equivalent to wildcard for value, so that a pod can tolerate all taints of a particular category. - |
- false | -
tolerationSeconds | -integer | -
- TolerationSeconds represents the period of time the toleration (which must be of effect NoExecute, otherwise this field is ignored) tolerates the taint. By default, it is not set, which means tolerate the taint forever (do not evict). Zero and negative values will be treated as 0 (evict immediately) by the system. - - Format: int64 - |
- false | -
value | -string | -
- Value is the taint value the toleration matches to. If the operator is Exists, the value should be empty, otherwise just a regular string. - |
- false | -
Name | -Type | -Description | -Required | -
---|---|---|---|
nodeSelector | -map[string]string | -
- NodeSelector is the simplest recommended form of node selection constraint. - |
- false | -
replicas | -integer | -
- Replicas represents the number of replicas to create for this component. - - Format: int32 - |
- false | -
tolerations | -[]object | -
- Tolerations defines component specific pod tolerations. - |
- false | -
Name | -Type | -Description | -Required | -
---|---|---|---|
effect | -string | -
- Effect indicates the taint effect to match. Empty means match all taint effects. When specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute. - |
- false | -
key | -string | -
- Key is the taint key that the toleration applies to. Empty means match all taint keys. If the key is empty, operator must be Exists; this combination means to match all values and all keys. - |
- false | -
operator | -string | -
- Operator represents a key's relationship to the value. Valid operators are Exists and Equal. Defaults to Equal. Exists is equivalent to wildcard for value, so that a pod can tolerate all taints of a particular category. - |
- false | -
tolerationSeconds | -integer | -
- TolerationSeconds represents the period of time the toleration (which must be of effect NoExecute, otherwise this field is ignored) tolerates the taint. By default, it is not set, which means tolerate the taint forever (do not evict). Zero and negative values will be treated as 0 (evict immediately) by the system. - - Format: int64 - |
- false | -
value | -string | -
- Value is the taint value the toleration matches to. If the operator is Exists, the value should be empty, otherwise just a regular string. - |
- false | -
Name | -Type | -Description | -Required | -
---|---|---|---|
nodeSelector | -map[string]string | -
- NodeSelector is the simplest recommended form of node selection constraint. - |
- false | -
replicas | -integer | -
- Replicas represents the number of replicas to create for this component. - - Format: int32 - |
- false | -
tolerations | -[]object | -
- Tolerations defines component specific pod tolerations. - |
- false | -
Name | -Type | -Description | -Required | -
---|---|---|---|
effect | -string | -
- Effect indicates the taint effect to match. Empty means match all taint effects. When specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute. - |
- false | -
key | -string | -
- Key is the taint key that the toleration applies to. Empty means match all taint keys. If the key is empty, operator must be Exists; this combination means to match all values and all keys. - |
- false | -
operator | -string | -
- Operator represents a key's relationship to the value. Valid operators are Exists and Equal. Defaults to Equal. Exists is equivalent to wildcard for value, so that a pod can tolerate all taints of a particular category. - |
- false | -
tolerationSeconds | -integer | -
- TolerationSeconds represents the period of time the toleration (which must be of effect NoExecute, otherwise this field is ignored) tolerates the taint. By default, it is not set, which means tolerate the taint forever (do not evict). Zero and negative values will be treated as 0 (evict immediately) by the system. - - Format: int64 - |
- false | -
value | -string | -
- Value is the taint value the toleration matches to. If the operator is Exists, the value should be empty, otherwise just a regular string. - |
- false | -
Name | -Type | -Description | -Required | -
---|---|---|---|
component | -object | -
- 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 - |
- false | -
jaegerQuery | -object | -
- JaegerQuerySpec defines Jaeger Query specific options. - |
- false | -
Name | -Type | -Description | -Required | -
---|---|---|---|
nodeSelector | -map[string]string | -
- NodeSelector is the simplest recommended form of node selection constraint. - |
- false | -
replicas | -integer | -
- Replicas represents the number of replicas to create for this component. - - Format: int32 - |
- false | -
tolerations | -[]object | -
- Tolerations defines component specific pod tolerations. - |
- false | -
Name | -Type | -Description | -Required | -
---|---|---|---|
effect | -string | -
- Effect indicates the taint effect to match. Empty means match all taint effects. When specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute. - |
- false | -
key | -string | -
- Key is the taint key that the toleration applies to. Empty means match all taint keys. If the key is empty, operator must be Exists; this combination means to match all values and all keys. - |
- false | -
operator | -string | -
- Operator represents a key's relationship to the value. Valid operators are Exists and Equal. Defaults to Equal. Exists is equivalent to wildcard for value, so that a pod can tolerate all taints of a particular category. - |
- false | -
tolerationSeconds | -integer | -
- TolerationSeconds represents the period of time the toleration (which must be of effect NoExecute, otherwise this field is ignored) tolerates the taint. By default, it is not set, which means tolerate the taint forever (do not evict). Zero and negative values will be treated as 0 (evict immediately) by the system. - - Format: int64 - |
- false | -
value | -string | -
- Value is the taint value the toleration matches to. If the operator is Exists, the value should be empty, otherwise just a regular string. - |
- false | -
Name | -Type | -Description | -Required | -
---|---|---|---|
enabled | -boolean | -
- Enabled is used to define if Jaeger Query component should be created. - |
- false | -
ingress | -object | -
- Ingress defines Jaeger Query Ingress options. - |
- false | -
Name | -Type | -Description | -Required | -
---|---|---|---|
annotations | -map[string]string | -
- Annotations defines the annotations of the Ingress object. - |
- false | -
host | -string | -
- Host defines the hostname of the Ingress object. - |
- false | -
ingressClassName | -string | -
- 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. - |
- false | -
route | -object | -
- Route defines OpenShift Route specific options. - |
- false | -
type | -enum | -
- Type defines the type of Ingress for the Jaeger Query UI. Currently ingress, route and none are supported. - - Enum: ingress, route - |
- false | -
Name | -Type | -Description | -Required | -
---|---|---|---|
termination | -enum | -
- Termination specifies the termination type. By default "edge" is used. - - Enum: insecure, edge, passthrough, reencrypt - |
- false | -
Name | -Type | -Description | -Required | -
---|---|---|---|
mode | -enum | -
- Mode defines the multitenancy mode. - - Enum: static, openshift - Default: static - |
- true | -
authentication | -[]object | -
- Authentication defines the tempo-gateway component authentication configuration spec per tenant. - |
- false | -
authorization | -object | -
- Authorization defines the tempo-gateway component authorization configuration spec per tenant. - |
- false | -
Name | -Type | -Description | -Required | -
---|---|---|---|
tenantId | -string | -
- TenantID defines the id of the tenant. - |
- true | -
tenantName | -string | -
- TenantName defines the name of the tenant. - |
- true | -
oidc | -object | -
- OIDC defines the spec for the OIDC tenant's authentication. - |
- false | -
Name | -Type | -Description | -Required | -
---|---|---|---|
groupClaim | -string | -
- Group claim field from ID Token - |
- false | -
issuerURL | -string | -
- IssuerURL defines the URL for issuer. - |
- false | -
redirectURL | -string | -
- RedirectURL defines the URL for redirect. - |
- false | -
secret | -object | -
- Secret defines the spec for the clientID, clientSecret and issuerCAPath for tenant's authentication. - |
- false | -
usernameClaim | -string | -
- User claim field from ID Token - |
- false | -
Name | -Type | -Description | -Required | -
---|---|---|---|
name | -string | -
- Name of a secret in the namespace configured for tenant secrets. - |
- false | -
Name | -Type | -Description | -Required | -
---|---|---|---|
roleBindings | -[]object | -
- RoleBindings defines configuration to bind a set of roles to a set of subjects. - |
- false | -
roles | -[]object | -
- Roles defines a set of permissions to interact with a tenant. - |
- false | -
Name | -Type | -Description | -Required | -
---|---|---|---|
name | -string | -
- - |
- true | -
roles | -[]string | -
- - |
- true | -
subjects | -[]object | -
- - |
- true | -
Name | -Type | -Description | -Required | -
---|---|---|---|
kind | -enum | -
- SubjectKind is a kind of Tempo Gateway RBAC subject. - - Enum: user, group - |
- true | -
name | -string | -
- - |
- true | -
Name | -Type | -Description | -Required | -
---|---|---|---|
name | -string | -
- - |
- true | -
permissions | -[]enum | -
- - |
- true | -
resources | -[]string | -
- - |
- true | -
tenants | -[]string | -
- - |
- true | -
Name | -Type | -Description | -Required | -
---|---|---|---|
components | -object | -
- Components provides summary of all Tempo pod status grouped per component. - |
- false | -
conditions | -[]object | -
- Conditions of the Tempo deployment health. - |
- false | -
tempoQueryVersion | -string | -
- Version of the Tempo Query component used. - |
- false | -
tempoVersion | -string | -
- Version of the managed Tempo instance. - |
- false | -
Name | -Type | -Description | -Required | -
---|---|---|---|
compactor | -map[string][]string | -
- Compactor is a map to the pod status of the compactor pod. - |
- false | -
distributor | -map[string][]string | -
- Distributor is a map to the per pod status of the distributor deployment - |
- false | -
gateway | -map[string][]string | -
- Gateway is a map to the per pod status of the query frontend deployment - |
- false | -
ingester | -map[string][]string | -
- Ingester is a map to the per pod status of the ingester statefulset - |
- false | -
querier | -map[string][]string | -
- Querier is a map to the per pod status of the querier deployment - |
- false | -
queryFrontend | -map[string][]string | -
- QueryFrontend is a map to the per pod status of the query frontend deployment - |
- false | -
Name | -Type | -Description | -Required | -
---|---|---|---|
lastTransitionTime | -string | -
- lastTransitionTime is the last time the condition transitioned from one status to another. This should be when the underlying condition changed. If that is not known, then using the time when the API field changed is acceptable. - - Format: date-time - |
- true | -
message | -string | -
- message is a human readable message indicating details about the transition. This may be an empty string. - |
- true | -
reason | -string | -
- reason contains a programmatic identifier indicating the reason for the condition's last transition. Producers of specific condition types may define expected values and meanings for this field, and whether the values are considered a guaranteed API. The value should be a CamelCase string. This field may not be empty. - |
- true | -
status | -enum | -
- status of the condition, one of True, False, Unknown. - - Enum: True, False, Unknown - |
- true | -
type | -string | -
- type of condition in CamelCase or in foo.example.com/CamelCase. --- Many .condition.type values are consistent across resources like Available, but because arbitrary conditions can be useful (see .node.status.conditions), the ability to deconflict is important. The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt) - |
- true | -
observedGeneration | -integer | -
- observedGeneration represents the .metadata.generation that the condition was set based upon. For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date with respect to the current state of the instance. - - Format: int64 - Minimum: 0 - |
- false | -
Package v1alpha1 contains API Schema definitions for the tempo v1alpha1 API group.
+ ++ +(Appears on:TenantsSpec) + +
+ +AuthenticationSpec defines the oidc configuration per tenant for tempo Gateway component.
+ +Field | + +Description | + +
---|---|
+
+tenantName + + + +string + + + + |
+
+
+
+ TenantName defines the name of the tenant. + + |
+
+
+tenantId + + + +string + + + + |
+
+
+
+ TenantID defines the id of the tenant. + + |
+
+
+oidc + + + + + +OIDCSpec + + + + + + |
+
+
+
+(Optional)
+
+ OIDC defines the spec for the OIDC tenant’s authentication. + + |
+
+ +(Appears on:TenantsSpec) + +
+ +AuthorizationSpec defines the opa, role bindings and roles +configuration per tenant for tempo Gateway component.
+ +Field | + +Description | + +
---|---|
+
+roles + + + + + +[]RoleSpec + + + + + + |
+
+
+
+(Optional)
+
+ Roles defines a set of permissions to interact with a tenant. + + |
+
+
+roleBindings + + + + + +[]RoleBindingsSpec + + + + + + |
+
+
+
+(Optional)
+
+ RoleBindings defines configuration to bind a set of roles to a set of subjects. + + |
+
+ +(Appears on:TempoStackStatus) + +
+ +ComponentStatus defines the status of each component.
+ +Field | + +Description | + +
---|---|
+
+compactor + + + + + +PodStatusMap + + + + + + |
+
+
+
+(Optional)
+
+ Compactor is a map to the pod status of the compactor pod. + + |
+
+
+distributor + + + + + +PodStatusMap + + + + + + |
+
+
+
+(Optional)
+
+ Distributor is a map to the per pod status of the distributor deployment + + |
+
+
+ingester + + + + + +PodStatusMap + + + + + + |
+
+
+
+(Optional)
+
+ Ingester is a map to the per pod status of the ingester statefulset + + |
+
+
+querier + + + + + +PodStatusMap + + + + + + |
+
+
+
+(Optional)
+
+ Querier is a map to the per pod status of the querier deployment + + |
+
+
+queryFrontend + + + + + +PodStatusMap + + + + + + |
+
+
+
+(Optional)
+
+ QueryFrontend is a map to the per pod status of the query frontend deployment + + |
+
+
+gateway + + + + + +PodStatusMap + + + + + + |
+
+
+
+(Optional)
+
+ Gateway is a map to the per pod status of the query frontend deployment + + |
+
string
alias)
+
+ConditionReason defines possible reasons for each condition.
+ +Value | + +Description | + +
---|---|
"CouldNotGetOpenShiftBaseDomain" |
+
+ReasonCouldNotGetOpenShiftBaseDomain when operator cannot get OpenShift base domain, that is used for OAuth redirect URL. + |
+
+
"CouldNotGetOpenShiftTLSPolicy" |
+
+ReasonCouldNotGetOpenShiftTLSPolicy when operator cannot get OpenShift TLS security cluster policy. + |
+
+
"FailedComponents" |
+
+ReasonFailedComponents when all/some Tempo components fail to roll out. + |
+
+
"InvalidStorageConfig" |
+
+ReasonInvalidStorageConfig defines that the object storage configuration is invalid (missing or incomplete storage secret). + |
+
+
"PendingComponents" |
+
+ReasonPendingComponents when all/some Tempo components pending dependencies. + |
+
+
"Ready" |
+
+ReasonReady defines a healthy tempo instance. + |
+
+
string
alias)
+
+ConditionStatus defines the status of a condition (e.g. ready or degraded).
+ +Value | + +Description | + +
---|---|
"Degraded" |
+
+ConditionDegraded defines that one or more components are in a degraded state. + |
+
+
"Failed" |
+
+ConditionFailed defines that one or more components are in a failed state. + |
+
+
"Pending" |
+
+ConditionPending defines that one or more components are in a degraded state. + |
+
+
"Ready" |
+
+ConditionReady defines that all components are ready. + |
+
+
Defaulter implements the CustomDefaulter interface.
+ +Field | + +Description | + +
---|---|
+
+ctrlConfig + + + + + +Feature Gates.ProjectConfig + + + + + + |
+
++ + | +
+ +(Appears on:RateLimitSpec) + +
+ +IngestionLimitSpec defines the limits applied at the ingestion path.
+ +Field | + +Description | + +
---|---|
+
+ingestionBurstSizeBytes + + + +int + + + + |
+
+
+
+(Optional)
+
+ IngestionBurstSizeBytes defines the burst size (bytes) used in ingestion. + + |
+
+
+ingestionRateLimitBytes + + + +int + + + + |
+
+
+
+(Optional)
+
+ IngestionRateLimitBytes defines the Per-user ingestion rate limit (bytes) used in ingestion. + + |
+
+
+maxBytesPerTrace + + + +int + + + + |
+
+
+
+(Optional)
+
+ MaxBytesPerTrace defines the maximum number of bytes of an acceptable trace. + + |
+
+
+maxTracesPerUser + + + +int + + + + |
+
+
+
+(Optional)
+
+ MaxTracesPerUser defines the maximum number of traces a user can send. + + |
+
string
alias)
+
++ +(Appears on:JaegerQueryIngressSpec) + +
+ +IngressType represents how a service should be exposed (ingress vs route).
+ +Value | + +Description | + +
---|---|
"ingress" |
+
+IngressTypeIngress specifies that an ingress entry should be created. + |
+
+
"" |
+
+IngressTypeNone specifies that no ingress or route entry should be created. + |
+
+
"route" |
+
+IngressTypeRoute specifies that a route entry should be created. + |
+
+
+ +(Appears on:JaegerQuerySpec) + +
+ +JaegerQueryIngressSpec defines Jaeger Query Ingress options.
+ +Field | + +Description | + +
---|---|
+
+type + + + + + +IngressType + + + + + + |
+
+
+
+(Optional)
+
+ Type defines the type of Ingress for the Jaeger Query UI. +Currently ingress, route and none are supported. + + |
+
+
+annotations + + + +map[string]string + + + + |
+
+
+
+(Optional)
+
+ Annotations defines the annotations of the Ingress object. + + |
+
+
+host + + + +string + + + + |
+
+
+
+(Optional)
+
+ Host defines the hostname of the Ingress object. + + |
+
+
+ingressClassName + + + +string + + + + |
+
+
+
+(Optional)
+
+ 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. + + |
+
+
+route + + + + + +JaegerQueryRouteSpec + + + + + + |
+
+
+
+(Optional)
+
+ Route defines OpenShift Route specific options. + + |
+
+ +(Appears on:JaegerQueryIngressSpec) + +
+ +JaegerQueryRouteSpec defines OpenShift Route specific options.
+ +Field | + +Description | + +
---|---|
+
+termination + + + + + +TLSRouteTerminationType + + + + + + |
+
+
+
+(Optional)
+
+ Termination specifies the termination type. By default “edge” is used. + + |
+
+ +(Appears on:TempoQueryFrontendSpec) + +
+ +JaegerQuerySpec defines Jaeger Query options.
+ +Field | + +Description | + +
---|---|
+
+enabled + + + +bool + + + + |
+
+
+
+(Optional)
+
+ Enabled is used to define if Jaeger Query component should be created. + + |
+
+
+ingress + + + + + +JaegerQueryIngressSpec + + + + + + |
+
+
+
+(Optional)
+
+ Ingress defines Jaeger Query Ingress options. + + |
+
+ +(Appears on:TempoStackSpec) + +
+ +LimitSpec defines Global and PerTenant rate limits.
+ +Field | + +Description | + +
---|---|
+
+perTenant + + + + + +map[string]github.com/os-observability/tempo-operator/apis/tempo/v1alpha1.RateLimitSpec + + + + + + |
+
+
+
+(Optional)
+
+ PerTenant is used to define rate limits per tenant. + + |
+
+
+global + + + + + +RateLimitSpec + + + + + + |
+
+
+
+(Optional)
+
+ Global is used to define global rate limits. + + |
+
string
alias)
+
++ +(Appears on:TenantsSpec) + +
+ +ModeType is the authentication/authorization mode in which Tempo Gateway +will be configured.
+ +Value | + +Description | + +
---|---|
"openshift" |
+
+OpenShift mode uses TokenReview API for authentication and subject access review for authorization. + |
+
+
"static" |
+
+Static mode asserts the Authorization Spec’s Roles and RoleBindings +using an in-process OpenPolicyAgent Rego authorizer. + |
+
+
+ +(Appears on:AuthenticationSpec) + +
+ +OIDCSpec defines the oidc configuration spec for Tempo Gateway component.
+ +Field | + +Description | + +
---|---|
+
+secret + + + + + +TenantSecretSpec + + + + + + |
+
+
+
+(Optional)
+
+ Secret defines the spec for the clientID, clientSecret and issuerCAPath for tenant’s authentication. + + |
+
+
+issuerURL + + + +string + + + + |
+
+
+
+(Optional)
+
+ IssuerURL defines the URL for issuer. + + |
+
+
+redirectURL + + + +string + + + + |
+
+
+
+(Optional)
+
+ RedirectURL defines the URL for redirect. + + |
+
+
+groupClaim + + + +string + + + + |
+
+
+
+(Optional)
+
+ Group claim field from ID Token + + |
+
+
+usernameClaim + + + +string + + + + |
+
+
+
+(Optional)
+
+ User claim field from ID Token + + |
+
+ +(Appears on:TempoStackSpec) + +
+ +ObjectStorageSpec defines the requirements to access the object +storage bucket to persist traces by the ingester component.
+ +Field | + +Description | + +
---|---|
+
+tls + + + + + +ObjectStorageTLSSpec + + + + + + |
+
+
+
+(Optional)
+
+ TLS configuration for reaching the object storage endpoint. + + |
+
+
+secret + + + +string + + + + |
+
+
+
+ Secret for object storage authentication. +Name of a secret in the same namespace as the tempo TempoStack custom resource. + + |
+
+ +(Appears on:ObjectStorageSpec) + +
+ +ObjectStorageTLSSpec is the TLS configuration for reaching the object storage endpoint.
+ +Field | + +Description | + +
---|---|
+
+caName + + + +string + + + + |
+
+
+
+(Optional)
+
+ CA is the name of a ConfigMap containing a CA certificate. +It needs to be in the same namespace as the Tempo custom resource. + + |
+
string
alias)
+
++ +(Appears on:RoleSpec) + +
+ +PermissionType is a Tempo Gateway RBAC permission.
+ +Value | + +Description | + +
---|---|
"read" |
+
+Read gives access to read data from a tenant. + |
+
+
"write" |
+
+Write gives access to write data to a tenant. + |
+
+
map[k8s.io/api/core/v1.PodPhase][]string
alias)
+
++ +(Appears on:ComponentStatus) + +
+ +PodStatusMap defines the type for mapping pod status to pod name.
+ ++ +(Appears on:RateLimitSpec) + +
+ +QueryLimit defines query limits.
+ +Field | + +Description | + +
---|---|
+
+maxBytesPerTagValues + + + +int + + + + |
+
+
+
+(Optional)
+
+ MaxBytesPerTagValues defines the maximum size in bytes of a tag-values query. + + |
+
+
+maxSearchBytesPerTrace + + + +int + + + + |
+
+
+
+(Optional)
+
+ MaxSearchBytesPerTrace defines the maximum size of search data for a single
+trace in bytes.
+default: |
+
+ +(Appears on:LimitSpec) + +
+ +RateLimitSpec defines rate limits for Ingestion and Query components.
+ +Field | + +Description | + +
---|---|
+
+ingestion + + + + + +IngestionLimitSpec + + + + + + |
+
+
+
+(Optional)
+
+ Ingestion is used to define ingestion rate limits. + + |
+
+
+query + + + + + +QueryLimit + + + + + + |
+
+
+
+(Optional)
+
+ Query is used to define query rate limits. + + |
+
+ +(Appears on:TempoStackSpec) + +
+ +Resources defines resources configuration.
+ +Field | + +Description | + +
---|---|
+
+total + + + + + +Kubernetes core/v1.ResourceRequirements + + + + + + |
+
+
+
+(Optional)
+
+ 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. + + |
+
+ +(Appears on:RetentionSpec) + +
+ +RetentionConfig defines how long data should be provided.
+ +Field | + +Description | + +
---|---|
+
+traces + + + + + +Kubernetes meta/v1.Duration + + + + + + |
+
+
+
+(Optional)
+
+ Traces defines retention period. Supported parameter suffixes are “s”, “m” and “h”. +example: 336h +default: value is 48h. + + |
+
+ +(Appears on:TempoStackSpec) + +
+ +RetentionSpec defines global and per tenant retention configurations.
+ +Field | + +Description | + +
---|---|
+
+perTenant + + + + + +map[string]github.com/os-observability/tempo-operator/apis/tempo/v1alpha1.RetentionConfig + + + + + + |
+
+
+
+(Optional)
+
+ PerTenant is used to configure retention per tenant. + + |
+
+
+global + + + + + +RetentionConfig + + + + + + |
+
+
+
+(Optional)
+
+ Global is used to configure global retention. + + |
+
+ +(Appears on:AuthorizationSpec) + +
+ +RoleBindingsSpec binds a set of roles to a set of subjects.
+ +Field | + +Description | + +
---|---|
+
+name + + + +string + + + + |
+
++ + | +
+
+subjects + + + + + +[]Subject + + + + + + |
+
++ + | +
+
+roles + + + +[]string + + + + |
+
++ + | +
+ +(Appears on:AuthorizationSpec) + +
+ +RoleSpec describes a set of permissions to interact with a tenant.
+ +Field | + +Description | + +
---|---|
+
+name + + + +string + + + + |
+
++ + | +
+
+resources + + + +[]string + + + + |
+
++ + | +
+
+tenants + + + +[]string + + + + |
+
++ + | +
+
+permissions + + + + + +[]PermissionType + + + + + + |
+
++ + | +
+ +(Appears on:TempoStackSpec) + +
+ +SearchSpec specified the global search parameters.
+ +Field | + +Description | + +
---|---|
+
+defaultResultLimit + + + +int + + + + |
+
+
+
+(Optional)
+
+ Limit used for search requests if none is set by the caller (default: 20) + + |
+
+
+maxDuration + + + + + +Kubernetes meta/v1.Duration + + + + + + |
+
+
+
+(Optional)
+
+ The maximum allowed time range for a search, default: 0s which means unlimited. + + |
+
+
+maxResultLimit + + + +int + + + + |
+
+
+
+(Optional)
+
+ 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. + + |
+
+ +(Appears on:RoleBindingsSpec) + +
+ +Subject represents a subject that has been bound to a role.
+ +Field | + +Description | + +
---|---|
+
+name + + + +string + + + + |
+
++ + | +
+
+kind + + + + + +SubjectKind + + + + + + |
+
++ + | +
string
alias)
+
++ +(Appears on:Subject) + +
+ +SubjectKind is a kind of Tempo Gateway RBAC subject.
+ +Value | + +Description | + +
---|---|
"group" |
+
+Group represents a subject that is a group. + |
+
+
"user" |
+
+User represents a subject that is a user. + |
+
+
string
alias)
+
++ +(Appears on:JaegerQueryRouteSpec) + +
+ +TLSRouteTerminationType is used to indicate which TLS settings should be used.
+ +Value | + +Description | + +
---|---|
"edge" |
+
+TLSRouteTerminationTypeEdge indicates that encryption should be terminated +at the edge router. + |
+
+
"insecure" |
+
+TLSRouteTerminationTypeInsecure indicates that insecure connections are allowed. + |
+
+
"passthrough" |
+
+TLSRouteTerminationTypePassthrough indicates that the destination service is +responsible for decrypting traffic. + |
+
+
"reencrypt" |
+
+TLSRouteTerminationTypeReencrypt indicates that traffic will be decrypted on the edge +and re-encrypt using a new certificate. + |
+
+
+ +(Appears on:TempoComponentsSpec, TempoGatewaySpec, TempoQueryFrontendSpec) + +
+ +TempoComponentSpec defines specific schedule settings for tempo components.
+ +Field | + +Description | + +
---|---|
+
+replicas + + + +int32 + + + + |
+
+
+
+(Optional)
+
+ Replicas represents the number of replicas to create for this component. + + |
+
+
+nodeSelector + + + +map[string]string + + + + |
+
+
+
+(Optional)
+
+ NodeSelector is the simplest recommended form of node selection constraint. + + |
+
+
+tolerations + + + + + +[]Kubernetes core/v1.Toleration + + + + + + |
+
+
+
+(Optional)
+
+ Tolerations defines component specific pod tolerations. + + |
+
+ +(Appears on:TempoStackSpec) + +
+ +TempoComponentsSpec defines the template of all requirements to configure +scheduling of all Tempo components to be deployed.
+ +Field | + +Description | + +
---|---|
+
+distributor + + + + + +TempoComponentSpec + + + + + + |
+
+
+
+(Optional)
+
+ Distributor defines the distributor component spec. + + |
+
+
+ingester + + + + + +TempoComponentSpec + + + + + + |
+
+
+
+(Optional)
+
+ Ingester defines the ingester component spec. + + |
+
+
+compactor + + + + + +TempoComponentSpec + + + + + + |
+
+
+
+(Optional)
+
+ Compactor defines the tempo compactor component spec. + + |
+
+
+querier + + + + + +TempoComponentSpec + + + + + + |
+
+
+
+(Optional)
+
+ Querier defines the querier component spec. + + |
+
+
+queryFrontend + + + + + +TempoQueryFrontendSpec + + + + + + |
+
+
+
+(Optional)
+
+ TempoQueryFrontendSpec defines the query frontend spec. + + |
+
+
+gateway + + + + + +TempoGatewaySpec + + + + + + |
+
+
+
+(Optional)
+
+ Gateway defines the tempo gateway spec. + + |
+
+ +(Appears on:TempoComponentsSpec) + +
+ +TempoGatewaySpec extends TempoComponentSpec with gateway parameters.
+ +Field | + +Description | + +
---|---|
+
+component + + + + + +TempoComponentSpec + + + + + + |
+
+
+
+(Optional)
+
+ 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 + + |
+
+
+enabled + + + +bool + + + + |
+
++ + | +
+ +(Appears on:TempoComponentsSpec) + +
+ +TempoQueryFrontendSpec extends TempoComponentSpec with frontend specific parameters.
+ +Field | + +Description | + +
---|---|
+
+component + + + + + +TempoComponentSpec + + + + + + |
+
+
+
+(Optional)
+
+ 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 + + |
+
+
+jaegerQuery + + + + + +JaegerQuerySpec + + + + + + |
+
+
+
+(Optional)
+
+ JaegerQuerySpec defines Jaeger Query specific options. + + |
+
TempoStack is the Schema for the tempostacks API.
+ +Field | + +Description | + +
---|---|
+
+status + + + + + +TempoStackStatus + + + + + + |
+
++ + | +
+
+metadata + + + + + +Kubernetes meta/v1.ObjectMeta + + + + + + |
+
+
+
+Refer to the Kubernetes API documentation for the fields of the
+
+metadata field.
+
+ |
+
+
+spec + + + + + +TempoStackSpec + + + + + + |
+
++ + | +
+ +(Appears on:TempoStack) + +
+ +TempoStackSpec defines the desired state of TempoStack.
+ +Field | + +Description | + +
---|---|
+
+limits + + + + + +LimitSpec + + + + + + |
+
+
+
+(Optional)
+
+ LimitSpec is used to limit ingestion and querying rates. + + |
+
+
+storageClassName + + + +string + + + + |
+
+
+
+(Optional)
+
+ StorageClassName for PVCs used by ingester. Defaults to nil (default storage class in the cluster). + + |
+
+
+resources + + + + + +Resources + + + + + + |
+
+
+
+(Optional)
+
+ Resources defines resources configuration. + + |
+
+
+storageSize + + + +k8s.io/apimachinery/pkg/api/resource.Quantity + + + + |
+
+
+
+(Optional)
+
+ StorageSize for PVCs used by ingester. Defaults to 10Gi. + + |
+
+
+images + + + + + +Feature Gates.ImagesSpec + + + + + + |
+
+
+
+(Optional)
+
+ Images defines the image for each container. + + |
+
+
+storage + + + + + +ObjectStorageSpec + + + + + + |
+
+
+
+ Storage defines S3 compatible object storage configuration. +User is required to create secret and supply it. + + |
+
+
+retention + + + + + +RetentionSpec + + + + + + |
+
+
+
+(Optional)
+
+ NOTE: currently this field is not considered. +Retention period defined by dataset. +User can specify how long data should be stored. + + |
+
+
+serviceAccount + + + +string + + + + |
+
+
+
+(Optional)
+
+ ServiceAccount defines the service account to use for all tempo components. + + |
+
+
+search + + + + + +SearchSpec + + + + + + |
+
+
+
+(Optional)
+
+ SearchSpec control the configuration for the search capabilities. + + |
+
+
+template + + + + + +TempoComponentsSpec + + + + + + |
+
+
+
+(Optional)
+
+ Components defines requirements for a set of tempo components. + + |
+
+
+replicationFactor + + + +int + + + + |
+
+
+
+(Optional)
+
+ NOTE: currently this field is not considered. +ReplicationFactor is used to define how many component replicas should exist. + + |
+
+
+tenants + + + + + +TenantsSpec + + + + + + |
+
+
+
+(Optional)
+
+ Tenants defines the per-tenant authentication and authorization spec. + + |
+
+ +(Appears on:TempoStack) + +
+ +TempoStackStatus defines the observed state of TempoStack.
+ +Field | + +Description | + +
---|---|
+
+tempoVersion + + + +string + + + + |
+
+
+
+(Optional)
+
+ Version of the managed Tempo instance. + + |
+
+
+tempoQueryVersion + + + +string + + + + |
+
+
+
+(Optional)
+
+ Version of the Tempo Query component used. + + |
+
+
+components + + + + + +ComponentStatus + + + + + + |
+
+
+
+(Optional)
+
+ Components provides summary of all Tempo pod status grouped +per component. + + |
+
+
+conditions + + + + + +[]Kubernetes meta/v1.Condition + + + + + + |
+
+
+
+(Optional)
+
+ Conditions of the Tempo deployment health. + + |
+
+ +(Appears on:OIDCSpec) + +
+ +TenantSecretSpec is a secret reference containing name only +for a secret living in the same namespace as the (Tempo) TempoStack custom resource.
+ +Field | + +Description | + +
---|---|
+
+name + + + +string + + + + |
+
+
+
+(Optional)
+
+ Name of a secret in the namespace configured for tenant secrets. + + |
+
+ +(Appears on:TempoStackSpec) + +
+ +TenantsSpec defines the mode, authentication and authorization +configuration of the tempo gateway component.
+ +Field | + +Description | + +
---|---|
+
+mode + + + + + +ModeType + + + + + + |
+
+
+
+ Mode defines the multitenancy mode. + + |
+
+
+authentication + + + + + +[]AuthenticationSpec + + + + + + |
+
+
+
+(Optional)
+
+ Authentication defines the tempo-gateway component authentication configuration spec per tenant. + + |
+
+
+authorization + + + + + +AuthorizationSpec + + + + + + |
+
+
+
+(Optional)
+
+ Authorization defines the tempo-gateway component authorization configuration spec per tenant. + + |
+
Package v1alpha1 contains API Schema definitions for the config.tempo v1alpha1 API group.
+ ++ +(Appears on:FeatureGates) + +
+ +BuiltInCertManagement is the configuration for the built-in facility to generate and rotate +TLS client and serving certificates for all Tempo services and internal clients except +for the tempo-gateway.
+ +Field | + +Description | + +
---|---|
+
+caValidity + + + + + +Kubernetes meta/v1.Duration + + + + + + |
+
+
+
+ CACertValidity defines the total duration of the CA certificate validity. + + |
+
+
+caRefresh + + + + + +Kubernetes meta/v1.Duration + + + + + + |
+
+
+
+ CACertRefresh defines the duration of the CA certificate validity until a rotation +should happen. It can be set up to 80% of CA certificate validity or equal to the +CA certificate validity. Latter should be used only for rotating only when expired. + + |
+
+
+certValidity + + + + + +Kubernetes meta/v1.Duration + + + + + + |
+
+
+
+ CertValidity defines the total duration of the validity for all Tempo certificates. + + |
+
+
+certRefresh + + + + + +Kubernetes meta/v1.Duration + + + + + + |
+
+
+
+ CertRefresh defines the duration of the certificate validity until a rotation +should happen. It can be set up to 80% of certificate validity or equal to the +certificate validity. Latter should be used only for rotating only when expired. +The refresh is applied to all Tempo certificates at once. + + |
+
+
+enabled + + + +bool + + + + |
+
+
+
+ Enabled defines to flag to enable/disable built-in certificate management feature gate. + + |
+
+ +(Appears on:ProjectConfig) + +
+ +FeatureGates is the supported set of all operator feature gates.
+ +Field | + +Description | + +
---|---|
+
+openshift + + + + + +OpenShiftFeatureGates + + + + + + |
+
+
+
+ OpenShift contains a set of feature gates supported only on OpenShift. + + |
+
+
+builtInCertManagement + + + + + +BuiltInCertManagement + + + + + + |
+
+
+
+ BuiltInCertManagement enables the built-in facility for generating and rotating
+TLS client and serving certificates for the communication between ingesters and distributors and also between
+query and queryfrontend, In detail all internal Tempo HTTP and GRPC communication is lifted
+to require mTLS.
+In addition each service requires a configmap named as the MicroService CR with the
+suffix |
+
+
+httpEncryption + + + +bool + + + + |
+
+
+
+ HTTPEncryption enables TLS encryption for all HTTP TempoStack services.
+Each HTTP service requires a secret named as the service with the following data:
+- |
+
+
+grpcEncryption + + + +bool + + + + |
+
+
+
+ GRPCEncryption enables TLS encryption for all GRPC TempoStack services.
+Each GRPC service requires a secret named as the service with the following data:
+- |
+
+
+tlsProfile + + + +string + + + + |
+
+
+
+ TLSProfile allows to chose a TLS security profile. Enforced +when using HTTPEncryption or GRPCEncryption. + + |
+
+ +(Appears on:ProjectConfig) + +
+ +ImagesSpec defines the image for each container.
+ +Field | + +Description | + +
---|---|
+
+tempo + + + +string + + + + |
+
+
+
+(Optional)
+
+ Tempo defines the tempo container image. + + |
+
+
+tempoQuery + + + +string + + + + |
+
+
+
+(Optional)
+
+ TempoQuery defines the tempo-query container image. + + |
+
+
+tempoGateway + + + +string + + + + |
+
+
+
+(Optional)
+
+ TempoGateway defines the tempo-gateway container image. + + |
+
+ +(Appears on:FeatureGates) + +
+ +OpenShiftFeatureGates is the supported set of all operator features gates on OpenShift.
+ +Field | + +Description | + +
---|---|
+
+servingCertsService + + + +bool + + + + |
+
+
+
+ ServingCertsService enables OpenShift service-ca annotations on the TempoStack gateway service only +to use the in-platform CA and generate a TLS cert/key pair per service for +in-cluster data-in-transit encryption. +More details: https://docs.openshift.com/container-platform/latest/security/certificate_types_descriptions/service-ca-certificates.html + + |
+
+
+gatewayRoute + + + +bool + + + + |
+
+
+
+ GatewayRoute enables creating an OpenShift Route for the TempoStack +gateway to expose the service to public internet access. +More details: https://docs.openshift.com/container-platform/latest/networking/understanding-networking.html + + |
+
+
+openshiftRoute + + + +bool + + + + |
+
+
+
+ OpenShiftRoute enables creating OpenShift Route objects. +More details: https://docs.openshift.com/container-platform/latest/networking/understanding-networking.html + + |
+
+
+baseDomain + + + +string + + + + |
+
+
+
+ BaseDomain is used internally for redirect URL in gateway OpenShift auth mode. +If empty the operator automatically derives the domain from the cluster. + + |
+
+
+ClusterTLSPolicy + + + +bool + + + + |
+
+
+
+ ClusterTLSPolicy enables usage of TLS policies set in the API Server. +More details: https://docs.openshift.com/container-platform/4.11/security/tls-security-profiles.html + + |
+
ProjectConfig is the Schema for the projectconfigs API.
+ +Field | + +Description | + +
---|---|
+
+syncPeriod + + + + + +Kubernetes meta/v1.Duration + + + + + + |
+
+
+
+(Optional)
+
+ SyncPeriod determines the minimum frequency at which watched resources are +reconciled. A lower period will correct entropy more quickly, but reduce +responsiveness to change if there are many watched resources. Change this +value only if you know what you are doing. Defaults to 10 hours if unset. +there will a 10 percent jitter between the SyncPeriod of all controllers +so that all controllers will not send list requests simultaneously. + + |
+
+
+leaderElection + + + + + +Kubernetes v1alpha1.LeaderElectionConfiguration + + + + + + |
+
+
+
+(Optional)
+
+ LeaderElection is the LeaderElection config to be used when configuring +the manager.Manager leader election + + |
+
+
+cacheNamespace + + + +string + + + + |
+
+
+
+(Optional)
+
+ CacheNamespace if specified restricts the manager’s cache to watch objects in +the desired namespace Defaults to all namespaces + +Note: If a namespace is specified, controllers can still Watch for a +cluster-scoped resource (e.g Node). For namespaced resources the cache +will only hold objects from the desired namespace. + + |
+
+
+gracefulShutDown + + + + + +Kubernetes meta/v1.Duration + + + + + + |
+
+
+
+ GracefulShutdownTimeout is the duration given to runnable to stop before the manager actually returns on stop. +To disable graceful shutdown, set to time.Duration(0) +To use graceful shutdown without timeout, set to a negative duration, e.G. time.Duration(-1) +The graceful shutdown is skipped for safety reasons in case the leader election lease is lost. + + |
+
+
+controller + + + + + +K8S Controller-runtime v1alpha1.ControllerConfigurationSpec + + + + + + |
+
+
+
+(Optional)
+
+ Controller contains global configuration options for controllers +registered within this manager. + + |
+
+
+metrics + + + + + +K8S Controller-runtime v1alpha1.ControllerMetrics + + + + + + |
+
+
+
+(Optional)
+
+ Metrics contains thw controller metrics configuration + + |
+
+
+health + + + + + +K8S Controller-runtime v1alpha1.ControllerHealth + + + + + + |
+
+
+
+(Optional)
+
+ Health contains the controller health configuration + + |
+
+
+webhook + + + + + +K8S Controller-runtime v1alpha1.ControllerWebhook + + + + + + |
+
+
+
+(Optional)
+
+ Webhook contains the controllers webhook configuration + + |
+
+
+images + + + + + +ImagesSpec + + + + + + |
+
++ + | +
+
+featureGates + + + + + +FeatureGates + + + + + + |
+
++ + | +
string
alias)
+
+TLSProfileType is a TLS security profile based on the Mozilla definitions: +https://wiki.mozilla.org/Security/Server_Side_TLS
+ +Value | + +Description | + +
---|---|
"Intermediate" |
+
+TLSProfileIntermediateType is a TLS security profile based on: +https://wiki.mozilla.org/Security/Server_Side_TLS#Intermediate_compatibility_.28default.29 + |
+
+
"Modern" |
+
+TLSProfileModernType is a TLS security profile based on: +https://wiki.mozilla.org/Security/Server_Side_TLS#Modern_compatibility + |
+
+
"Old" |
+
+TLSProfileOldType is a TLS security profile based on: +https://wiki.mozilla.org/Security/Server_Side_TLS#Old_backward_compatibility + |
+
+
{{ .Params.lead | safeHTML }}
+ Get started + +Secure and multi-tenant Tempo instances with built-in authentication/authorization
+