基于Go/Grpc/kubernetes/Istio開發(fā)微服務(wù)的最佳實踐嘗試 - 1/3
基于Go/Grpc/kubernetes/Istio開發(fā)微服務(wù)的最佳實踐嘗試 - 2/3
基于Go/Grpc/kubernetes/Istio開發(fā)微服務(wù)的最佳實踐嘗試 - 3/3
項目地址:https://github.com/janrs-io/Jgrpc
轉(zhuǎn)載請注明來源: https://janrs.com/6rdh
在前兩部分中,我們創(chuàng)建了兩個微服務(wù):pingservice 和 pongservice。 在這一部分中,我們將創(chuàng)建用于自動部署的 CICD pipeline。
我們假設(shè)您已經(jīng)部署了Jenkins/Gitlab/Harbor 和Kubenertes/Istio。
項目結(jié)構(gòu)
devops
├── README.md
├── ping
│ └── dev
│ ├── Deployment.yaml
│ ├── Dockerfile
│ ├── Jenkinsfile
│ └── Service.yaml
└── pong
└── dev
├── Deployment.yaml
├── Dockerfile
├── Jenkinsfile
└── Service.yaml
4 directories, 9 files
實踐
在 Jenkins 上,為每個微服務(wù)項目創(chuàng)建一個目錄,然后在該目錄下創(chuàng)建dev/test/prod流水線。
在 Gitlab 上,設(shè)置三個分支保護(hù)分支:dev/test/prod。 這三個分支用于dev/test/production環(huán)境。這三個分支只能合并不能提交。
如果有新的微服務(wù)要開發(fā),在 dev 分支的基礎(chǔ)上新建一個分支,名稱格式為:dev-*。 例如:dev-ping、dev-pong。
然后為每個分支設(shè)置 webhook ,自動觸發(fā) Jenkins pipeline 自動部署到 kubernetes 集群。
微服務(wù)本地開發(fā)需要調(diào)試. 可以使用 kubefwd 工具或者kubernetes 官方推薦的 telepresence 。
大型開發(fā)實踐
如果你的公司發(fā)展到集團化規(guī)模,需要異地協(xié)同開發(fā),可以將devops、istio-manifests、kubernetes-manifests分開,創(chuàng)建一個獨立的 git-repo 進(jìn)行管理。
并且還可以在src/目錄下將不同的微服務(wù)分開,創(chuàng)建不同的 git-repos 進(jìn)行管理。
不同團隊需要將開發(fā)好的 grpc 接口文檔化并發(fā)布到網(wǎng)上,所有人員根據(jù)網(wǎng)上的接口文檔進(jìn)行開發(fā)調(diào)試。
相關(guān)項目和資料
感謝以下資源的貢獻(xiàn)者:
轉(zhuǎn)載請注明來源: https://janrs.com/6rdh