Install cert-manager and OpenTelemetry Operator:
kubectl apply -f https://github.com/cert-manager/cert-manager/releases/download/v1.13.3/cert-manager.yaml
kubectl apply -f https://github.com/open-telemetry/opentelemetry-operator/releases/latest/download/opentelemetry-operator.yamlAdd Uptrace Helm repo:
helm repo add uptrace https://charts.uptrace.dev
helm repo update uptraceInstall Uptrace:
helm install -n uptrace --create-namespace my-uptrace uptrace/uptraceView available pods and logs:
kubectl get pods -n uptrace
kubectl logs my-uptrace-0 -n uptraceThe Uptrace UI is served via the Ingress on http://uptrace.local:
kubectl get -n uptrace ingress
NAME         CLASS   HOSTS           ADDRESS        PORTS   AGE
my-uptrace   nginx   uptrace.local   192.168.49.2   80      73sIf you don't have a Kubernetes Cluster, create one with minikube.
To install Helm, see Helm Installation guide.
To add Uptrace Helm repository:
helm repo add uptrace https://charts.uptrace.devTo install Uptrace chart in uptrace namespace:
helm install -n uptrace --create-namespace my-uptrace uptrace/uptraceTo list Uptrace pods:
kubectl get pods -n uptrace
NAME                      READY   STATUS    RESTARTS   AGE
clickhouse-my-uptrace-0   1/1     Running   0          59s
my-uptrace-0              1/1     Running   0          59s
my-uptrace-zookeeper-0    1/1     Running   0          59sTo view Uptrace logs:
kubectl logs my-uptrace-0 -n uptraceTo fetch information about latest charts from the Helm repositories:
helm repo updateTo upgrade to the latest available version:
helm -n uptrace upgrade my-uptrace uptrace/uptraceUptrace creates an ingress rule for uptrace.local domain.
First, enable ingress controller:
minikube addons enable ingressThen, make sure the pods are running:
kubectl get pods -n ingress-nginxLastly, update /etc/hosts using the minikube IP address and open
http://uptrace.local:
$(minikube ip)    uptrace.local
Then open http://uptrace.local/.
You can change Uptrace config by creating override-values.yaml and providing Uptrace config in
uptrace.config YAML option.
For example, to use your own ClickHouse database, create override-values.yaml with the following
content:
clickhouse:
  enabled: false
uptrace:
  config:
    ch:
      addr: clickhouse-host:9000
      user: default
      password:
      database: uptraceThen install Uptrace:
helm --namespace uptrace install my-uptrace uptrace/uptrace -f override-values.yamlSee values.yaml for all available configuration options.
Create clickhouse-values.yaml:
shards: 1
auth:
  username: default
  password: testThen launch a ClickHouse cluster:
helm install -n uptrace clickhouse oci://registry-1.docker.io/bitnamicharts/clickhouse -f clickhouse-values.yamlCreate uptrace-values.yaml:
replicaCount: 3
uptrace:
  config:
    ch:
      addr: clickhouse-headless:9000
      user: default
      password: test
      database: default
    ch_schema:
      replicated: true
      cluster: default
clickhouse:
  enabled: falseThen launch Uptrace:
helm install -n uptrace uptrace uptrace/uptrace -f uptrace-values.yamlTo connect to the ClickHouse database:
kubectl port-forward --namespace uptrace service/clickhouse-headless 9000:9000 &
clickhouse-clientTo deploy Uptrace on AWS EKS and provide external access using the AWS LB Controller annotations:
service:
  type: LoadBalancer
  port: 80
  loadBalancerSourceRanges:
    - '0.0.0.0/0'
  annotations:
    service.beta.kubernetes.io/aws-load-balancer-type: 'external'
    service.beta.kubernetes.io/aws-load-balancer-nlb-target-type: 'ip'
    service.beta.kubernetes.io/aws-load-balancer-target-group-attributes: 'preserve_client_ip.enabled=true'
    service.beta.kubernetes.io/aws-load-balancer-backend-protocol: 'http'
    service.beta.kubernetes.io/aws-load-balancer-healthcheck-protocol: 'http'
    service.beta.kubernetes.io/aws-load-balancer-healthcheck-port: '14318'
    service.beta.kubernetes.io/aws-load-balancer-healthcheck-path: '/'To uninstall Uptrace chart:
helm -n uptrace uninstall my-uptraceTo delete Uptrace namespace:
kubectl delete namespace uptrace