kubebuilder(1)开发环境搭建

<p>开发一个k8s operator,当然可以在官方原生的controller-runtime 项目上从头构建,但是比较复杂。现在一般基于operator脚手架进行开发。目前最流行的的脚手架是Kubebuilder 或 OperatorSDK。Kubebuilder 或 OperatorSDK都是对controller-runtime 项目进行了上层的封装,使开发者可以专注于业务逻辑的实现。这里讲解kubebuilder的使用步骤。</p><p>首选需要一个可用的K8S集群。然后有一台linux服务器,能部署kubebuilder</p><div class="image-package"><img src="https://upload-images.jianshu.io/upload_images/5149787-c90b12620aad0967.jpeg" img-data="{"format":"jpeg","size":10955,"width":761,"height":220,"space":"srgb","channels":3,"depth":"uchar","density":72,"chromaSubsampling":"4:2:0","isProgressive":false,"hasProfile":false,"hasAlpha":false}" class="uploaded-img" style="min-height:200px;min-width:200px;" width="auto" height="auto"/>
</div>
<h2><span/><span>kubectl的配置</span><span/><span> </span></h2><p>下载</p>curl -LO https://storage.googleapis.com/kubernetes-release/release/(curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt)/bin/linux/amd64/kubectl<br/><p>给文件可执行权限;</p>chmod +x ./kubectl<br/><p>将kubectl移动到可以全局执行的目录下:</p> mv ./kubectl /usr/local/bin/kubectl<br/><p>kubectl要想连接k8s集群,还需要一个k8s的config文件。就在k8s集群的/root/.kube/目录下。复制到我们的kubebuilder服务器上同样目录下。</p><p>现在我们在kubebuilder服务器上也可以操作k8s了。</p><h2><span/><span>部署kubebuilder</span><span/><span> </span></h2><p>各个组件的版本</p><p>go 1.18.5</p><p>docker 19.03.0</p><h4><span/><span>安装go</span><span/></h4><p>安装一些必要的工具</p>yum install unzip tree wget gcc gcc-c++ kernel-devel -y<br/><p>安装go</p><p>安装官网安装的https://golang.google.cn/doc/install</p><p>额外执行以下命令</p> go env -w GO111MODULE=on
go env -w GOPROXY=https://goproxy.cn,direct<br/><h4><span/><span>安装docker</span><span/></h4><p>略</p><h4><span/><span>安装kustomize</span><span/></h4><p>后面的操作中需要使用kustomize去做配置管理。</p><p>kustomize允许用户将不同环境所共享的配置放在一个文件目录下,而将其他不同的配置放在另外的目录下。这样用户就可以很容易的区分那些值是当前环境所特有的,从而在修改的时候会额外关注。</p><p>官方给出的安装方式,因为网络问题安装失败</p><p>基于模板生成YAML文件,下载kustomize二进制压缩包:https://github.com/kubernetes-sigs/kustomize/releases/download/kustomize/v3.8.1/kustomize_v3.8.1_linux_amd64.tar.gz</p># 解压并安装<br/> tar zxvf kustomize_v3.8.1_linux_amd64.tar.gz
chmod +x kustomize<br/> mv kustomize /usr/local/bin/
kustomize version<br/>{Version:kustomize/v3.8.1 GitCommit:0b359d0ef0272e6545eda0e99aacd63aef99c4d0 BuildDate:2020-07-16T00:58:46Z GoOs:linux GoArch:amd64}<br/><h4><span/><span>安装controller-gen</span><span/></h4><p>下载源码,编译安装</p>wget https://github.com/kubernetes-sigs/controller-tools/archive/refs/tags/v0.10.0.zip<br/> unzip v0.10.0.zip
cd controller-tools-0.10.0<br/> go build -a -o controller-gen cmd/controller-gen/main.go
mv controller-gen /usr/local/bin/<br/> controller-gen --version
Version: (devel)
<h4><span/><span>安装kubebuilder</span><span/></h4># go env GOOS -- 获取操作系统类型,例如:linux等
# go env GOARCH -- 获取系统架构,例如:arm或amd64等
curl -L -o kubebuilder https://go.kubebuilder.io/dl/latest/(go env GOOS)/(go env GOARCH)<br/> chmod +x kubebuilder && mv kubebuilder /usr/local/bin/
<p>安装完成,查看下版本</p># kubebuilder version
Version: main.version{KubeBuilderVersion:"3.2.0", KubernetesVendor:"1.22.1", GitCommit:"b7a730c84495122a14a0faff95e9e9615fffbfc5", BuildDate:"2021-10-29T18:32:16Z", GoOs:"linux", GoArch:"amd64"}

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容