K8s YAML 模板
背景
K8s YAML 模板适用于使用 K8s YAML 部署的项目。支持用户在通用的模板上创建服务,提供更大的可扩展性。
新建模板
可将 K8s 资源的 YAML 配置文件抽象,在项目中创建服务时基于模板库对服务进行定义。
- 依次访问
项目
-模板库
-K8s YAML
进入到 K8s YAML 模板库的管理页面。
- 点击
+
按钮 -> 输入模板名字 -> 填写模板内容 -> 保存模板。
如果模板中有使用自定义变量,需在右侧自定义变量区域将变量显示声明出来并按需配置默认值,详细信息请阅读 变量列表。
变量列表
包括系统内置变量和自定义变量。
系统内置变量
:包括$T-Project$
和$T-Service$
,可直接在 K8s YAML 模板中使用。在项目中基于模板创建服务后,二者会自动被替换为对应的项目名称和服务名称。自定义变量
:以 YAML 代码段的形式来声明,通过形如{{.key}}
或者 Go template 的方式在模板中使用。
提示
- 在项目中基于模板创建服务时可修改自定义变量的默认值。
- 自定义变量的 key 中不支持中划线。
- Go template 的使用请参考 官方文档 (opens new window)。
除了支持使用常量值,还支持使用 服务配置 中的变量来为自定义变量赋值,比如下图示例中,使用 $EnvName$
、$T-Service$
给 cmd
赋值,使用 {{.REPLICAS_NUM}}
给 replicas_num
赋值。
使用模板
在 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$
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 eq .skywalking "true" }}
- 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: $EnvName$/$T-Service$
cpu_limit: 50m
memory_limit: 50Mi
replicas_num: {{.REPLICAS_NUM}}
skywalking: "true"
ports_config:
- protocol: TCP
container_port: 20221
- protocol: UDP
container_port: 21221