以下是tanka的参考试用
依赖
- kubectl
- diff
- jb jsonnet bundler
- helm
安装tanka
mac os
- 命令
brew install tanka
brew install jsonnet-bundler
试用
- 创建项目
mkdir prom-grafana && cd prom-grafana
tk init
效果
需要等待下载
目录结构
- 添加资源
main.jsonnet
{
// Grafana
grafana: {
deployment: {
apiVersion: 'apps/v1',
kind: 'Deployment',
metadata: {
name: 'grafana',
},
spec: {
selector: {
matchLabels: {
name: 'grafana',
},
},
template: {
metadata: {
labels: {
name: 'grafana',
},
},
spec: {
containers: [
{
image: 'grafana/grafana',
name: 'grafana',
ports: [{
containerPort: 3000,
name: 'ui',
}],
},
],
},
},
},
},
service: {
apiVersion: 'v1',
kind: 'Service',
metadata: {
labels: {
name: 'grafana',
},
name: 'grafana',
},
spec: {
ports: [{
name: 'grafana-ui',
port: 3000,
targetPort: 3000,
}],
selector: {
name: 'grafana',
},
type: 'NodePort',
},
},
},
// Prometheus
prometheus: {
deployment: {
apiVersion: 'apps/v1',
kind: 'Deployment',
metadata: {
name: 'prometheus',
},
spec: {
minReadySeconds: 10,
replicas: 1,
revisionHistoryLimit: 10,
selector: {
matchLabels: {
name: 'prometheus',
},
},
template: {
metadata: {
labels: {
name: 'prometheus',
},
},
spec: {
containers: [
{
image: 'prom/prometheus',
imagePullPolicy: 'IfNotPresent',
name: 'prometheus',
ports: [
{
containerPort: 9090,
name: 'api',
},
],
},
],
},
},
},
},
service: {
apiVersion: 'v1',
kind: 'Service',
metadata: {
labels: {
name: 'prometheus',
},
name: 'prometheus',
},
spec: {
ports: [
{
name: 'prometheus-api',
port: 9090,
targetPort: 9090,
},
],
selector: {
name: 'prometheus',
},
},
},
},
}
- 查看生成的资源
tk show environments/default
效果:
- 配置k8s 部署
spec.json
{
"apiVersion": "tanka.dev/v1alpha1",
"kind": "Environment",
"metadata": {
"name": "default"
},
"spec": {
"apiServer": "https://127.0.0.1:6443", // cluster to use
"namespace": "monitoring" // default namespace for all created resources
}
}
- 部署
tk apply environments/default
tk 支持的命令
- 参考命令
tanka <3 jsonnet
Usage:
tk [command]
Available Commands:
apply apply the configuration to the cluster
show jsonnet as yaml
diff differences between the configuration and the cluster
prune delete resources removed from Jsonnet
delete delete the environment from cluster
env manipulate environments
status display an overview of the environment, including contents and metadata.
export write each resources as a YAML file
fmt format Jsonnet code
eval evaluate the jsonnet to json
init Create the directory structure
tool handy utilities for working with jsonnet
complete install CLI completions