K8s YAML 模板

背景

K8s YAML 模板 - 图1 K8s YAML 模板适用于使用 K8s YAML 部署的项目。支持用户在通用的模板上创建服务,提供更大的可扩展性。

新建模板

可将 K8s 资源的 YAML 配置文件抽象,在项目中创建服务时基于 K8s YAML 模板对服务进行定义。

  • 依次访问项目-模板库-K8s YAML 进入到 K8s YAML 模板库的管理页面。

创建 K8s YAML 模板

  • 点击+按钮 -> 输入模板名字 -> 填写模板内容 -> 保存模板。

如果模板中有使用自定义变量,需在右侧自定义变量区域将变量显示声明出来并按需配置默认值,详细信息请阅读 变量列表

创建 K8s YAML 模板

变量列表

包括系统内置变量和自定义变量。

  • 系统内置变量:包括 $T-Project$$T-Service$,可直接在 K8s YAML 模板中使用。在项目中基于模板创建服务后,二者会自动被替换为对应的项目名称和服务名称。
  • 自定义变量:以 YAML 代码段的形式来声明,通过形如 {{.key}} 或者 Go template 的方式在模板中使用。

提示

  1. 在项目中基于模板创建服务时可修改自定义变量的默认值。
  2. 自定义变量的 key 中不支持中划线。
  3. Go template 的使用请参考 官方文档K8s YAML 模板 - 图4 (opens new window)

除了支持使用常量值,还支持使用 服务配置 中的内置变量来为模板中的自定义变量赋值,比如下图示例中,使用 $Service$cmd 赋值。

K8s YAML 模板变量的高阶用法

切换列表视图可定义模板变量的可见性。

  • 不可见的变量:仅可在环境中的全局变量中使用
  • 可见的变量:可在环境中的服务变量和全局变量中使用

变量

注意

使用模板新建的服务且开启自动同步的情况下:

  1. 服务变量可见性不可修改
  2. 服务变量可见性继承模板中变量可见性配置

使用模板

K8s YAML 项目中创建服务时可选择从模板导入服务,参考使用模板新建服务

查看引用列表

点击 K8s YAML 模板右侧的引用列表,即可查看引用该模板的项目和服务列表。

查看 K8s YAML 模板引用列表

应用到服务

点击应用到服务,即可使用最新的模板内容以及自定义变量更新所有开启了自动同步的服务配置。

提示

  1. 对服务开启自动同步操作参考 使用模板新建服务
  2. 当自定义变量有改动时,对服务配置的更新逻辑参考 更新服务配置

应用到服务

示例

K8s YAML 模板

  1. apiVersion: apps/v1
  2. kind: Deployment
  3. metadata:
  4. name: $T-Service$
  5. labels:
  6. app.kubernetes.io/name: $T-Project$
  7. app.kubernetes.io/instance: $T-Service$
  8. spec:
  9. selector:
  10. matchLabels:
  11. app.kubernetes.io/name: $T-Project$
  12. app.kubernetes.io/instance: $T-Service$
  13. replicas: {{.replicas_num}}
  14. template:
  15. metadata:
  16. labels:
  17. app.kubernetes.io/name: $T-Project$
  18. app.kubernetes.io/instance: $T-Service$
  19. spec:
  20. containers:
  21. - name: $T-Service$
  22. image: ccr.ccs.tencentyun.com/koderover-public/$T-Service$:latest
  23. imagePullPolicy: Always
  24. env:
  25. - name: DOWNSTREAM_ADDR
  26. value: "b"
  27. - name: HEADERS
  28. value: "x-request-id"
  29. {{- if .skywalking}}
  30. - name: ENHANCE
  31. value: "true"
  32. {{- end}}
  33. command:
  34. - /workspace/{{.cmd}}
  35. ports:
  36. {{- range .ports_config}}
  37. - protocol: {{ .protocol }}
  38. containerPort: {{.container_port}}
  39. {{- end}}
  40. resources:
  41. limits:
  42. memory: {{.memory_limit}}
  43. cpu: {{.cpu_limit}}

自定义变量

  1. cmd: $Service$
  2. cpu_limit: 50m
  3. memory_limit: 50Mi
  4. replicas_num: 1
  5. skywalking: true
  6. value: "value"
  7. ports_config:
  8. - protocol: TCP
  9. container_port: 20221
  10. - protocol: UDP
  11. container_port: 21221