【go-zero】api与rpc使用k8s服务发现和部署

发布于:2024-09-18 ⋅ 阅读:(166) ⋅ 点赞:(0)

【go-zero】api与rpc使用k8s服务发现和部署

k8s安装

参考
debian12极简快速安装k8s
【Kubernetes】linux centos安装部署Kubernetes集群

1、代码准备

参考上一篇【go-zero】api与rpc使用etcd服务发现 代码搬过来,因为要用到k8s环境换到linux了 ,做一下修改

rpc

修改一下rpc的logic文件,增加返回主机名,用于后面查看负载均衡效果

func (l *GetUserInfoLogic) GetUserInfo(in *pb.GetUserInfoReq) (*pb.GetUserInfoResp, error) {
	hostname, _ := os.Hostname()
	return &pb.GetUserInfoResp{
		Id:       in.Id,
		Nickname: "zero-rpc----->" + hostname,
	}, nil
}

user.yaml 文件

Name: user.rpc
ListenOn: 0.0.0.0:8980
Mode: dev

api 配置rpc的发现

user-api.api 文件
user-rpc-svc 是rpc的k8s yaml部署文件的serviceName

Name: user-api
Host: 0.0.0.0
Port: 8988
UserRpcConf:
  Target: k8s://go-zero-demo/user-rpc-svc:8980

2、使用goctl 生成rpc、api 的 Dockerfile,通过Dockerfile构建镜像

user-rpc目录下

goctl docker -go user.go

在这里插入图片描述
根据提示,执行 docker build 要在/home/goproject/domo目录下 我们把 Dockerfile 复制到/home/goproject/domo

cp Dockerfile ../Dockerfile

在这里插入图片描述
/home/goproject/domo目录下 执行 docker构建镜像

docker build -t gozerok8s-user-rpc:v1 .

执行完查看 docker images
在这里插入图片描述

user-api目录下

goctl docker -go user.go

生成成功 把Dockerfile挪到/home/goproject/domo目录下
在这里插入图片描述
构建镜像

docker build -t gozerok8s-user-api:v1 .

在这里插入图片描述
镜像构建成功
在这里插入图片描述

3、创建serviceAccount账号,要具有k8s内部的endpoints资源的list、watch、get权限

k8s创建命名空间

4、使用goctl生成rpc、api的yaml部署文件,并且制定第5步创建好的serviceAccount

5、部署,(包含网关配置nodePort)

6、访问测试


网站公告

今日签到

点亮在社区的每一天
去签到