從.net開發做到雲原生運維(八)——DevOps實踐

GreenShade發表於2022-04-15

1. DevOps的一些介紹

DevOps(Development和Operations的組合詞)是一組過程、方法與系統的統稱,用於促進開發(應用程式/軟體工程)、技術運營和質量保障(QA)部門之間的溝通、協作與整合。
它是一種重視“軟體開發人員(Dev)”和“IT運維技術人員(Ops)”之間溝通合作的文化、運動或慣例。透過自動化“軟體交付”和“架構變更”的流程,來使得構建、測試、釋出軟體能夠更加地快捷、頻繁和可靠。
它的出現是由於軟體行業日益清晰地認識到:為了按時交付軟體產品和服務,開發和運維工作必須緊密合作。

DevOps到底是什麼意思?

什麼是 DevOps?

大家通過閱讀這些文件大概就能瞭解到DevOps的一些概念和優點,提到DevOps不得不提下持續整合和持續交付 (CI/CD)。

2. DevOps在k8s環境下個人的一些實踐

我說的DevOps主要是指一些CI/CD的內容了,主要是以k8s環境進行的操作。

假設一個公司的業務包含windows桌面程式,和一些伺服器端的服務,這些都事先在公司內網進行開發和釋出,驗證通過後才會釋出到公網。

想做到快速的釋出我們可以通過自動化工具進行這些操作,比如jenkinsAzure Pipelines這類工具。

大家都知道微軟的工具都挺好用的,但是可能會出現收費的情況,所以選擇的時候可能就會選擇開源但很臃腫的jenkins,也罷能跑就行吧。為了滿足上面的假設,畫出下圖。

jenkins-k8s

看了圖片我們可以想到我們需要準備的東西:

有了混合叢集的環境,我們就可以進行圖上的一些任務的操作了。對於程式碼審查,大家可以使用這個SonarQube服務,把它單獨部署到叢集,然後暴露出單獨的api可以通過api進行程式碼審查。

對於多環境部署的一些設計,如果測試開發部門聯絡的不太緊密的情況,或者關係都很不好的情況下,那還是建議大家分別建立各自的叢集,對於一些映象倉庫可以公用。

如果開發測試都在一個叢集的情況下倒是也可以。

宗旨就是各自的ingress指向各自的服務,這樣就不會出現訪問錯誤的情況。
ingress-k8s

拉取程式碼=>構建映象=>推送映象=>更新叢集映象

觸發方式可以是程式碼合併的時候或者定時觸發。

這樣作為開發可以做到一天釋出好多遍,這樣的好處就是能夠快速看到開發效果,如果沒問題也能及時的更新到測試和生產環境。縮短軟體交付的週期,是很好的事情。

針對外網正式環境的更新可能會謹慎一些,有些時候我們的原始碼不會直接放到公網,所以我們會把我們的程式的打包成docker映象進行分發更新。

3. DevOps個人的一些感悟

個人感覺在一個公司推廣DevOps,需要多個部門間統一共識,這樣在進行溝通的時候才能高效,在進行一些方案實施的時候也可以很快的落實。當然有些時候如果主要負責的那個人推進方案有阻礙的時候,又不能及時的得到支援,甚至被邊緣化的時候,那方案的實施可能就會稀碎了,而且還會得到很大的一口鍋。

相關文章