K8s YAML 模板
背景
K8s YAML 模板适用于使用 K8s YAML 部署的项目。支持用户在通用的模板上新建服务,提供更大的可扩展性。
新建模板
可将 K8s 资源的 YAML 配置文件抽象,在项目中新建服务时基于 K8s YAML 模板对服务进行定义。
- 依次访问
资产管理
-模板库
-K8s YAML
进入到 K8s YAML 模板库的管理页面。点击+
按钮 -> 输入模板名字 -> 填写模板内容 -> 保存模板。
如果模板中有使用自定义变量,可在右侧自定义变量区域配置变量的默认值,详细信息请阅读 变量列表。
变量列表
包括系统内置变量和自定义变量,点击自定义变量下方的键值对、YAML 文件图标可切换变量视图,可修改服务变量的类型及默认值并校验正确性,支持字符串、枚举、布尔、YAML 四种类型。
系统内置变量
:包括$T-Project$
和$T-Service$
,可直接在 K8s YAML 模板中使用。在项目中基于模板新建服务后,二者会自动被替换为对应的项目名称和服务名称。自定义变量
:以 YAML 代码段的形式来声明,通过形如{{.key}}
或者 Go template 的方式在模板中使用。
提示
- 在项目中基于模板新建服务时可修改自定义变量的默认值。
- 自定义变量的 key 中不支持中划线。
- Go template 的使用请参考 官方文档 (opens new window)。
除了支持使用常量值,还支持使用 服务配置 中的内置变量来为模板中的自定义变量赋值,比如下图示例中,使用 $Service$
给 cmd
赋值。
使用模板
在 K8s YAML 项目中新建服务时可选择从模板导入服务,参考使用模板新建服务。
查看引用列表
点击 K8s YAML 模板右侧的引用列表
,即可查看引用该模板的项目和服务列表。
应用到服务
点击应用到服务
,即可使用最新的模板内容以及自定义变量更新所有开启了自动同步
的服务配置。
提示
示例
K8s YAML 模板
apiVersion: apps/v1
kind: Deployment
metadata:
name: $T-Service$
labels:
app.kubernetes.io/name: $T-Project$
app.kubernetes.io/instance: $T-Service$
annotations:
{{.annotations}}
spec:
selector:
matchLabels:
app.kubernetes.io/name: $T-Project$
app.kubernetes.io/instance: $T-Service$
replicas: {{.replicas_num}}
template:
metadata:
labels:
app.kubernetes.io/name: $T-Project$
app.kubernetes.io/instance: $T-Service$
spec:
containers:
- name: $T-Service$
image: ccr.ccs.tencentyun.com/koderover-public/$T-Service$:latest
imagePullPolicy: Always
env:
- name: DOWNSTREAM_ADDR
value: "b"
- name: HEADERS
value: "x-request-id"
{{- if .skywalking}}
- name: ENHANCE
value: "true"
{{- end}}
command:
- /workspace/{{.cmd}}
ports:
{{- range .ports_config}}
- protocol: {{ .protocol }}
containerPort: {{.container_port}}
{{- end}}
resources:
limits:
memory: {{.memory_limit}}
cpu: {{.cpu_limit}}
自定义变量
cmd: $Service$
cpu_limit: 50m
memory_limit: 50Mi
replicas_num: 1
skywalking: true
value: value
ports_config:
- protocol: TCP
container_port: 20221
- protocol: UDP
container_port: 21221
annotations: |1-
owner: "John Doe"
team: "DevOps"