首页 > 其他分享 >kubebuilder 构建operator

kubebuilder 构建operator

时间:2023-08-24 23:44:40浏览次数:32  
标签:bin ... go controller kubebuilder 构建 testop1 operator

1. wsl上配置环境环境

window环境上安装wsl,安装golang

安装kubebuilder:

wget https://github.com/kubernetes-sigs/kubebuilder/releases/download/v2.3.1/kubebuilder_2.3.1_linux_amd64.tar.gz
tar -zxvf kubebuilder_2.3.1_linux_amd64.tar.gz #带kubectl,etcd等
mv kubebuilder_2.3.1_linux_amd64/bin/kubebuilder /usr/local/bin/

2. 初始化

1)go mod init

mkdir testop1

cd testop1;go mod init myop1

 

2) kubebuilder init --domain zxq.com

Writing kustomize manifests for you to edit...
Writing scaffold for you to edit...
Get controller runtime:
$ go get sigs.k8s.io/controller-runtime@v0.14.1
Update dependencies:
$ go mod tidy
Next: define a resource with:
$ kubebuilder create api

3) kubebuilder create api --group zxq -version v1 --kind ZxqDemo

Create Resource [y/n]
y
Create Controller [y/n]
y
Writing kustomize manifests for you to edit...
Writing scaffold for you to edit...
api/v1/zxqdemo_types.go
controllers/zxqdemo_controller.go
Update dependencies:
$ go mod tidy
Running make:
$ make generate
mkdir -p /mnt/d/operator/testop1/bin
test -s /mnt/d/operator/testop1/bin/controller-gen && /mnt/d/operator/testop1/bin/controller-gen --version | grep -q v0.11.1 || \
GOBIN=/mnt/d/operator/testop1/bin go install sigs.k8s.io/controller-tools/cmd/controller-gen@v0.11.1
go: downloading golang.org/x/tools v0.4.0
go: downloading golang.org/x/mod v0.7.0
/mnt/d/operator/testop1/bin/controller-gen object:headerFile="hack/boilerplate.go.txt" paths="./..."
Next: implement your new API and generate the manifests (e.g. CRDs,CRs) with:
$ make manifests

4) make

/mnt/d/operator/testop1/bin/controller-gen rbac:roleName=manager-role crd webhook paths="./..." output:crd:artifacts:config=config/crd/bases
/mnt/d/operator/testop1/bin/controller-gen object:headerFile="hack/boilerplate.go.txt" paths="./..."
go fmt ./...
go vet ./...
go build -o bin/manager main.go

 

5) 安装crd和cr

执行 make install,可以向集群中安装crd

在config/samples下的zxq_v1_zxqdemo.yaml是一个cr的例子,然后kubectl apply -f zxq_v1_zxqdemo.yaml 就可以创建这个cr

 

6)生成 webhook

kubebuilder create webhook --group zxq --version v1 --kind ZxqDemo --defaulting --programmatic-validation

Writing kustomize manifests for you to edit...
Writing scaffold for you to edit...
api/v1/zxqdemo_webhook.go
Update dependencies:
$ go mod tidy
Running make:
$ make generate
test -s /mnt/d/operator/testop1/bin/controller-gen && /mnt/d/operator/testop1/bin/controller-gen --version | grep -q v0.11.1 || \
GOBIN=/mnt/d/operator/testop1/bin go install sigs.k8s.io/controller-tools/cmd/controller-gen@v0.11.1
/mnt/d/operator/testop1/bin/controller-gen object:headerFile="hack/boilerplate.go.txt" paths="./..."
Next: implement your new Webhook and generate the manifests with:
$ make manifests

 执行make,在config/webhook下生成manifests.yaml,其中包含MutatingWebhookConfiguration和ValidatingWebhookConfiguration

标签:bin,...,go,controller,kubebuilder,构建,testop1,operator
From: https://www.cnblogs.com/zxq89/p/17477844.html

