This is a Kubernetes operator for Grafana Tempo.
- Resource Limits - Specify overall resource requests and limits in the
TempoStack
CR; the operator assigns fractions of it to each component - AuthN and AuthZ - Supports OpenID Control (OIDC) and role-based access control (RBAC)
- Managed upgrades - Updating the operator will automatically update all managed Tempo clusters
- Multitenancy - Multiple tenants can send traces to the same Tempo cluster
- mTLS - Communication between the Tempo components can be secured via mTLS
- Jaeger UI - Traces can be visualized in Jaeger UI and exposed via Ingress or OpenShift Route
- Observability - The operator and
TempoStack
operands expose telemetry (metrics, traces) and integrate with PrometheusServiceMonitor
andPrometheusRule
-
Install cert-manager and minio:
make cert-manager deploy-minio
-
Build and deploy operator:
IMG_PREFIX=docker.io/${USER} OPERATOR_VERSION=$(date +%s).0.0 make docker-build docker-push deploy
- Create a secret for minio in the namespace you are using:
kubectl apply -f - <<EOF
apiVersion: v1
kind: Secret
metadata:
name: minio-test
stringData:
endpoint: http://minio.minio.svc:9000
bucket: tempo
access_key_id: tempo
access_key_secret: supersecret
type: Opaque
EOF
- Create Tempo CR:
kubectl apply -f - <<EOF
apiVersion: tempo.grafana.com/v1alpha1
kind: TempoStack
metadata:
name: simplest
spec:
storage:
secret:
name: minio-test
type: s3
storageSize: 1Gi
resources:
total:
limits:
memory: 2Gi
cpu: 2000m
template:
queryFrontend:
jaegerQuery:
enabled: true
EOF