構建CRD工程 - 程序員學點xx 43 k8s

mark

Kubernetes -3-ios

這是yann的第98篇分享

[TOC]git

本日狀態:github

​ 幫同事排了一天bug。api

Kubernetes -3-學習

這是yann的第98篇分享spa

第 1 部分 承前調試

昨天用視屏的方式演示了構建 Deployment 的過程,並探討了 crd 的流程和實現過程。從本篇開始就逐步實現這個過程,yann 保證你們都能完成一次 crd 的開發經歷。code

第 2 部分 項目orm

官方示例

咱們先看一下官方的實例程序。cdn

網址以下:

https://github.com/kubernetes/sample-controller

CRD的官方的示例程序仍是很規整的,中規中矩。若是學習Go語言的話,用相似的示例作出發點仍是很好的,比選擇我的一時興趣建立的工程或者某個網頁上隨便找的Hello World要好不少。

img

不少同窗不喜歡看官方的示例程序,認爲又臭又長,內容複雜,版本還老。喜歡我的博客裏面簡化介紹,一條線結束,操做幾下結果就出來了。平心而論,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只會給你們展現基本的文件結構,代碼具體內容和每一個文件的用途,會在後面的篇章中逐漸說明。

img

咱們只要看 pkg 目錄下的文件就好。該目錄包含2個子目錄 apis、signals ,這兩個目錄是固定不變的,分別表明了 api 和信號量 相關的文件。

而 apis 下面的目錄及子目錄是本身定義的,分別對應 crd.yaml 配置文件中的分組名前綴 yanncontroller 和spec 定義的版本號 v1alpha1

除了這2個目錄外,其餘文件的名字都是固定不變的。這樣分析下來,應該好理解不少。

第 3 部分 總結

今天的內容並非不少, 可是側重理解。搞清楚 crd.yaml 中字段和構建工程的關係是重中之重。瞭解以後就會發現沒什麼難度了。

下一篇,會開始解析各個文件的內容,同時爲官方示例構建環境。

交互操做是一個很好的作法, 經過構建好的環境編譯執行官方示例,能夠加深對項目的瞭解。

同時,有一個正確的環境,對本身建立項目的調試頗有幫助。若是項目和環境都沒法保證正確,排查難度會倍增。

本文由博客一文多發平臺 OpenWrite 發佈!

發佈在平臺的文章, 和原文存在格式差別, 閱讀不便請見諒

最新內容歡迎關注公衆號:
https://user-gold-cdn.xitu.io/2019/12/13/16effbd32cced7c5?w=258&h=258&f=jpeg&s=27767

相關文章
相關標籤/搜索