构建CRD工程 - 程序员学点xx 43 k8s

构建CRD工程 - 程序员学点xx 43 k8s_第1张图片

Kubernetes -3-

这是yann的第98篇分享

[TOC]

本日状态:

​ 帮同事排了一天bug。

Kubernetes -3-

这是yann的第98篇分享

第 1 部分 承前

昨天用视屏的方式演示了构建 Deployment 的过程,并探讨了 crd 的流程和实现过程。从本篇开始就逐步实现这个过程,yann 保证大家都能完成一次 crd 的开发经历。

第 2 部分 项目

官方示例

我们先看一下官方的实例程序。

网址如下:

https://github.com/kubernetes...

CRD的官方的示例程序还是很规整的,中规中矩。如果学习Go语言的话,用类似的示例做出发点还是很好的,比选择个人一时兴趣创建的工程或者某个网页上随便找的Hello World要好很多。

构建CRD工程 - 程序员学点xx 43 k8s_第2张图片

很多同学不喜欢看官方的示例程序,认为又臭又长,内容复杂,版本还老。喜欢个人博客里面简化介绍,一条线结束,操作几下结果就出来了。平心而论,yann 也不喜欢看。但是为了认知的准确性,会勉强自己看。

个人项目

从上面的截图来看, 官方示例还是略微复杂了一点。我们从零开始创建一个更简化的项目。

还是先创建一个 crd.yaml,注意内容和文件路径,有些值等会用到。

位置:github.com/kubernetes/yann-controller/artifacts/examples/crd.yaml

apiVersion: apiextensions.k8s.io/v1beta1kind: CustomResourceDefinitionmetadata:name: tests.yanncontroller.k8s.iospec:group: yanncontroller.k8s.ioversion: v1alpha1names:  kind: Test  plural: testsscope: Namespaced

在第一篇中我们说到的 apiVersionkindmetadataspec 等几个固定的字段全员出现了。类似的情况在 k8s 中大量存在,所以我们只关注有变化部分就好了。

这次要关注的是 tests 和 yanncontroller ,分别为类型名的复数和分组名。在 metadata 里面可以看到。

另外注意,定义成类型的 Test,首字母T是大写的。

工程文件

最后 yann 带大家补全代码生成的全部文件。在本篇中,yann只会给大家展示基本的文件结构,代码具体内容和每个文件的用途,会在后面的篇章中逐渐说明。

构建CRD工程 - 程序员学点xx 43 k8s_第3张图片

我们只要看 pkg 目录下的文件就好。该目录包含2个子目录 apis、signals ,这两个目录是固定不变的,分别代表了 api 和信号量 相关的文件。

而 apis 下面的目录及子目录是自己定义的,分别对应 crd.yaml 配置文件中的分组名前缀 yanncontroller 和spec 定义的版本号 v1alpha1

除了这2个目录外,其他文件的名字都是固定不变的。这样分析下来,应该好理解很多。

第 3 部分 总结

今天的内容并不是很多, 但是侧重理解。搞清楚 crd.yaml 中字段和构建工程的关系是重中之重。了解之后就会发现没什么难度了。

下一篇,会开始解析各个文件的内容,同时为官方示例构建环境。

交互操作是一个很好的做法, 通过构建好的环境编译执行官方示例,可以加深对项目的了解。

同时,有一个正确的环境,对自己创建项目的调试很有帮助。如果项目和环境都无法保证正确,排查难度会倍增。

本文由博客一文多发平台 OpenWrite 发布!
发布在平台的文章, 和原文存在格式差异, 阅读不便请见谅
最新内容欢迎关注公众号:

你可能感兴趣的:(linux)