# Single-process Tempo with local storage for short-lived lab traces. --- apiVersion: v1 kind: ConfigMap metadata: name: tempo labels: app.kubernetes.io/name: tempo data: tempo.yaml: | server: http_listen_port: 3200 distributor: receivers: otlp: protocols: grpc: endpoint: 0.0.0.0:4317 storage: trace: backend: local wal: path: /var/tempo/wal local: path: /var/tempo/traces --- apiVersion: v1 kind: Service metadata: name: tempo labels: app.kubernetes.io/name: tempo spec: selector: app.kubernetes.io/name: tempo ports: - name: http port: 3200 targetPort: http - name: otlp-grpc port: 4317 targetPort: otlp-grpc --- apiVersion: apps/v1 kind: Deployment metadata: name: tempo labels: app.kubernetes.io/name: tempo spec: replicas: 1 selector: matchLabels: app.kubernetes.io/name: tempo template: metadata: labels: app.kubernetes.io/name: tempo spec: automountServiceAccountToken: false securityContext: runAsUser: 10001 runAsGroup: 10001 runAsNonRoot: true fsGroup: 10001 seccompProfile: type: RuntimeDefault containers: - name: tempo image: grafana/tempo:3.0.3 args: ["-config.file=/etc/tempo/tempo.yaml"] ports: - name: http containerPort: 3200 - name: otlp-grpc containerPort: 4317 readinessProbe: httpGet: path: /ready port: http initialDelaySeconds: 5 periodSeconds: 5 volumeMounts: - name: config mountPath: /etc/tempo readOnly: true - name: data mountPath: /var/tempo securityContext: allowPrivilegeEscalation: false capabilities: drop: ["ALL"] readOnlyRootFilesystem: true resources: requests: cpu: 25m memory: 128Mi limits: memory: 384Mi volumes: - name: config configMap: name: tempo - name: data emptyDir: {}