【51CTO.com快譯】DevOps團(tuán)隊在急于利用云原生應(yīng)用開發(fā)和Kubernetes等工具之后,現(xiàn)在需要考慮更多。在許多情況下,DevOps采用Jenkins等早期的持續(xù)集成/持續(xù)部署(CI/CD)管道工具,現(xiàn)在試圖將它們運(yùn)用于之前不適合的云原生場景。
云原生將開發(fā)者拉到基礎(chǔ)設(shè)施相關(guān)操作上,目前的CD工具無法幫助恢復(fù)開發(fā)者在改用微服務(wù)架構(gòu)之前曾擁有的應(yīng)用級上下文,為部署后應(yīng)用軟件的開發(fā)工作流程和可觀察性增添了復(fù)雜性。DevOps 團(tuán)隊在應(yīng)用軟件策略管理方面也面臨新挑戰(zhàn),尤其在嚴(yán)格監(jiān)管的行業(yè),因為它們在調(diào)整流程,以便在云原生環(huán)境建立信任和安全。與此同時,DevOps需要重新評估自動化方法和消除人為錯誤的策略,因為云和Kubernetes部署重新面臨非常乏味的手動工作。
以下是DevOps需仔細(xì)考慮戰(zhàn)略(宜早不宜遲)的三個方面,為云原生2.0未來做好準(zhǔn)備,從而使云原生環(huán)境能夠更有效地得到運(yùn)用。
1. 具有更高互操作性和可組合性的 CI/CD
考慮到現(xiàn)有的選擇范圍不斷擴(kuò)大,在云原生2.0環(huán)境下,選擇和實施CI/CD工具變得更令人關(guān)注,但這也是一個戰(zhàn)略性挑戰(zhàn)。一些工具在開發(fā)管道早期提供了優(yōu)勢,另一些在末期提供了優(yōu)勢。從CI到CD到發(fā)布自動化(RA),DevOps團(tuán)隊需要檢查潛在的工具以及如何將它們拼湊在一起,以組建一條優(yōu)雅和諧的管道。遺憾的是,正如許多DevOps 團(tuán)隊所熟知,這說起來容易做起來難。一些端到端解決方案還會帶來鎖定現(xiàn)象及其他不良方面,一些同類中優(yōu)秀的零散解決方案可能無法很好地兼容。
我希望和預(yù)測,在不久的將來,會出現(xiàn)更高的互操作性。作為云原生2.0的一部分,以至于 CI、CD、RA 甚至面向治理和合規(guī)的解決方案都完全即插即用。到時,DevOps就能為特定需求選擇最合適的解決方案,然后它會發(fā)揮作用。
眼下,在我們等待這個即插即用愿景到來之際,可組合性是DevOps應(yīng)在將來物色的解決方案應(yīng)具有的一個至關(guān)重要的方面。管道組件輕松交互的能力簡化了無數(shù)使用場景以及關(guān)鍵的安全和合規(guī)問題??缭圃艿缹嵤┎呗则?qū)動的限制需要帶來廣泛可組合性的DevOps工具鏈。幸好,許多CI/CD系統(tǒng)在這方面做得很好:讓擴(kuò)展和插件可以使跨管道的可組合性成為現(xiàn)實。
2. 利用應(yīng)用策略管理
必須針對整個應(yīng)用開發(fā)和部署生命周期制定策略,以確保遵循重要的安全和治理規(guī)則。不能跳過任何可能引入漏洞的步驟。對于在云原生環(huán)境工作的DevOps團(tuán)隊來說,實施這些策略因Kubernetes 及其替代方案的高度復(fù)雜性而變得愈加困難。
作為一種策略,DevOps應(yīng)利用這種工具和框架:1)使開發(fā)者免受Kubernetes復(fù)雜性的影響,2)保護(hù)他們免受風(fēng)險。比如說,如果您將構(gòu)建映像部署到Docker存儲庫(比如 Docker Hub),它包含用于檢測和報告漏洞及其他安全故障的工具。內(nèi)部源代碼掃描可以識別合并請求中的漏洞。工具還應(yīng)該支持跨團(tuán)隊的協(xié)作和關(guān)鍵知識的共享。從結(jié)構(gòu)上來講,將 DevSecOps 嵌入到開發(fā)團(tuán)隊中、處理安全問題(作為常規(guī)流程的一部分)是明智的。
鑒于相鄰的DevSecOps和工具能夠?qū)Ω渡蒏ubernetes對象和維護(hù)環(huán)境之類的挑戰(zhàn),開發(fā)者可以專注于代碼和解決業(yè)務(wù)問題。這就是他們想要做的,這也是他們的目的。還應(yīng)該使用擁有強(qiáng)大應(yīng)用框架的工具來定義和實施DevSecOps控制的策略,這些策略會自動禁止危險活動和錯誤。有了合適的應(yīng)用策略管理框架,如果開發(fā)者誤嘗試部署受污染的映像,他們就無法這么做。此類框架可以實施安全策略和資源限制,啟用或禁用安全掃描,管理CVE 被標(biāo)記還是被忽略,以及控制團(tuán)隊對整個云原生環(huán)境中的Kubernetes和服務(wù)的訪問。
3. 兼顧自動化和審計
應(yīng)用開發(fā)中的人為錯誤會降低生產(chǎn)力。通常更大的擔(dān)憂是加大安全和合規(guī)風(fēng)險。自動化和審計存在有趣的關(guān)系:自動化減少人為錯誤,而審計讓人可以解決自動化造成的錯誤。
有點(diǎn)出人意料的是,云原生環(huán)境促使人們回到非常手動的流程,從而使新的自動化對于開發(fā)者生產(chǎn)力變得更重要。比如說,原始Kubernetes及其Helm圖表和YAML文件需要大量的腳本和手動部署工作。(從本人使用Kubernetes的情況來看,我認(rèn)為如果每次我在編寫 YAML文件出錯時都往罐子里投入一美元,我會塞滿好幾只罐子。)抽取掉開發(fā)者不關(guān)心的Kubernetes的具體細(xì)節(jié)的自動化很受歡迎。
自動化最適合帶來預(yù)期結(jié)果的可重復(fù)任務(wù),比如掃描安全問題、檢查代碼使用安全且經(jīng)過驗證的庫等。有效的自動化不是一勞永逸的自動化——它需要監(jiān)督和維護(hù)。比如說,自動化系統(tǒng)可能會標(biāo)記實際上無害的CVE,需要人來判斷以完善系統(tǒng)。完全有可能使不可信的不良流程實行自動化,因此最終只會帶來更多問題。正確的策略是,先開發(fā)值得信賴的手動系統(tǒng),然后根據(jù)需要實現(xiàn)自動化。
通過利用可組合的CI/CD解決方案和謹(jǐn)慎的策略,使安全簡化的應(yīng)用開發(fā)實現(xiàn)自動化,DevOps可以最大限度地減少云原生環(huán)境的挑戰(zhàn),同時讓開發(fā)者可以提高創(chuàng)造力和生產(chǎn)力。
原文標(biāo)題:Cloud Native 2.0: 3 DevOps Strategies to Consider Now,作者:Henrik Rosendahl
【51CTO譯稿,合作站點(diǎn)轉(zhuǎn)載請注明原文譯者和出處為51CTO.com】