Kubernetes -3-ios
[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要好不少。
不少同窗不喜歡看官方的示例程序,認爲又臭又長,內容複雜,版本還老。喜歡我的博客裏面簡化介紹,一條線結束,操做幾下結果就出來了。平心而論,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複製代碼
在第一篇中咱們說到的 apiVersion、kind、 metadata、spec 等幾個固定的字段全員出現了。相似的狀況在 k8s 中大量存在,因此咱們只關注有變化部分就行了。
此次要關注的是 tests 和 yanncontroller ,分別爲類型名的複數和分組名。在 metadata 裏面能夠看到。
另外注意,定義成類型的 Test,首字母T是大寫的。
最後 yann 帶你們補全代碼生成的所有文件。在本篇中,yann只會給你們展現基本的文件結構,代碼具體內容和每一個文件的用途,會在後面的篇章中逐漸說明。
咱們只要看 pkg 目錄下的文件就好。該目錄包含2個子目錄 apis、signals ,這兩個目錄是固定不變的,分別表明了 api 和信號量 相關的文件。
而 apis 下面的目錄及子目錄是本身定義的,分別對應 crd.yaml 配置文件中的分組名前綴 yanncontroller 和spec 定義的版本號 v1alpha1。
除了這2個目錄外,其餘文件的名字都是固定不變的。這樣分析下來,應該好理解不少。
第 3 部分 總結
今天的內容並非不少, 可是側重理解。搞清楚 crd.yaml 中字段和構建工程的關係是重中之重。瞭解以後就會發現沒什麼難度了。
下一篇,會開始解析各個文件的內容,同時爲官方示例構建環境。
交互操做是一個很好的作法, 經過構建好的環境編譯執行官方示例,能夠加深對項目的瞭解。
同時,有一個正確的環境,對本身建立項目的調試頗有幫助。若是項目和環境都沒法保證正確,排查難度會倍增。
本文由博客一文多發平臺 OpenWrite 發佈!
發佈在平臺的文章, 和原文存在格式差別, 閱讀不便請見諒
最新內容歡迎關注公衆號: