# zero-k8s **Repository Path**: hacker__007/zero-k8s ## Basic Information - **Project Name**: zero-k8s - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-07-07 - **Last Updated**: 2025-07-12 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README #### base env base: golang install ok ```shell go env -w GOPROXY=https://goproxy.cn,direct go install github.com/zeromicro/go-zero/tools/goctl@latest goctl env check --install --verbose --force go get -u github.com/zeromicro/go-zero@latest ``` #### docker env ```shell mysql 容器 docker run -d --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=root mysql:8.0 redis 容器 docker run -d --name redis -p 6379:6379 redis:latest etcd 容器 docker run -d --name etcd -p 2379:2379 -e ALLOW_NONE_AUTHENTICATION=yes -e ETCD_ADVERTISE_CLIENT_URLS=http://etcd:2379 -e ETCD_LISTEN_CLIENT_URLS=http://0.0.0.0:2379 bitnami/etcd:latest dtm 容器 docker run --name dtm -p 36789:36789 -p 36790:36790 -e STORE_DRIVER=mysql -e STORE_HOST=localhost -e STORE_USER=root -e STORE_PASSWORD= -e STORE_PORT=3306 yedf/dtm:latest docker run -d --name dtm -p 36789:36789 -p 36790:36790 -e STORE_DRIVER=redis -e STORE_HOST=172.17.23.212 -e STORE_PORT=6379 yedf/dtm:latest jaeger 容器 docker run -d --name jaeger --restart always -p 5778:5778 -p 6831:6831/udp -p 6832:6832/udp -p 16686:16686 -p 14250:14250 -p 14268:14268 -p 14269:14269 jaegertracing/all-in-one prometheus 容器 docker run -d --name prometheus --restart always -p 9090:9090 -v ./prometheus.yml:/etc/prometheus/prometheus.yml prom/prometheus grafana 容器 docker run -d --name grafana --restart always -p 3000:3000 grafana/grafana ``` #### model mock ```shell go install github.com/golang/mock/mockgen@latest cd apps/user_rpc/models mockgen -source=userModel_gen.go -destination=userMock.go -package=models ``` 在对应逻辑下生成对应的测试文件和代码 执行 go test -v ./... 即可 #### user rpc service ```shell cd apps/user_rpc goctl model mysql ddl --src=user.sql --dir ./models --style goZero --cache true goctl rpc protoc user.proto --go_out=./pb --go-grpc_out=./pb --zrpc_out=. --style=goZero goctl docker --go user.go --exe user_rpc docker build -t user_rpc:v1.0 -f Dockerfile . dokcer save -o user_rpc.tar user_rpc:v1.0 ctr -n k8s.io image import user_rpc.tar goctl kube deploy -name user_rpc -namespace dev -image user_rpc:v1.0 -o user_rpc.yaml -port 8001 ``` #### good rpc service ```shell cd apps/good_rpc goctl model mysql ddl --src=good.sql --dir=./models --style=goZero --cache=true goctl rpc protoc good.proto --go_out=./pb --go-grpc_out=./pb --zrpc_out=. --style=goZero goctl docker --go good.go --exe good_rpc docker build -t good_rpc:v1.0 -f Dockerfile. dokcer save -o good_rpc.tar good_rpc:v1.0 ctr -n k8s.io image import good_rpc.tar goctl kube deploy -name good_rpc -namespace dev -image good_rpc:v1.0 -o good_rpc.yaml -port 8002 ``` #### order rpc service ```shell cd apps/order_rpc goctl model mysql ddl --src=order.sql --dir=./models --style=goZero --cache=true goctl rpc protoc order.proto --go_out=./pb --go-grpc_out=./pb --zrpc_out=. --style=goZero goctl docker --go order.go --exe order_rpc docker build -t order_rpc:v1.0 -f Dockerfile. dokcer save -o order_rpc.tar order_rpc:v1.0 ctr -n k8s.io image import order_rpc.tar goctl kube deploy -name order_rpc -namespace dev -image order_rpc:v1.0 -o order_rpc.yaml -port 8003 ``` #### api service ```shell cd apps/api goctl api go -api user.api -dir . --style goZero goctl api go -api good.api -dir . --style goZero goctl api go -api order.api -dir . --style goZero goctl docker --go api.go --exe api docker build -t api:latest -f Dockerfile . dokcer save -o api.tar api:v1.0 ctr -n k8s.io image import api.tar goctl kube deploy -name api -namespace dev -image api:v1.0 -o user_rpc.yaml -port 9000 ``` 注意点: 1. 由于api服务和user_rpc服务在同一层级下, 所以将user_rpc服务中的pb和client复制到api服务下实现rpc服务的调用 2. 为了统一返回格式, 在每一个api接口都需要 returns 返回值, 没有携带信息的可以返回 Empty {} 空结构体 ### k8s 配置 ```shell kubectl create secret docker-registry harbor-secret \ --docker-server=harbor.com \ --docker-username=admin \ --docker-password=Harbor12345 \ --docker-email=admin@qq.com \ -n default ``` ```shell curl --location --request POST 'http://10.104.202.28:9000/api/v1/user/login' \ --header 'Content-Type: application/json' \ --data-raw '{ "id": 0, "name": "user001", "password": "user001" }' curl --location --request POST 'http://10.109.69.41:9000/api/v1/order/create' \ --header 'Authorization: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyX2lkIjoiMSIsImV4cCI6NzUyMjExODM3N30.wMyciqLOuGOicuGCk-K3dh2tkUfWVHPossF1_9jQevQ' \ --header 'Content-Type: application/json' \ --data-raw '{ "user_id": 0, "order_id": 0, "order_total": 0, "order_status": 0, "create_time": 0, "update_time": 0, "delete_time": 0, "goods": [ { "id": 1, "name": "面包", "price": 10, "count": 2 } ] }' ```