基于Go/Grpc/kubernetes/Istio开发微服务的最佳实践尝试 - 3/3
基于Go/Grpc/kubernetes/Istio开发微服务的最佳实践尝试 - 1/3
基于Go/Grpc/kubernetes/Istio开发微服务的最佳实践尝试 - 2/3
基于Go/Grpc/kubernetes/Istio开发微服务的最佳实践尝试 - 3/3
项目地址:https://github.com/janrs-io/Jgrpc
转载请注明来源: https://janrs.com/6rdh
在前两部分中,我们创建了两个微服务:pingservice
和 pongservice
。 在这一部分中,我们将创建用于自动部署的 CICD pipeline
。
我们假设您已经部署了Jenkins/Gitlab/Harbor
和Kubenertes/Istio
。
项目结构
devops
├── README.md
├── ping
│ └── dev
│ ├── Deployment.yaml
│ ├── Dockerfile
│ ├── Jenkinsfile
│ └── Service.yaml
└── pong
└── dev
├── Deployment.yaml
├── Dockerfile
├── Jenkinsfile
└── Service.yaml
4 directories, 9 files
实践
在 Jenkins
上,为每个微服务项目创建一个目录,然后在该目录下创建dev/test/prod
流水线。
在 Gitlab
上,设置三个分支保护分支:dev/test/prod
。 这三个分支用于dev/test/production
环境。这三个分支只能合并不能提交。
如果有新的微服务要开发,在 dev
分支的基础上新建一个分支,名称格式为:dev-*
。 例如:dev-ping、dev-pong
。
然后为每个分支设置 webhook
,自动触发 Jenkins pipeline
自动部署到 kubernetes
集群。
微服务本地开发需要调试. 可以使用 kubefwd 工具或者kubernetes
官方推荐的 telepresence 。
大型开发实践
如果你的公司发展到集团化规模,需要异地协同开发,可以将devops
、istio-manifests
、kubernetes-manifests
分开,创建一个独立的 git-repo
进行管理。
并且还可以在src/
目录下将不同的微服务分开,创建不同的 git-repos
进行管理。
不同团队需要将开发好的 grpc
接口文档化并发布到网上,所有人员根据网上的接口文档进行开发调试。
相关项目和资料
感谢以下资源的贡献者:
- GoogleCloudPlatform/microservices-demo
- GitOps Decisions: Creating a Mature Pipeline
- buf build
- wire
- gRPC Ecosystem
转载请注明来源: https://janrs.com/6rdh
相关文章
- 【愚公系列】2022年07月 Go教学课程 027-深拷贝和浅拷贝
- Go 进阶训练营 – 错误处理一:最佳实践
- 2022全球程序员薪资排行:中国倒数,美国写Go最挣钱
- Go | 基本数据类型详解
- Go 快速入门篇(二):项目工程管理示例(基于 Go Modules)
- Go 数据类型篇(七):字典使用入门与字典排序实现
- 一文学会 Go 的三个主流开发框架| 青训营笔记
- Kubernetes 领进门 | 使用 k3s 快速部署 kubernetes 集群
- Go-Excelize API源码阅读(四十一)——GetCellRichText
- Go语言中常见100问题-#12 Project misorganization
- Go——基础(2)
- 基于Go/Grpc/kubernetes/Istio开发微服务的最佳实践尝试 - 2/3
- Excelize 发布 2.7.1 版本,Go 语言 Excel 文档基础库
- Go语言——Json处理
- go pprof命令(Go语言性能分析命令)完全攻略
- Go基础之–接口详解编程语言
- go语言之if语句和switch语句和循环语句详解编程语言
- 部署Go语言程序到Linux服务器
- Go_笔试题记录-不熟悉的详解编程语言
- 使用Go语言实现Redis数据库(用go实现redis)
- Go语言操作Oracle轻松实现数据库编程(go语言访问oracle)
- 新技术Go语言解析Oracle数据库日志(go解析oracle日志)
- 程序Go语言调用Oracle数据库驱动程序指南(go oracle驱动)
- 语句使用Oracle中的Go语句来简化编程(oracle中go)