什么是jsonnet
jsonnet是用于app或开发工具的数据模板语言,主要用于json的扩展,具有下面功能:
- 生成配置数据
- 无副作用
- 组织化,简化,统一化
- 管理无序的配置
jsonnet可以通过面向对象消除重复。或者,使用函数。与现有/自定义应用程序集成。生成 JSON、YAML、INI 和其他格式。
安装jsonnet
Jsonnet 有两种实现(C++ 和 Go)
在 Debian/Ubuntu 之上,可以直接使用 apt 源来安装
|
|
安装 go 实现的,可以用下面命令,前提是安装了go
|
|
什么是jsonnet-bundler
jsonnet-bundler 是 Jsonnet 的包管理器,用于个简化 jsonnet 项目中依赖关系管理的工具。使用 Jsonnet Bundler 可以带来下面便利之处:
- 使用
jsonnetfile.json
作为依赖关系管理 - 自动安装和更新依赖项。
- 版本选择,使用
jsonnetfile.json
可以确保项目使用正确版本的依赖。 - 可重复构建, 使用
jsonnetfile.json
管理的项目可以在不同环境中构建并确保结果的一致性。 - 更方便的与 GitOps 结合, Jsonnet Bundler 提供 与 GitOps 的集成。
jsonnet-bundler 安装
Jsonnet Bundler 有两种安装模式,实际上就是 Go 程序通用的安装方式:
- Jsonnet Bundler 二进制文件 (预构建)
- go install 安装
在 jsonnet bundler release 页面下载对应版本
使用 go install 安装
|
|
注意:
- jsonnet bundler 要求 Go 版本最少是 Go 1.13 或更高版本。 [1]
- 使用 go install 安装的,需要将
$(go env GOPATH)/bin
加入到$PATH
jsonnetfile.json
https://jsonnet.movatech.today/blog/structure-of-the-jsonnetfile.json-file/
https://jsonnet.org/learning/tutorial.html
https://jsonnet-libs.github.io/jsonnet-training-course/
https://medium.com/@pmspraveen8/k8s-libsonnet-generating-manifests-33a5e5aff277
Reference
[1] jsonnet
[2] JSONPath Syntax