這篇故事改編自 Replicated 聯(lián)合創(chuàng)始人 Marc Campbell 和 Grant Miller 最初撰寫(xiě)的客座文章。若要深入了解 Campbell 和 Miller 如何利用 Cloudflare Access 和 Argo Tunnel 開(kāi)發(fā)基于云的 IaaS 解決方案,請(qǐng)?jiān)L問(wèn) Cloudflare 博客。
毫無(wú)疑問(wèn),這個(gè)世界的 Internet 連接程度越來(lái)越高,部署環(huán)境也越發(fā)復(fù)雜。我們有足夠的理由相信,所有軟件開(kāi)發(fā)都通過(guò) Internet 完成并與 Internet 保持協(xié)同只是時(shí)間問(wèn)題。
成立于 2014 年的 Replicated 是一家基礎(chǔ)設(shè)施軟件公司,致力于開(kāi)發(fā)一種新型企業(yè)軟件交付模型,稱(chēng)為 Kubernetes 現(xiàn)成(KOTS)軟件。他們的目標(biāo)是方便用戶(hù)安裝并操作第三方軟件,這樣一來(lái),將數(shù)據(jù)發(fā)送給多租戶(hù) SaaS 提供商就不再是使用這些提供商服務(wù)的唯一方式了。
“我們認(rèn)為,在不產(chǎn)生大量運(yùn)營(yíng)開(kāi)銷(xiāo)的前提下安全地為你的數(shù)據(jù)提供應(yīng)用程序,既是可能做到的,也是很容易做到的,”Campbell 和 Miller 說(shuō)。
挑戰(zhàn)
Replicated 的開(kāi)發(fā)環(huán)境需要在 Kubernetes 上運(yùn)行,這是因?yàn)?KOTS 在 Kubernetes 中運(yùn)行并在 Kubernetes 群集中管理第三方應(yīng)用程序的生命周期。構(gòu)建和驗(yàn)證產(chǎn)品需要開(kāi)發(fā)人員能夠訪問(wèn)群集。
Replicated 的工程團(tuán)隊(duì)已經(jīng)擴(kuò)大了規(guī)模,包含了專(zhuān)門(mén)的前端工程師和其他專(zhuān)家,而這些專(zhuān)家不應(yīng)該為如何構(gòu)建和維護(hù)自己的群集而擔(dān)心,因此,管理本地環(huán)境變得十分復(fù)雜,成為了一種負(fù)擔(dān)。為了保持開(kāi)發(fā)人員的生產(chǎn)力,他們需要進(jìn)行簡(jiǎn)化。
“我們的工程師每周都要浪費(fèi)幾個(gè)小時(shí)來(lái)對(duì)本地環(huán)境進(jìn)行故障排除,”Campbell 和 Miller 解釋說(shuō)?!爱?dāng)不太熟悉 Kubernetes 的前端工程師遇到問(wèn)題時(shí),他們需要與后端工程師配對(duì)并從后端工程師那里獲得幫助;這樣占用的就不僅僅是一個(gè)人,而是兩個(gè)人的寶貴時(shí)間。我們需要有更好的解決方案?!?/span>
在尋找一款易于實(shí)施和維護(hù)的解決方案時(shí),Replicated 將目光投向了 Cloudflare。他們起初使用 Cloudflare 進(jìn)行 DNS 和 DDoS 保護(hù),但隨著時(shí)間的推移,他們開(kāi)始利用其他 Cloudflare 服務(wù)來(lái)保障自己的服務(wù)可用性和安全性。
Replicated 使用 Cloudflare 保護(hù)其云端開(kāi)發(fā)環(huán)境
Replicated 設(shè)計(jì)出一種解決方案,使用基于云的基礎(chǔ)設(shè)施組件將其開(kāi)發(fā)環(huán)境遷移至基礎(chǔ)設(shè)施即服務(wù)(IaaS)資源,而這些基于云的基礎(chǔ)設(shè)施組件是通過(guò) Cloudflare Access 和 Argo Tunnel 訪問(wèn)并加以保護(hù)的。換句話說(shuō),他們的整個(gè)開(kāi)發(fā)環(huán)境都位于云中。
最終,他們減少了開(kāi)發(fā)人員對(duì)本地環(huán)境進(jìn)行故障排除所耗用的時(shí)間,使團(tuán)隊(duì)中的每個(gè)工程師都可以維護(hù)全棧開(kāi)發(fā)環(huán)境——即使他們沒(méi)有豐富的 Kubernetes 專(zhuān)業(yè)知識(shí)也無(wú)妨。
“與傳統(tǒng)部署相比,這種配置具有多種優(yōu)勢(shì),”Campbell and Miller 表示。“例如,服務(wù)器沒(méi)有公用 IP,我們不需要在 Google Load Balancer 中打開(kāi)任何端口,包括用于 SSH。要連接到這些服務(wù)器,唯一方法是通過(guò) Argo Tunnel,而 Argo Tunnel 是由 Cloudflare Access 保護(hù)的。Access 提供了 BeyondCorp 式的身份驗(yàn)證方法,可確保無(wú)需使用 VPN 即可從全球任何地方訪問(wèn)環(huán)境?!?/span>
Cloudflare Access 打消了安全顧慮
現(xiàn)在,Replicated 可以編寫(xiě)一個(gè)策略來(lái)定義用戶(hù)應(yīng)有權(quán)訪問(wèn)哪些計(jì)算機(jī),并確保將該策略應(yīng)用于所有地方。他們可以允許開(kāi)發(fā)人員使用在其他任何地方使用的相同 Google 憑據(jù)來(lái)登錄,而不必管理 SSH 證書(shū)(這些證書(shū)使用壽命長(zhǎng)且難以撤銷(xiāo))。即使開(kāi)發(fā)人員離開(kāi),他們也可以立即撤銷(xiāo)這些憑據(jù),不必?fù)?dān)心仍有公鑰流落在外。
借助 Cloudflare Access,Replicated 的開(kāi)發(fā)人員可以輕松設(shè)置多個(gè)環(huán)境(例如嘗試新的 k8s 版本),而且不需要為此動(dòng)用最強(qiáng)大的筆記本電腦。他們還可以選擇其本地操作系統(tǒng)和環(huán)境(MacOS、Windows、Linux),因?yàn)橹灰С?SSH,就可以支持每個(gè)版本。此外,由于代碼不在開(kāi)發(fā)人員的筆記本電腦上,因此也不會(huì)被開(kāi)發(fā)人員帶到咖啡店或其他不安全的地方。這是安全方面的一項(xiàng)重大優(yōu)勢(shì),再也不會(huì)因?yàn)閬G失筆記本電腦而使代碼庫(kù)遭到破壞了。
“得益于 Cloudflare Access 和 Argo Tunnel,每個(gè)開(kāi)發(fā)環(huán)境都發(fā)揮了協(xié)作平臺(tái)的作用,”Campbell 和 Miller 說(shuō)道?!爱?dāng)兩個(gè)工程師不在同一房間時(shí),這一點(diǎn)就特別有用。此外,我們也減少了對(duì)開(kāi)發(fā)環(huán)境的依賴(lài)——如果我的服務(wù)器由于未知原因無(wú)法正常工作,我就可以直接刪除,然后獲得一個(gè)全新的服務(wù)器,而不必花費(fèi)數(shù)小時(shí)進(jìn)行故障排除?!?/span>
“Cloudflare Access 提供了 BeyondCorp 式的身份驗(yàn)證方法,可確保無(wú)需使用 VPN 即可從全球任何地方訪問(wèn)環(huán)境?!盡arc Campbell 和 Grant Miller