基於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