为什么不用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回答
-
同学你好 感谢提问 是这样的 按照同学这个说法的话 需要一个很懂k8s的前端才行 这里把数据结构转换了一次 可以大幅降低前端对k8s的理解 在一个 即使k8s升级或者是适配不同版本的多集群之后 带了api或参数结构的变更 前端也不用关注,最后 由于加了一层参数校验 且限定了提交字段 系统安全性也更高。
总结一下
1. 将工作交给后端 解耦前端和k8s的依赖
2. 提高系统的适配性 适配k8s版本变化或者对接不同版本的多集群
3. 提高系统的安全性
00
相似问题