菜单
开源 此页面包含适用于开源版本的内容。

使用 Jsonnet 和 Tanka 部署 Grafana Mimir

您可以使用 Tankajsonnet-bundler 从 Jsonnet 文件生成 Kubernetes YAML 清单。

  1. 安装 tankajb

    按照 https://tanka.dev/install 的步骤进行。如果您在本地安装了 go,您也可以使用

    console
    # 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
  2. 根据以下示例设置 Jsonnet 项目

    • 初始化 Tanka
    • 安装 Grafana Mimir 和 Kubernetes Jsonnet 库
    • 设置环境
    sh
    #!/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
  3. 生成 Kubernetes YAML 清单并将其存储在 ./manifests 目录中

    sh
    # Generate the YAML manifests:
    export PAGER=cat
    tk show environments/default
    tk export manifests environments/default
  4. 配置位于 environments/default/spec.json 的环境规范文件。

    要了解如何使用 Tanka 以及如何配置 spec.json 文件,请参阅 使用 Jsonnet:创建新项目

  5. 通过以下两种方式之一将清单部署到 Kubernetes 集群

    • 使用 tk apply 命令.

      Tanka 支持使用 diffapply 命令来查看和应用更改到 Kubernetes 集群

      sh
      # 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 集群

      sh
      # 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 applykubectl apply 命令之前,请确保您的 Kubernetes 集群中正在运行 etcd-operator。