使用kubebuilder结合code-generator开发k8s controller(1)

为了开了controller,先后分析和尝试了几周,现把步骤和踩的坑记录分享一下。

使用kubebuilder结合code-generator开发k8s controller(1)

使用kubebuilder结合code-generator开发k8s controller(2)

本篇记录准备工作及遇到的问题和解决方法

问题一: kubebuilder安装

参考网上安装kubebuilder方法,但以下方式在curl的时候并无法下载对应安装包,因此放弃该方式,如有兄弟尝试成功,可分享成功经验

os=$(go env GOOS)
arch=$(go env GOARCH)
curl -L https://go.kubebuilder.io/dl/2.3.1/${os}/${arch} | tar -xz -C /tmp/
mv /tmp/kubebuilder_2.3.1_${os}_${arch} /usr/local/kubebuilder
export PATH=$PATH:/usr/local/kubebuilder/bin

尝试一:下载kubebuilder源码自己编译

git clone https://gitee.com/henrywangx/kubebuilder.git
cd kubebuilder
make build
cp bin/kubebuilder $GOPATH/bin

结果又出现新的问题,kubebuilder生成的controller,依赖的sigs.k8s.io/controller-runtime的版本v0.4.0,而我们的工程依赖sigs.k8s.io/controller-runtime v0.7.0,导致依赖冲突,用go mod replace也没有解决问题,故放弃该kubebuilder版本,如知道解决方法或问题根因的,请帮忙指出,谢谢。

尝试二:下载kubebuilder release

地址:Releases · kubernetes-sigs/kubebuilder · GitHubKubebuilder - SDK for building Kubernetes APIs using CRDs - Releases · kubernetes-sigs/kubebuilderhttps://github.com/kubernetes-sigs/kubebuilder/releases我参考其他文章,下载2.3.1版本的kubebuilder验证

wget https://github.com/kubernetes-sigs/kubebuilder/releases/download/v2.3.1/kubebuilder_2.3.1_linux_amd64.tar.gz

结果还是出现依赖冲突

重新下载新版本的kubebuilder,直接下了最新版本v3.1.0

wget https://github.com/kubernetes-sigs/kubebuilder/releases/download/v3.1.0/kubebuilder_linux_amd64

注:此时下载的文件并没有后缀,一开始都不知道怎么用。可以通过file命令查看文件格式

#file kubebuilder_linux_amd64 
kubebuilder_linux_amd64: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), statically linked, not stripped

可以看到文件是64位可执行文件,因此直接把文件放到/usr/local/sbin里即可使用

mv  kubebuilder_linux_amd64  /usr/local/sbin/kubebuilder

使用kubebuilder v3.1.0后直接解决了前面的问题。

问题二:kustomize安装

这部分没有遇到问题,直接执行下面命令成功安装

mkdir -p $GOPATH/bin
cd $GOPATH/bin
GOBIN=$(pwd)/ GO111MODULE=on go get sigs.k8s.io/kustomize/kustomize/v3

问题三:code-generator使用

参考https://cloud.tencent.com/developer/article/1656317

使用kubebuilder生成crd,因此如果改了apis/app/v1/{crd}_type.go文件,则需要重新执行make && make manifests重新刷新crd和deepcopy

但是在配置了code-generator后,make &&make manifests时会出现如下错误:

Error: go [list -e -json -compiled=true -test=false -export=false -deps=true -find=false -tags ignore_autogenerated -- ./...]: exit status 1: go build k8s.io/code-generator: build constraints exclude all Go files in /dcos/ksj/develop/vpc-gateway/vendor/k8s.io/code-generator

解决方法:把hack/tools.go文件删掉

rm -rf /hack/tools.go

测试发现该文件对功能没影响,而且后面还会自动重新生成。具体原因未知,请知道的同学指导一下,谢谢。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值