1、operator-sdk版本
operator-sdk version
operator-sdk version: "v1.20.0", commit: "deb3531ae20a5805b7ee30b71f13792b80bd49b1", kubernetes version: "1.23", go version: "go1.17.9", GOOS: "darwin", GOARCH: "amd64"
2、go版本
go version go1.17.9 darwin/amd64
3、创建项目
mkdir -p $HOME/projects/hello-operator
cd $HOME/projects/hello-operator
go env -w GOPROXY=https://goproxy.cn,direct
operator-sdk init --domain=bjbfd.github.io \
--repo=github.com/bjbfd/hello-operator \
--skip-go-version-check
4、创建API和控制器
operator-sdk create api \
--resource=true \
--controller=true \
--group=app \
--version=v1alpha1 \
--kind=Hello
5、定义 Hello 自定义资源(CR)的 API
修改 api/v1alpha1/hello_types.go 中的 Go 类型定义,使其具有以下 spec 和 status
type HellloSpec struct {
Size int32 `json:"size"`
Version string `json:"version"`
}
为资源类型更新生成的代码 :
make generate
运行以下命令以生成和更新 CRD 清单 :
make manifests
6、实现控制器
https://github.com/jxlwqq/hello-operator/tree/master/controllers,拷贝common.go、frontend.go和hello_controller.go
记得修改
--domain=
--repo=
//+kubebuilder:rbac:groups=
make manifests
7、生成镜像 & 运行operator
修改 Makefile 中 IMAGE_TAG_BASE 和 IMG
IMAGE_TAG_BASE ?= bjbfd/hello-operator
IMG ?= $(IMAGE_TAG_BASE):v1
make docker-build
make docker-push
make deploy
8、创建自定义资源
编辑 config/samples/app_v1alpha1_hello.yaml 上的 Hello CR 清单示例,使其包含以下规格:
apiVersion: app.bjbfd.github.io/v1alpha1
kind: Hello
metadata:
name: hello-sample
spec:
# Add fields here
size: 1
version: "1.9"
创建CR
kubectl apply -f config/samples/app_v1alpha1_hello.yaml
9、浏览器访问
浏览器访问:http://localhost:30691
如感兴趣,点赞加关注,谢谢!!!
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。