Deploy Grafana Mimir with Jsonnet and Tanka
You can use Tanka and jsonnet-bundler to generate Kubernetes YAML manifests from the jsonnet files.
Install
tanka
andjb
: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
Set up a Jsonnet project, based on the example that follows:
- Initialize Tanka
- Install Grafana Mimir 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.29 # Install Mimir jsonnet. jb install github.com/grafana/mimir/operations/mimir@main # Use the provided example. cp vendor/mimir/mimir-manifests.jsonnet.example environments/default/main.jsonnet # Generate the YAML manifests. export PAGER=cat tk show environments/default
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
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.Deploy the manifests to a Kubernetes cluster, in one of two ways:
Use the
tk apply
command.Tanka supports commands to show the
diff
andapply
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/
Note
The generated Kubernetes manifests create resources in thedefault
namespace. To use a different namespace, change thenamespace
configuration option in theenvironments/default/main.jsonnet
file, and re-generate the Kubernetes manifests.Warning
A Jsonnet-based installation uses etcd for the HA tracker by default. The Jsonnet-based installation creates the etcd using the etcd-operator. Before applying thetk apply
orkubectl apply
command, make sure that you have the etcd-operator running in your Kubernetes cluster.