制作镜像
好了,前面是使用make run进行测试运行。现在我们把operator打出镜像进行分发。
先修改一下Dockerfile,否则可能下载依赖有问题
1 | ENV GO111MODULE=on |
然后,默认的这个FROM gcr.io/distroless/static:nonroot也是下不到的
替换成这个
1 | anjia0532/distroless.static:nonroot |
制作镜像部署.assets\image-20240314175005139.png)
我这里是自己搭的私有harbor
1 | make docker-build docker-push IMG=harbor-test.xxx.net/paas/demo-operator:1.0 |
制作镜像部署.assets\image-20240314173521885.png)
部署operator镜像
部署有两种方案
make deploy
使用项目自带的deploy指令,这种方式是将operator部署到本地集群中,其实和make run差不多
1 | make deploy IMG=harbor-test.xxx.net/paas/demo-operator:1.0 |
也可修改~/.kube/config来连接其他集群,但还是太麻烦。
1 | kustomize build config/default | kubectl apply -f - |
查看部署情况
制作镜像部署.assets\image-20240315092100583.png)
查看一下pod的日志
制作镜像部署.assets\image-20240315092820168.png)
我们再部署一个demo测试一下
1 | kubectl apply -f config/samples/tutorial_v1_demo.yaml |
制作镜像部署.assets\image-20240315093227608.png)
执行调谐完成
如果你的部署遇到问题,可能会遇到镜像下载不下来的问题。
原因还是gcr.io/kubebuilder/kube-rbac-proxy被墙了
改一下
制作镜像部署.assets\image-20240314175854575.png)
yaml部署
我们需要的当然是把写的operator分发到别的集群部署。
通过分析make deploy脚本,来编写yaml
1 | .PHONY: deploy |
这个脚本的本质就是用kustomize对config下的manager和default中的yaml进行变量替换
然后整合成一个yaml,传给kubectl apply执行
所以啊,我们只要执行下这两行就可以得到我们想要的yaml文件,然后就可以随便到别的集群执行了哦
1 | cd config/manager && /usr/local/bin/kustomize edit set image controller=harbor-test.xxx.net/paas/demo-operator:1.0 |
输出这样一个yaml
1 | apiVersion: v1 |
去别的集群,部署试试
部署operator
1 | kubectl apply -f demo-operator.yaml |
部署一个demo crd
1 | kubectl apply -f demo-simple.yaml |
制作镜像部署.assets\image-20240315095308702.png)
完成