今天就跟大家聊聊有关如何理解kubernetes中的api多版本机制实现,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。
在web开发中随着版本的更新迭代,通常要在系统中维护多个版本的api,多个版本的api在数据结构上往往也各不相同,今天就来一起学习下kubernetes中的Scheme机制是如何解决这个问题的,如何借助HTTP请求里面的数据进行反序列化操作
1. web请求的处理流程
1.1 HTTP请求处理流程
2.模型映射的实现
2.1 描述资源版本信息
/api/{version}/{resource}/{action}
上面是一个基础的web url通常我们都会为每个版本注册一个对应的URL, 其中会包含很关键的两个信息即version与resource,通过这两个信息,通常我们就可以知道这可能是某个资源的那个版本, 如果我们把后面的action也包裹进来,我们通常就可以知道对应的资源的那个具体操作
2.2 Group组信息
POST /apis/batch/v1beta1/namespaces/{namespace}/cronjobs
POST /apis/apps/v1/namespaces/{namespace}/daemonsets
我们来看一个实例这是一个创建daemonsets和cronjobs的url, 如果按照Group、resource、version来进行拆分可以拆成如下:batch、v1beta1、cronjobs和apps、v1、daemonsets,也就是大家尝试的GroupVersionKind,其中kind对应的就是resource
2.3 模型映射的实现
gvkToType map[schema.GroupVersionKind]reflect.Type
3.反序列化实现
3.1 解码机制
那如何将对应的Http里面的数据流反序列化成内部的一个对象呢,别忘记了是Http协议, 肯定就是header头里面的信息了,我们通过header头里面的序列化就可以知道对应的编码格式,只需要调用对应格式的解码就可以完成了
Content-Type: "application/json"
3.2 默认对象
func Unmarshal(data []byte, v interface{}) error {}
func() Object{ return 目标对象 },
4. 设计总结
看完上述内容,你们对如何理解kubernetes中的api多版本机制实现有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注编程之家行业资讯频道,感谢大家的支持。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。