相关文章

  • 使用 docker 打包构建部署 Vue 项目,一劳永逸解决node-sass安装问题
    文章源于Jenkins构建Vue项目失败,然后就把node_modules删了重新构建发现node-sass安装不上了,折腾一天终于可以稳定构建了。犹记得从学node的第一天,就被node-sass折磨了一整天,后面本地没问题了然后服务器开始折磨了,这次又遇到,尝试了一次又一次,还是用本地包构建最稳,觉......
  • IfcArithmeticOperatorEnum
    IfcArithmeticOperatorEnum类型定义IfcAlgorithmicOperatorEnum指定关系所隐含的算术运算的形式。IFC2x2中的新枚举。 EnumerationdefinitionConstantDescriptionADD DIVIDE MULTIPLY SUBTRACT  EXPRESSSpecificationTYPEIfcArithmeticOpe......
  • buildroot 构建根文件系统
    一、开发背景原开发板的文件系统拥有很大的冗余文件,需要裁剪文件系统或者根据需要定制文件系统二、开发需求1、构造最小系统,支持基本指令,例如cd、ls、tar等基础指令三、开发环境LinuxUbuntu 4.15.0-65-generic+ buildroot-2023.02.3+i.mx6d(cortex-A9)......
  • 八月更新 | CI 构建计划触发机制升级、制品扫描 SBOM 分析功能上线!
    点击链接了解详情这个八月,腾讯云CODINGDevOps对持续集成、制品管理、项目协同、平台权限等多个产品模块进行了升级改进,为用户提供更灵活便捷的使用体验。以下是CODING新功能速递,快来看看是否有您期待已久的功能特性:01CI构建计划触发机制升级在原有代码变更及合并请求......
  • 基于静态编译构建微服务应用
    作者:饶子昊(铖朴)Java的局限性传统的一个Java应用从代码编写到启动运行大致可以分为如下步骤:首先,编写.java源代码程序。然后,借助javac工具将.java文件翻译为.class的字节码,字节码是Java中非常重要的内容之一,正是因为它的出现,Java才实现对底层环境的屏蔽,达到Writ......
  • 随笔(三十)『Dockerfile 构建ubuntu镜像练习』
    1、将需要用的java8传到宿主机,同级目录下创建Dockerfile2、编写DockerfilevimDockerfile#基础镜像来自哪里FROMFROMubuntu#作者信息MAINTAINERMAINTAINERshendian#定义个环境变量ENVENVMYPATH/usr/local#进入容器后的位置WORKDIRWORKDIR$MYPATH#镜......
  • 要构建此项目,必须安装以下工作负载: wasm-tools
    要构建此项目,必须安装以下工作负载:wasm-tools要安装这些工作负载,请运行以下命令:dotnetworkloadrestore AdminAPP C:\ProgramFiles\dotnet\sdk\7.0.306\Sdks\Microsoft.NET.Sdk\targets\Microsoft.NET.Sdk.ImportWorkloads.targets 38在项目的目录cmd运行命令dotnetwor......
  • 使用 OpenTelemetry 构建可观测性 06 - 生态系统
    过去的五篇文章讨论了如何使用OpenTelemetry来构建可观测性的技术细节。我认为在本博文系列的结尾介绍有关OTel生态系统的信息,为读者提供更全面的了解非常重要。OpenTelemetry的发展非常迅速,对于刚接触它的人来说,可能会感到有些不知所措或困惑,不知道在哪里找到有效的信息或资......
  • 使用 OpenTelemetry 构建可观测性 05 - 传播和行李(Propagation & Baggage)
    我们开发的应用程序可能具有不同的形态和架构:有些是单体应用,有些是微服务。为单体应用程序添加遥测数据相对来说简单,因为所有数据都在同一进程中。然而对于微服务应用程序,情况可能会更具挑战性。通常,分布式微服务应用程序的不同服务之间仅通过网络连接。然而,当我们想要创建有效的......
  • 从数组中构建二叉树
    #include<iostream>#include<sstream>#include<stack>#include<vector>#include<queue>usingnamespacestd;structTreeNode{intval;TreeNode*left;TreeNode*right;TreeNode():val(0),left(nullptr),......