go get 安裝 k8s.io/code-generator 報錯 cannot find package
通過如下方式解決:
git clone https://github.com/golang/sys.git $GOPATH/src/github.com/golang/sys
git clone https://github.com/golang/net.git $GOPATH/src/github.com/golang/net
git clone https://github.com/golang/text.git $GOPATH/src/github.com/golang/text
git clone https://github.com/golang/lint.git $GOPATH/src/github.com/golang/lint
git clone https://github.com/golang/tools.git $GOPATH/src/github.com/golang/tools
git clone https://github.com/golang/crypto.git $GOPATH/src/github.com/golang/crypto
ln -s $GOPATH/src/github.com/golang/ $GOPATH/src/golang.org/x
碰到新問題
#go get -u k8s.io/code-generator/...
package context: unrecognized import path "context"
嘗試升級golang版本
#wget https://dl.google.com/go/go1.14.2.linux-amd64.tar.gz
#tar -C /usr/local -xzf go1.14.2.linux-amd64.tar.gz
#export PATH=/usr/local/go/bin:$PATH
執行 go version,發現還是查找老的版本
$go version
go: cannot find GOROOT directory: /opt/golang/go1.5.3
原因可能是GOROOT這個環境變量的問題,嘗試修改
$export GOROOT=/usr/local/go
$go version
go version go1.14.2 linux/amd64
再此執行 go get 成功
$ go get -u k8s.io/code-generator/...
最後執行完整代碼
# 代碼生成的工作目錄,也就是我們的項目路徑
$ ROOT_PACKAGE="github.com/resouer/k8s-controller-custom-resource"
# API Group
$ CUSTOM_RESOURCE_NAME="samplecrd"
# API Version
$ CUSTOM_RESOURCE_VERSION="v1"
# 安裝k8s.io/code-generator
$ go get -u k8s.io/code-generator/...
$ cd $GOPATH/src/k8s.io/code-generator
# 執行代碼自動生成,其中pkg/client是生成目標目錄,pkg/apis是類型定義目錄
$ ./generate-groups.sh all "$ROOT_PACKAGE/pkg/client" "$ROOT_PACKAGE/pkg/apis" "$CUSTOM_RESOURCE_NAME:$CUSTOM_RESOURCE_VERSION"