为什么不用client-go内置的结构体呢?有什么特殊要求吗?

来源:5-5 Pod接口开发之Pod创建(1)

精慕门7220388

2024-08-31

比如课程上自定义了 Pod 结构体,但是 client-go 库已经定义好了 Pod 结构体,前端传过来的数据直接绑定到 corev1.Pod 更省事

import (
	corev1 "k8s.io/api/core/v1"
	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
)
func CreatePod(c *gin.Context) {
	...
	var podReq = new(corev1.Pod)
	if err := c.ShouldBindJSON(podReq); err != nil {
		config.Logger.Err(err).Msg("")
		response.ResponseError(c, response.CodeInvalidParam)
		return
	}
	...
}
写回答

1回答

暮闲

2024-08-31

同学你好 感谢提问 是这样的 按照同学这个说法的话 需要一个很懂k8s的前端才行 这里把数据结构转换了一次 可以大幅降低前端对k8s的理解 在一个 即使k8s升级或者是适配不同版本的多集群之后 带了api或参数结构的变更 前端也不用关注,最后 由于加了一层参数校验 且限定了提交字段 系统安全性也更高。

总结一下

1. 将工作交给后端 解耦前端和k8s的依赖

2. 提高系统的适配性 适配k8s版本变化或者对接不同版本的多集群

3. 提高系统的安全性

0
0

Kubernetes系统精讲 Go语言实战K8S集群可视化

核心知识+高阶应用+原理剖析+二次开发 全方位打通K8S生产实践

399 学习 · 265 问题

查看课程