Notification-Manager 原码分析(一) 本地部署运行环境搭建
Notification-Manager 原码分析(一) 本地部署运行环境搭建
Alexnotification-manager 原码分析(一) 本地部署运行环境搭建
原码构建部署
- 拉取项目(项目地址: github.com/kubesphere/notification-manager)
- 首先查看项目文档(docs目录)和了解构建、启动入口(Makefile文件)
构建、部署operator
- 生成和安装k8s crd资源:
make install
,若报错参见下方遇到问题及解决办法 - 查看创建的资源
1
2
3
4
5
6
7
8
9
10
11
12# alias mk="minikube kubectl --" ### 本地使用minikube调试
$ mk get crd ### crd资源声明已经创建
NAME CREATED AT
configs.notification.kubesphere.io 2023-11-05T05:06:50Z
notificationmanagers.notification.kubesphere.io 2023-11-05T05:06:50Z
receivers.notification.kubesphere.io 2023-11-05T05:06:51Z
routers.notification.kubesphere.io 2023-11-05T05:06:51Z
silences.notification.kubesphere.io 2023-11-05T05:06:51Z
make deploy 部署operator资源
1 | mk create ns kubesphere-monitoring-system |
1 | $ mk get all |
构建、部署manager
make build 构建manager docker镜像
- 构建镜像
1 | make build-nm REGISTRY=my # 将镜像REGISTRY 自定义下避免去远端拉取 |
1 | make build-nm REGISTRY=my |
- mac端docker未支持此构建参数, 手动调整构建
1 | # 构建镜像 |
部署notification manager
- 部署消息模板默认配置
1 | mk apply -f config/samples/template.yaml |
- 修改notification-manager镜像,并创建
1 | # vi config/samples/notification_manager.yaml |
- 查看部署结果
1 | $ mk get all |
- 转发端口请求测试
1 | # 转发notification-manager pod的端口到本地 |
- 访问测试
1 | # 参见 docs/api/_index.md文档中的请求示例json数据,创建一个json文件做post请求体 |
- 对应port-forward终端也可以看到一条转发请求,说明请求被转发进了k8s中
1 | Handling connection for 19093 |
至此本地部署和调试请求流程已完成。
遇到问题及解决办法
malformed module path “io/fs”: missing
- 报错提示内容
1 | ../../../../pkg/mod/golang.org/x/net@v0.7.0/http2/transport.go:19:2: malformed module path "io/fs": missing dot in first path element |
- 解决办法: 参见go.mod go version切换到对应golang版本
controller-gen 版本问题
- 如果本地已经安装过,运行报错,检查下版本确保和
Makefile
写的版本保持一致
1 | controller-gen: |
1 | controller-gen --version |
kustomize: command not found
- 报错提示
1 | /bin/sh: kustomize: command not found |
- 解决办法: 安装kustomize
1 | curl -s "https://raw.githubusercontent.com/kubernetes-sigs/kustomize/master/hack/install_kustomize.sh" | bash |