k8s自定義資源類型代碼自動生成

用以下命令生成代碼:

./generate-groups.sh all "github.com/openshift-evangelist/crd-code-generation/pkg/client" "github.com/openshift-evangelist/crd-code-generation/pkg/apis" "ingressgroup:v1"

第一個報錯

生成代碼報錯:

Generating deepcopy funcs
F0910 19:18:35.552948   12153 main.go:82] Error: Failed making a parser: unable to add directory "github.com/openshift-evangelist/crd-code-generation/pkg/client": unable to import "github.com/asdfsx/getkubeconfig/pkg/apis/example/v1": cannot find package "github.com/openshift-evangelist/crd-code-generation/pkg/client" in any of:
        D:/Program Files/Go/go103/src/github.com/openshift-evangelist/crd-code-generation/pkg/client (from $GOROOT)
        D:/SoftwareAndProgram/program/Go/Development/src/github.com/openshift-evangelist/crd-code-generation/pkg/client (from $GOPATH)

這個問題可以參考issue

image.png

可以參考這個文章:
https://medium.com/@trstringer/create-kubernetes-controllers-for-core-and-custom-resources-62fc35ad64a3

由于該鏈接國內(nèi)訪問比較困難桂对,故轉(zhuǎn)載到了這里:
http://www.reibang.com/p/dcfe6eac4152
總而言之翼馆,就是目錄有問題安券。比如:

./generate-groups.sh all k8s.io/sample-controller/pkg/client k8s.io/sample-controller/pkg/apis samplecontroller:v1alpha1

那么k8s.io/sample-controller/pkg/apis目錄下就需要有一個samplecontroller/v1alpha1的文件夾,最終生成的文件會被放到k8s.io/sample-controller/pkg/client目錄下盯荤。

[root@10 code-generator]# ./generate-groups.sh all k8s.io/sample-controller/pkg/client k8s.io/sample-controller/pkg/apis samplecontroller:v1alpha1
Generating deepcopy funcs
Generating clientset for samplecontroller:v1alpha1 at k8s.io/sample-controller/pkg/client/clientset
Generating listers for samplecontroller:v1alpha1 at k8s.io/sample-controller/pkg/client/listers
Generating informers for samplecontroller:v1alpha1 at k8s.io/sample-controller/pkg/client/informers
[root@10 code-generator]# ll $GOPATH/src/k8s.io/sample-controller/pkg/
總用量 0
drwxr-xr-x 3 root root 30 4月  16 21:42 apis
drwxr-xr-x 5 root root 55 4月  16 21:58 client
[root@10 code-generator]# ll $GOPATH/src/k8s.io/sample-controller/pkg/apis/samplecontroller/v1alpha1/
總用量 8
-rw-r--r-- 1 root root 1462 4月  16 21:42 types.go
-rw-r--r-- 1 root root 3272 4月  16 21:57 zz_generated.deepcopy.go
[root@10 code-generator]# ll $GOPATH/src/k8s.io/sample-controller/pkg/client
總用量 0
drwxr-xr-x 3 root root 23 4月  16 21:57 clientset
drwxr-xr-x 3 root root 30 4月  16 21:58 informers
drwxr-xr-x 3 root root 30 4月  16 21:58 listers

第二個報錯:

Generating deepcopy funcs
F1104 02:57:44.419529      35 main.go:82] Error: Failed executing generator: some packages had errors:
type "k8s.io/apimachinery/pkg/runtime.Object" in k8s:deepcopy-gen:interfaces tag of type k8s.io/apimachinery/pkg/runtime.Object is not an interface, but: ""
goroutine 1 [running]:

這個報錯是因為k8s.io/apimachinery這個包目錄結(jié)構(gòu)不對,放到vendor目錄下找不到焕盟,必須放到$GOPATH下的src/k8s.io/apimachinery秋秤,具體參考issue

image.png

我解決了這個問題 。這不起作用脚翘,除非k8s.io/apimachinery在GOPATH中灼卢,如果它只是在vendor目錄下,那么deepcopy無法找到它来农。至少鞋真,這需要在某處記錄。如果在vendor目錄下也能正常工作沃于,那將會很棒涩咖。

目錄結(jié)構(gòu)如下:
$GOPATH/src


image.png

$GOPATH/src/github.com/


image.png

第三個報錯

image.png
Generating deepcopy funcs
F0221 09:54:08.335328   26316 main.go:82] Error: Failed executing generator: som                                          e packages had errors:
errors in package "github.com/openshift-evangelist/crd-code-generation/pkg/apis/                                          ingressgroup/v1":
unable to format file "D:\\SoftwareAndProgram\\program\\Go\\Development\\src\\gi                                          thub.com\\openshift-evangelist\\crd-code-generation\\pkg\\apis\\ingressgroup\\v1                                          \\zz_generated.deepcopy.go" (The filename, directory name, or volume label synta                                          x is incorrect.).

windows上執(zhí)行報這個錯,需要在linux上執(zhí)行g(shù)enerate-groups.sh 腳本繁莹。

最終生成如下:

