Files
renovate-sh-app[bot]zeekayrenovate-sh-app[bot] <219655108+renovate-sh-app[bot]@users.noreply.github.com>
3c806ece15 chore(deps): lock file maintenance (#6526)
Signed-off-by: renovate-sh-app[bot] <219655108+renovate-sh-app[bot]@users.noreply.github.com>
Co-authored-by: renovate-sh-app[bot] <219655108+renovate-sh-app[bot]@users.noreply.github.com>
2026-02-22 00:55:26 -08:00
..

Deploy Grafana Tempo with Jsonnet and Tanka

You can use Tanka and jsonnet-bundler to generate Kubernetes YAML manifests from the jsonnet files.

  1. Install tanka and jb:

    Follow the steps at https://tanka.dev/install. If you have go installed locally you can also use:

# make sure to be outside of GOPATH or a go.mod project
go install github.com/grafana/tanka/cmd/tk@latest
go install github.com/jsonnet-bundler/jsonnet-bundler/cmd/jb@latest
  1. Set up a Jsonnet project, based on the example that follows:
  • Initialize Tanka
  • Install Grafana Tempo and Kubernetes Jsonnet libraries
  • Set up an environment
#!/usr/bin/env bash
# SPDX-License-Identifier: AGPL-3.0-only

set -e

# Initialise the Tanka.
mkdir jsonnet-example && cd jsonnet-example
tk init --k8s=1.26

# Install Tempo jsonnet.
jb install github.com/grafana/tempo/operations/jsonnet/microservices@main
jb install github.com/grafana/jsonnet-libs/memcached

# Use the provided example. In tempo repository in operations/jsonnet-compiled
cp operations/jsonnet-compliled/util/example/main.jsonnet environments/default/main.jsonnet

# Generate the YAML manifests.
export PAGER=cat
tk show environments/default
  1. Generate the Kubernetes YAML manifests and store them in the ./manifests directory:

    # Generate the YAML manifests:
    export PAGER=cat
    tk show environments/default
    tk export manifests environments/default
    
  2. Configure the environment specification file at environments/default/spec.json.

To learn about how to use Tanka and to configure the spec.json file, see Using Jsonnet: Creating a new project.

  1. Deploy the manifests to a Kubernetes cluster, in one of two ways:

    • Use the tk apply command.

    Tanka supports commands to show the diff and apply changes to a Kubernetes cluster:

    # Show the difference between your Jsonnet definition and your Kubernetes cluster:
    tk diff environments/default
    
    # Apply changes to your Kubernetes cluster:
    tk apply environments/default
    
    • Use the kubectl apply command.

    You generated the Kubernetes manifests and stored them in the ./manifests directory in the previous step.

    You can run the following command to directly apply these manifests to your Kubernetes cluster:

    # Review the changes that will apply to your Kubernetes cluster:
    kubectl apply --dry-run=client -k manifests/
    
    # Apply the changes to your Kubernetes cluster:
    kubectl apply -k manifests/