首页 > 其他分享 >2024-12-10

2024-12-10

时间:2024-12-29 15:00:01浏览次数:1  
标签:10 12 err nil storage 2024 apiGroupInfo apiextensions customresourcedefinition

1.2.2 创建 APIExtensions Server

创建完通用 APIServer 后继续创建 APIExtensions Server。

func (c completedConfig) New(delegationTarget genericapiserver.DelegationTarget) (*CustomResourceDefinitions, error) {
genericServer, err := c.GenericConfig.New("apiextensions-apiserver", delegationTarget)

  s := &CustomResourceDefinitions{
  GenericAPIServer: genericServer,
  }
   
  // 存储建立 REST API 到资源实体的信息
  apiGroupInfo := genericapiserver.NewDefaultAPIGroupInfo(apiextensions.GroupName, Scheme, metav1.ParameterCodec, Codecs)
   
  // 资源实体
  storage := map[string]rest.Storage{}
   
  // customresourcedefinitions
  if resource := "customresourcedefinitions"; apiResourceConfig.ResourceEnabled(v1.SchemeGroupVersion.WithResource(resource)) {
  // 创建资源实体
  customResourceDefinitionStorage, err := customresourcedefinition.NewREST(Scheme, c.GenericConfig.RESTOptionsGetter)
  if err != nil {
  return nil, err
  }
  storage[resource] = customResourceDefinitionStorage
  storage[resource+"/status"] = customresourcedefinition.NewStatusREST(Scheme, customResourceDefinitionStorage)
  }
  if len(storage) > 0 {
  apiGroupInfo.VersionedResourcesStorageMap[v1.SchemeGroupVersion.Version] = storage
  }
   
  if err := s.GenericAPIServer.InstallAPIGroup(&apiGroupInfo); err != nil {
  return nil, err
  }

APIGroupInfo 对象用于描述资源组信息,storage 存储资源到资源实体的对应关系。

资源实体,通过 NewREST() 函数创建。

kubernetes/vendor/k8s.io/apiextensions-apiserver/pkg/registry/customresourcedefinition/etcd.go

package customresourcedefinition

// NewREST returns a RESTStorage object that will work against API services.
func NewREST(scheme runtime.Scheme, optsGetter generic.RESTOptionsGetter) (REST, error) {
strategy := NewStrategy(scheme)

  store := &genericregistry.Store{
  NewFunc: func() runtime.Object { return &apiextensions.CustomResourceDefinition{} },
  NewListFunc: func() runtime.Object { return &apiextensions.CustomResourceDefinitionList{} },
  PredicateFunc: MatchCustomResourceDefinition,
  DefaultQualifiedResource: apiextensions.Resource("customresourcedefinitions"),
  SingularQualifiedResource: apiextensions.Resource("customresourcedefinition"),
   
  CreateStrategy: strategy,
  UpdateStrategy: strategy,
  DeleteStrategy: strategy,
  ResetFieldsStrategy: strategy,
   
  // TODO: define table converter that exposes more than name/creation timestamp
  TableConvertor: rest.NewDefaultTableConvertor(apiextensions.Resource("customresourcedefinitions")),
  }
  options := &generic.StoreOptions{RESTOptions: optsGetter, AttrFunc: GetAttrs}
  if err := store.CompleteWithOptions(options); err != nil {
  return nil, err
  }
  return &REST{store}, nil

}

可以看到,资源实体是在资源包 customresourcedefinition 的 etcd.go 中创建的,创建的资源实体负责和 etcd 交互。
(关于 etcd 交互的部分先不讲,后续会专门介绍。)

创建完资源实体后,通过 apiGroupInfo.VersionedResourcesStorageMap[v1.SchemeGroupVersion.Version] = storage 将资源实体存储到 apiGroupInfo。

继续调用 InstallAPIGroup(apiGroupInfo *APIGroupInfo) 安装 REST API。

标签:10,12,err,nil,storage,2024,apiGroupInfo,apiextensions,customresourcedefinition
From: https://www.cnblogs.com/dmx-03/p/18638841

相关文章

  • 2024-2025-1 20241314 《计算机基础与程序设计》第十四周学习总结
    2024-2025-120241314《计算机基础与程序设计》第十四周学习总结作业信息这个作业属于哪个课程<班级的链接>(如2024-2025-1-计算机基础与程序设计)这个作业要求在哪里<作业要求的链接>2024-2025-1计算机基础与程序设计第十四周作业作业正文正文教材学习内容总......
  • 2024-12-12《UML类图》
    UML九图  1.类图类图(ClassDiagram)是面向对象系统建模中最常用和最重要的图,是定义其它图的基础。类图主要是用来显示系统中的类、接口以及它们之间的静态结构和关系的一种静态模型。类图不仅用于可视化描述和记录系统的不同方面,也为构建可执行代码的软件应用程序。类图描述......
  • 11.12
    实验2熟悉常用的HDFS操作  1.实验目的(1)理解HDFS在Hadoop体系结构中的角色;(2)熟练使用HDFS操作常用的Shell命令;(3)熟悉HDFS操作常用的JavaAPI。2.实验平台(1)操作系统:Linux(建议Ubuntu16.04或Ubuntu18.04);(2)Hadoop版本:3.1.3;(3)JDK版本:1.8;(4)JavaIDE:Eclipse。3.实验步骤(一)编......
  • 2024-12-13《构建之法阅读笔记》
    构建之法阅读笔记(1) 第一章概论在这一章中,作者为我们介绍了一些关于软件工程的基本知识。①软件=程序+软件工程:正是因为对软件开发活动(构建管理、源代码管理、软件设计、软件测试、项目管理)相关的内容的完成,才能完成把整个程序转化成为一个可用的软件的过程。扩展的推论......
  • 学习012-02-05 Dialog Controller(对话框控制器)
    DialogController(对话框控制器)TheXAFhasseveralControllersthatareautomaticallyaddedtoeachFrameandprovidebasicfunctionalityinapplications(NewObjectViewController,ShowNavigationItemController,etc.).However,thisdoesnotincludetheDi......
  • 2024-11-25《Vscode热部署》
    VsCode配置Javaweb热部署(Deploy)   最近又开始使用VsCode来进行web开发,但是每次都需要package一下项目再放到Tomcat下面太繁琐了,就想着能不能像IDEA一样可以进行热部署,经过不懈百度后终于发现了解决方法。首先需要以下三个插件:  首先我们要去创建一个webapp项目,具体的......
  • 学习012-02-04 Customize Controllers and Actions(自定义控制器和操作)
    CustomizeControllersandActions(自定义控制器和操作)ToimplementanewfeatureintheXAF,createanewController.Ifthefeaturerequiresend-userinteraction,addActionstoit.Atthesametime,youmayneedtocustomizeaControllerorActionprovi......
  • 2024-11-28《关于mybatis创建的mapper映射路径不对导致的系列报错》
    关于mybatis创建的mapper映射路径不对导致的系列报错 今天在写mybatis项目的时候,使用注解发现无法使用别名,添加ResultMap的时候直接报错显示无法解析。经过百度了好久也是成功的发现了问题的所在,就是这个:这个路径创建的时候我以为创建的是分级目录,实际上创建成为了com.inn......
  • 2024-11-27《架构漫谈读后感》
    架构漫谈读后感 首先,最近在课上老师推荐我们阅读王概凯老师的架构漫谈连载博客,通过详细的阅读,我确实收获颇丰。首先就是对于架构是什么,架构解决的是什么有了一个深入的了解。第一,什么架构呢?王概凯老师认为他没有一个确切的定义,在软件行业,每个人都有自己的理解,所以一百个人心......
  • 2024-11-29《axios获取不到response返回的响应的解决方法》
    axios获取不到response返回的响应的解决方法 今天在用mybatis+vue+axios写登录界面的时候,发现用户名还有密码的数据都能够传输到servlet里,但是当servlet对html界面进行相应的时候,axios却收不到消息,经过长时间的排查后也没有发现问题,终于在今晚的百度下发现了结果,上原文:解决方......