protoc --go_out=. --go_opt=paths=source_relative --go-grpc_out=. --go-grpc_opt=paths=source_relative growth.proto
# protoc --go_out=:. --go-grpc_out=require_unimplemented_servers=false:. -I . growth.proto
go install xorm.io/reverse@latest
cd database
reverse -f mysql-growth.yml
# 安装 grpcurl
go install github.com/fullstorydev/grpcurl/cmd/grpcurl@latest
# 使用gRPC服务
grpcurl -plaintext localhost:80 list
grpcurl -plaintext localhost:80 list Growth.UserCoin
grpcurl -plaintext localhost:80 describe
grpcurl -plaintext localhost:80 describe Growth.UserCoin
grpcurl -plaintext localhost:80 describe Growth.UserCoin.ListTasks
# 使用proto文件
grpcurl -import-path ./ -proto growth.proto list
# 使用 protoset 文件
grpcurl -protoset myservice.protoset list Growth.UserCoin
# 调用gRPC服务
grpcurl -plaintext localhost:80 Growth.UserCoin/ListTasks
grpcurl -plaintext -d '{"uid":1}' localhost:80 Growth.UserCoin/UserCoinInfo
protoc --proto_path=. --descriptor_set_out=myservice.protoset --include_imports ./growth.proto
go install github.com/grpc-ecosystem/grpc-gateway/v2/protoc-gen-grpc-gateway@latest
go install github.com/grpc-ecosystem/grpc-gateway/v2/protoc-gen-openapiv2@latest
protoc -I . --grpc-gateway_out ./ \
--grpc-gateway_opt logtostderr=true \
--grpc-gateway_opt paths=source_relative \
--grpc-gateway_opt generate_unbound_methods=true \
growth.proto
# gin路由
curl -X 'GET' "localhost:8080/v1/Growth.UserCoin/ListTasks"
curl -X 'GET' "localhost:8080/v1/Growth.UserGrade/ListGrades"
# grpc-gateway代理
curl -X 'GET' "localhost:8081/v1/Growth.UserCoin/ListTasks"
curl -X 'GET' "localhost:8081/v1/Growth.UserGrade/ListGrades"
# ginserver
# 代码文件 /comm/prometheus.go
# 头部定义数据模型
# var metricsRequest prometheus.Gauge
# 在 main.go 中加入相应方法
# main方法中创建和注册数据以及监听 /metrics路径
# MetricInit
# 服务方法调用的中间件中加入统计指标
# MetricAdd
# 测试请求
curl -X'GET' "localhost:8080/v1/Growth.UserCoin/ListTasks"
# 访问数据
curl "localhost:8080/metrics"
在项目根目录下
CGO_ENABLED=0&& GOOS=linux&& GOARCH=AMD64&& go build -o growth_client mainclient/main.go
CGO_ENABLED=0&& GOOS=linux&& GOARCH=AMD64&& go build -o growth_server mainserver/main.go
CGO_ENABLED=0&& GOOS=linux&& GOARCH=AMD64&& go build -o growth_api ginserver/main.go
mv growth_* dockerfile/
git clone git@github.com:fullstorydev/grpcurl.git
cd ./grpcurl/cmd/grpcurl
CGO_ENABLED=0&& GOOS=linux&& GOARCH=AMD64&& go build .
mv grpcurl.exe dockerfile/
docker build . --file=./dockerfile/Dockerfile --network=host --platform=linux/amd64 -t growthsystem:v1.0
docker run --network=host -it growthsystem:v1.0 /bin/bash
# 查看容器
docker container ls
docker exec -it container_id /bin/bash
docker login -u username -p password
docker push growthsystem:v1.0
docker login -u username -p password
docker pull growthsystem:v1.0
# 查看帮助 kubectl create deployment --help
kubectl create namespace k8stest
kubectl create deployment -n k8stest growthsystem --image=/k8stest/growthsystem:v1.0 --replicas=1
# 查看帮助
kubectl create service --help
# 创建指定namespace的服务
# 将容器内的80端口暴露为80端口对外提供服务
kubectl create service clusterip -n k8stest growthsystem --tcp=80:80
kubectl create service clusterip -n k8stest growthsystem --tcp=8080:8080
kubectl create service clusterip -n k8stest growthsystem --tcp=8081:8081
# 删除一个service
kubectl delete service -n k8stest growthsystem
# 将一个deployment暴露为service:
kubectl expose deployment -n k8stest growthsystem --port=80 --target-port=80 --cluster-ip=
kubectl get svc -A -o wide
kubectl get deployment -n k8stest
kubectl get pods -n k8stest -o wide
kubectl logs -n k8stest growthsystem-xxxx-xxxx
kubectl describe pod growthsystem-xxxx-xxxx
docker container ls
docker exec -it container_id /bin/bash
# pod内部本地访问
./growthclient --addr=127.0.0.1:80
# pod的ip地址
./growthclient --addr=10.244.1.3:80
# 同命名空间的pod内访问service名称
./growthclient --addr=growthsystem:80
# service域名
./growthclient --addr=growthsystem.k8stest.svc.cluster.local:80
Linux安装
curl -fsSL -o get_helm.sh https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3
chmod 700 get_helm.sh
./get_helm.sh
# 安装 kubectl
yum install -y kubectl
安装后的验证
helm version
helm help
# 创建一个新的 chart
helm create growth
helm package growth
helm template growth-0.1.0.tgz
用 Helm 安装升级、卸载应用
helm install growth growth/
helm uninstall growth
# 新增文件 templates/namespace.yaml
# templates/deployment.yaml
# 增加
metadata.namespace: {{ .Values.namespace }}
# 健康检查改为端口监听
livenessProbe.tcpSocket.port: {{ .Values.service.port }}
# 健康检查改为端口监听
readinessProbe.tcpSocket.port: {{ .Values.service.port }}
# templates/service.yaml
# 增加
metadata.namespace: {{ .Values.namespace }}
# templates/serviceaccount.yaml
# 增加命名空间
metadata.namespace: {{ .Values.namespace }}
# values.yaml
# 设置镜像的地址
image.repository: /k8stest/growth
# 设置镜像的版本
image.tag: "v3.0"
# 设置拉取镜像的密钥
imagePullSecrets: [{"name":"qcloudregistrykey"}]
# 增加命名空间
namespace: "k8stest"