image.png
[root@master-192 code-generator]# dos2unix generate-groups.sh 
dos2unix: converting file generate-groups.sh to Unix format ...
[root@master-192 code-generator]# ./generate-groups.sh all "github.com/openshift-evangelist/crd-code-generation/pkg/client" "github.com/openshift-evangelist/crd-code-generation/pkg/apis" "ingressgroup:v1"
Generating deepcopy funcs
Generating clientset for ingressgroup:v1 at github.com/openshift-evangelist/crd-code-generation/pkg/client/clientset
Generating listers for ingressgroup:v1 at github.com/openshift-evangelist/crd-code-generation/pkg/client/listers
Generating informers for ingressgroup:v1 at github.com/openshift-evangelist/crd-code-generation/pkg/client/informers

最終生成目錄結(jié)構(gòu)如下:

[root@master-192 crd-code-generation]# pwd
/root/Work/programmer/go/gopath/src/github.com/openshift-evangelist/crd-code-generation
[root@master-192 crd-code-generation]# tree
.
└── pkg
    ├── apis
    │   └── ingressgroup
    │       ├── register.go
    │       └── v1
    │           ├── doc.go
    │           ├── register.go
    │           ├── types.go
    │           └── zz_generated.deepcopy.go
    └── client
        ├── clientset
        │   └── versioned
        │       ├── clientset.go
        │       ├── doc.go
        │       ├── fake
        │       │   ├── clientset_generated.go
        │       │   ├── doc.go
        │       │   └── register.go
        │       ├── scheme
        │       │   ├── doc.go
        │       │   └── register.go
        │       └── typed
        │           └── ingressgroup
        │               └── v1
        │                   ├── doc.go
        │                   ├── fake
        │                   │   ├── doc.go
        │                   │   ├── fake_ingressgroup_client.go
        │                   │   └── fake_ingressgroup.go
        │                   ├── generated_expansion.go
        │                   ├── ingressgroup_client.go
        │                   └── ingressgroup.go
        ├── informers
        │   └── externalversions
        │       ├── factory.go
        │       ├── generic.go
        │       ├── ingressgroup
        │       │   ├── interface.go
        │       │   └── v1
        │       │       ├── ingressgroup.go
        │       │       └── interface.go
        │       └── internalinterfaces
        │           └── factory_interfaces.go
        └── listers
            └── ingressgroup
                └── v1
                    ├── expansion_generated.go
                    └── ingressgroup.go
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末檩互,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子咨演,更是在濱河造成了極大的恐慌闸昨,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,376評論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件薄风,死亡現(xiàn)場離奇詭異零院,居然都是意外死亡,警方通過查閱死者的電腦和手機村刨,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,126評論 2 385
  • 文/潘曉璐 我一進店門告抄,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人嵌牺,你說我怎么就攤上這事打洼×浜” “怎么了?”我有些...
    開封第一講書人閱讀 156,966評論 0 347
  • 文/不壞的土叔 我叫張陵募疮,是天一觀的道長炫惩。 經(jīng)常有香客問我,道長阿浓,這世上最難降的妖魔是什么他嚷? 我笑而不...
    開封第一講書人閱讀 56,432評論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮芭毙,結(jié)果婚禮上筋蓖,老公的妹妹穿的比我還像新娘。我一直安慰自己退敦,他們只是感情好粘咖,可當我...
    茶點故事閱讀 65,519評論 6 385
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著侈百,像睡著了一般瓮下。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上钝域,一...
    開封第一講書人閱讀 49,792評論 1 290
  • 那天讽坏,我揣著相機與錄音,去河邊找鬼例证。 笑死路呜,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的战虏。 我是一名探鬼主播拣宰,決...
    沈念sama閱讀 38,933評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼烦感!你這毒婦竟也來了巡社?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,701評論 0 266
  • 序言:老撾萬榮一對情侶失蹤手趣,失蹤者是張志新(化名)和其女友劉穎晌该,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體绿渣,經(jīng)...
    沈念sama閱讀 44,143評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡朝群,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,488評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了中符。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片姜胖。...
    茶點故事閱讀 38,626評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖淀散,靈堂內(nèi)的尸體忽然破棺而出右莱,到底是詐尸還是另有隱情蚜锨,我是刑警寧澤,帶...
    沈念sama閱讀 34,292評論 4 329
  • 正文 年R本政府宣布慢蜓,位于F島的核電站亚再,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏晨抡。R本人自食惡果不足惜氛悬,卻給世界環(huán)境...
    茶點故事閱讀 39,896評論 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望耘柱。 院中可真熱鬧如捅,春花似錦、人聲如沸帆谍。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,742評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽汛蝙。三九已至,卻和暖如春朴肺,著一層夾襖步出監(jiān)牢的瞬間窖剑,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,977評論 1 265
  • 我被黑心中介騙來泰國打工戈稿, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留西土,地道東北人。 一個月前我還...
    沈念sama閱讀 46,324評論 2 360
  • 正文 我出身青樓鞍盗,卻偏偏與公主長得像需了,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子般甲,可洞房花燭夜當晚...
    茶點故事閱讀 43,494評論 2 348

推薦閱讀更多精彩內(nèi)容