使用 Jsonnet 和 Tanka 部署 Grafana Mimir
您可以使用 Tanka 和 jsonnet-bundler 从 Jsonnet 文件生成 Kubernetes YAML 清单。
安装
tanka
和jb
按照 https://tanka.dev/install 的步骤进行。如果您在本地安装了
go
,您也可以使用# 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
根据以下示例设置 Jsonnet 项目
- 初始化 Tanka
- 安装 Grafana Mimir 和 Kubernetes Jsonnet 库
- 设置环境
#!/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
生成 Kubernetes YAML 清单并将其存储在
./manifests
目录中# Generate the YAML manifests: export PAGER=cat tk show environments/default tk export manifests environments/default
配置位于
environments/default/spec.json
的环境规范文件。要了解如何使用 Tanka 以及如何配置
spec.json
文件,请参阅 使用 Jsonnet:创建新项目。通过以下两种方式之一将清单部署到 Kubernetes 集群
使用
tk apply
命令.Tanka 支持使用
diff
和apply
命令来查看和应用更改到 Kubernetes 集群# 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
使用
kubectl apply
命令.您在上一步中生成了 Kubernetes 清单并将其存储在
./manifests
目录中。您可以运行以下命令将这些清单直接应用到您的 Kubernetes 集群
# 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/
注意
生成的 Kubernetes 清单在
default
命名空间中创建资源。要使用不同的命名空间,请更改environments/default/main.jsonnet
文件中的namespace
配置选项,然后重新生成 Kubernetes 清单。警告
基于 Jsonnet 的安装默认使用 etcd 作为 HA tracker。基于 Jsonnet 的安装使用 etcd-operator 创建 etcd。在应用
tk apply
或kubectl apply
命令之前,请确保您的 Kubernetes 集群中正在运行 etcd-operator。