欢迎光临散文网 会员登陆 & 注册

如何使用operator-sdk编写一个operator

2023-07-24 22:31 作者:风格星辰  | 我要投稿

1、下载operator-sdk

官网地址

github.com/operator-fra

选择合适的版本下载

下载之后chmod +x xxx添加权限,然后mv xxx /usr/local/bin

之后就可以使用operator-sdk命令了

2、创建和初始化项目

mkdir memcached-operator

cd memcached-operator

operator-sdk init --domain http://example.com --repo github.com/example/memc

指定域名和仓库地址

3、创建一个示例api和controller控制器

operator-sdk create api --group cache --version v1alpha1 --kind Memcached --resource --controller

4、修改代码

修改api/v1alpha1/memcached_types.go的CRD,添加业务需要的字段

修改controller/memcached_controller.go的Reconcile函数,添加代码逻辑

修改完成后需要使用

make generate重新生成下资源类型

make manifests更新下crd的mainifests

5、打包和推送新镜像

make docker-build docker-push IMG="http://example.com/memcached-operator:v0.0.1"

备注:

使用的当前目录下的Dockerfile进行镜像打包,如果遇到基础镜像下载失败,可以使用这个网站

dockerproxy.com/

填写镜像地址,然后根据步骤下载镜像,重命名即可

如果编译代码go mod download失败,可以在Dockerfile里面添加

export GOPROXY=goproxy.cn,direct


6、部署deployment

make deploy IMG="http://example.com/memcached-operator:v0.0.1"

备注:

部署的yaml文件为config/manager/manager.yaml,如果命令部署失败了,可以手动修改下config/manager/manager.yaml中的image镜像为http://example.com/memcached-operator:v0.0.1,然后试下这个命令

kubectl kustomize config/default | kubectl apply -f -

镜像问题,可以通过步骤5提高的网站代理更换下,如果cri用的不是docker,需要docker save -o导出,然后ctr -n k8s.io images import 导入

7、创建CRD触发deployment事件

kubectl apply -f config/samples/cache_v1alpha1_memcached.yaml

手动修改下yaml文件的namespace为default,然后可以通过

kubect get crd查看创建的crd

8、取消部署deployment

make undeploy

不行的话用kubectl kustomize config/default|kubect delete --ignore-not-found=false -f -

有啥问题欢迎交流讨论


如何使用operator-sdk编写一个operator的评论 (共 条)

分享到微博请遵守国家法律