本文來自微信公眾號(hào)“開源云中文社區(qū)”。
Kubefirst提供由流行的免費(fèi)開源云原生工具制成的即時(shí)GitOps平臺(tái)。多年來,我們一直支持AWS云,我們的平臺(tái)在Elastic Kubernetes Service(EKS)上運(yùn)行良好。我們最近宣布擴(kuò)大對(duì)新Civo云的支持,這是一種在Kubernetes上運(yùn)行所有基礎(chǔ)設(shè)施的云原生云。這兩種云之間有一些相當(dāng)驚人的差異,但有些東西幾乎完全相同,這讓筆者思考了行業(yè)是如何走到這一步的。
還記得最初的公共云嗎?
還記得公共云是什么時(shí)候出現(xiàn)的嗎?2013年,AWS試圖通過其在彈性計(jì)算云(EC2)中的自助基礎(chǔ)設(shè)施公共云模型,進(jìn)一步鞏固其在新的云計(jì)算領(lǐng)域的地位。幾年后,谷歌云平臺(tái)(Google Cloud Platform)和微軟Azure宣布了自己的數(shù)據(jù)中心,這進(jìn)一步鞏固了從自我管理數(shù)據(jù)中心的架構(gòu)向云的轉(zhuǎn)變。
盡管與內(nèi)部部署云基礎(chǔ)設(shè)施相比,公共云基礎(chǔ)設(shè)施的計(jì)算成本更高,但通過利用可重復(fù)的按需云基礎(chǔ)設(shè)施節(jié)省的總體時(shí)間和資金促使公司開始拆除機(jī)架,將基礎(chǔ)設(shè)施轉(zhuǎn)移到公共云。自助服務(wù)模式為開發(fā)人員提供了更多的權(quán)力,減少了DevOps領(lǐng)域的移交,并為工程團(tuán)隊(duì)提供了更多自主權(quán)。公共云將繼續(xù)存在。
IaC變革
盡管基礎(chǔ)設(shè)施IT ticket低迷的日子已經(jīng)成為過去,但對(duì)于許多組織來說,云的潛力仍然沒有得到開發(fā)。按照Tesler定律,向公共云的轉(zhuǎn)變并沒有完全消除系統(tǒng)的復(fù)雜性。
為了解決這種復(fù)雜性,我們需要新的自動(dòng)化方式來管理基礎(chǔ)設(shè)施,基礎(chǔ)設(shè)施即代碼(IaC)盡了最大努力來應(yīng)對(duì)這一挑戰(zhàn)。CloudFormation、Ansible、Chef、Puppet和Terraform等新技術(shù)都盡了最大努力來滿足需求,但從涉及到基礎(chǔ)設(shè)施,通常仍然是一個(gè)相當(dāng)復(fù)雜和定制的過程。
容器變革
大約在同一時(shí)間,另一場(chǎng)運(yùn)動(dòng)正在席卷應(yīng)用領(lǐng)域:容器化。當(dāng)時(shí)主要基于Docker,將應(yīng)用程序容器化是創(chuàng)建一致的應(yīng)用程序運(yùn)行時(shí)環(huán)境的一種新方式,可以將應(yīng)用程序與其運(yùn)行的基礎(chǔ)設(shè)施隔離開來。
有了容器化,我們突然能夠在不同的操作系統(tǒng)或分發(fā)版上以相同的方式運(yùn)行應(yīng)用程序,無論是筆記本電腦、內(nèi)部基礎(chǔ)設(shè)施還是公共云。這解決了公司在基礎(chǔ)設(shè)施需求開始向新方向急劇轉(zhuǎn)變時(shí)突然出現(xiàn)的許多問題。
擁有經(jīng)典單體應(yīng)用程序的組織開始探索如何利用基于容器的微服務(wù)來優(yōu)化其軟件開發(fā)和擴(kuò)展難題。隨著容器化世界的發(fā)展,團(tuán)隊(duì)開始構(gòu)建容器化的微前端,調(diào)用容器化的微后端,微產(chǎn)品的擴(kuò)張開始變得難以管理。這一點(diǎn)在大規(guī)模應(yīng)用程序、基礎(chǔ)設(shè)施、秘密和可觀察性的管理中尤為明顯。
編排之戰(zhàn)
隨著將應(yīng)用程序放入容器的運(yùn)動(dòng)以及由此產(chǎn)生的微服務(wù)和容器化微產(chǎn)品的激增,帶來了一個(gè)新的挑戰(zhàn):管理所有這些服務(wù)。
HashiCorp Nomad、Docker Swarm和Kubernetes(現(xiàn)在是CNCF的一部分)迅速進(jìn)入了市場(chǎng)。
每一個(gè)都有其獨(dú)特的優(yōu)勢(shì),但Kubernetes憑借其聲明性設(shè)計(jì)、操作系統(tǒng)和云可移植性,以及前所未有的強(qiáng)大用戶社區(qū),脫穎而出?;赮AML的系統(tǒng)可以很容易地將你想要的狀態(tài)組織成簡(jiǎn)單的文件,這些文件代表了應(yīng)用程序工作所需的一切。它可以在任何云中運(yùn)行,在內(nèi)部部署基礎(chǔ)設(shè)施上運(yùn)行,甚至在筆記本電腦上運(yùn)行,它擁有一個(gè)由云原生工程師組成的龐大社區(qū),他們對(duì)現(xiàn)代解決方案有著統(tǒng)一的愿景。
Kubernetes改進(jìn)
云原生工程師很快發(fā)現(xiàn),所有在Kubernetes內(nèi)部運(yùn)行的軟件都比在Kubernet外部運(yùn)行的軟件更容易管理。人們開始形成這樣的觀點(diǎn):如果你的產(chǎn)品沒有Helm圖表(Kubernetes包管理器),那么負(fù)責(zé)平臺(tái)技術(shù)選擇的云原生工程師可能不太喜歡它。畢竟,如果需要安裝復(fù)雜的第三方軟件,你喜歡運(yùn)行幾秒鐘的Helm安裝命令,而不是一頁接一頁的安裝指南和容易出錯(cuò)的說明。
機(jī)會(huì)主義的軟件供應(yīng)商很快就抓住了這一趨勢(shì),并狂熱地開始重新架構(gòu)系統(tǒng)由Helm安裝并在Kubernetes上運(yùn)行。提供具有復(fù)雜微架構(gòu)的復(fù)雜多組件軟件包,但仍能輕松安裝到任何云環(huán)境,這一承諾一直是軟件交付團(tuán)隊(duì)的夢(mèng)想,最終在Kubernetes的掌舵下實(shí)現(xiàn)了這一目標(biāo)。
你的云需要有多復(fù)雜?
我們首先構(gòu)建了Kubefirst,在世界上最大的公共云AWS中提供即時(shí)云原生(Kubernetes)平臺(tái),它在那里運(yùn)行得很好。AWS云的成熟度在很大程度上是無與倫比的。如果你需要處理大量復(fù)雜性、從各個(gè)角度符合聯(lián)邦信息處理標(biāo)準(zhǔn)(FIPS)的端點(diǎn)、具有巨大數(shù)據(jù)量的極端規(guī)模等,那么選擇“三大”(AWS、谷歌云或微軟Azure)中的一個(gè)是很正常的選擇。
如果你在這種類型的環(huán)境中工作,kubeirst的速度非???,可以將12個(gè)月的平臺(tái)構(gòu)建變成一個(gè)30分鐘的命令(kubeirst-aws-create)。
我們?nèi)匀幌矚gAWS。然而,當(dāng)我們問社區(qū)應(yīng)該擴(kuò)展到什么云時(shí),我們發(fā)現(xiàn)人們對(duì)一個(gè)更簡(jiǎn)單的云選項(xiàng)感興趣,該選項(xiàng)專注于托管Kubernetes。Civo、Vultr、DigitalOcean等較新的云提供商以其快速的集群供應(yīng)時(shí)間和顯著降低的復(fù)雜性而著稱。由于要管理的資源比云先驅(qū)所能提供的要少,你可以更快地進(jìn)入新集群。
讓我們從Terraform云資源的角度來分解這一點(diǎn),即基礎(chǔ)設(shè)施即代碼中的對(duì)象代碼。為了在AWS中從頭開始創(chuàng)建一個(gè)新的kubefirst即時(shí)平臺(tái),我們的kubeirst CLI需要提供95個(gè)AWS云資源。這包括所有內(nèi)容——專有網(wǎng)絡(luò)、子網(wǎng)、密鑰管理服務(wù)密鑰、狀態(tài)存儲(chǔ)桶、后端、身份和訪問管理(IAM)角色、策略綁定、安全組以及EKS集群本身。這些資源中的許多都是在Kubefirst平臺(tái)內(nèi)的Terraform模塊后面抽象出來的,因此從平臺(tái)工程師的角度來看,云的復(fù)雜性已經(jīng)大大降低,但仍有相當(dāng)多的“云在運(yùn)行”。如果你的組織需要的話,這也是一個(gè)非常復(fù)雜的企業(yè)級(jí)設(shè)置。
但這種復(fù)雜是有代價(jià)的。要配置這95個(gè)資源并讓你進(jìn)入集群,你需要等待大約25分鐘的完全自動(dòng)化時(shí)間,其中大部分時(shí)間都在等待集群配置。配置主控制平面大約需要15分鐘,配置節(jié)點(diǎn)組并將其連接到主控制平面需要10分鐘。如果需要銷毀所有這些資源,還需要20分鐘的(自動(dòng))等待。
但是,要在Civo擁有相同的Kubefirst平臺(tái),你只需要管理三個(gè)Terraform資源,而不是95個(gè),而且你可以在大約四分鐘內(nèi)完成同樣的任務(wù),而不是45分鐘的供應(yīng)和銷毀。當(dāng)基礎(chǔ)設(shè)施是更改和測(cè)試的一部分時(shí),這對(duì)平臺(tái)團(tuán)隊(duì)來說是一個(gè)非常重要的細(xì)節(jié)。
平臺(tái)工程與云原生云的興起
平臺(tái)工程是一種新興的實(shí)踐,它允許組織通過建立一個(gè)平臺(tái)團(tuán)隊(duì)來構(gòu)建一個(gè)自助開發(fā)平臺(tái)作為其產(chǎn)品,從而實(shí)現(xiàn)軟件交付的現(xiàn)代化。該實(shí)踐要求平臺(tái)團(tuán)隊(duì)定期迭代基礎(chǔ)設(shè)施、云原生應(yīng)用程序套件、應(yīng)用程序CI/CD以及第2天的可觀察性和監(jiān)控。隨著整個(gè)軟件開發(fā)生態(tài)系統(tǒng)的不斷供應(yīng)成為新常態(tài),在迭代之間花費(fèi)45分鐘而不是4分鐘會(huì)給平臺(tái)團(tuán)隊(duì)的生產(chǎn)力造成高昂的成本。
即使你最終會(huì)需要“三大”云的復(fù)雜性,這并不意味著你今天需要借用云的復(fù)雜性。Kubefirst能夠從平臺(tái)中抽象出云,因此你今天可以在kubefirst civo上構(gòu)建平臺(tái),明天可以使用所有相同的云原生平臺(tái)工具以相同的方式工作,將其轉(zhuǎn)移到kubefirst aws。
云原生云上的Kubefirst平臺(tái)
Kubefirst在AWS、Civo、Vultr(beta)、DigitalOcean(beta)和有k3d Kubernetes的本地主機(jī)上提供開源即時(shí)全自動(dòng)開源云原生平臺(tái)。
要?jiǎng)?chuàng)建新的Civo帳戶,請(qǐng)?zhí)砑右粋€(gè)域,在域注冊(cè)商處配置名稱服務(wù)器記錄,然后運(yùn)行kubefirst civo create。
幾分鐘內(nèi),你將擁有:
——添加到你的GitHub/GitLab的gitops repo為新平臺(tái)提供了動(dòng)力,因此你可以添加喜歡的工具并根據(jù)需要擴(kuò)展平臺(tái)。
——Civo云和Kubernetes集群由Terraform IaC提供和配置。
——云原生平臺(tái)應(yīng)用程序配置的GitOps注冊(cè)表,預(yù)配置為彼此良好協(xié)作。
——HashiCorp Vault秘密管理,所有平臺(tái)秘密都已預(yù)配置并綁定到各自的工具。
——一個(gè)為管理員和工程師提供單點(diǎn)登錄(SSO)的用戶管理平臺(tái),以及一個(gè)預(yù)配置為與所有平臺(tái)工具一起使用的OpenID Connect(OIDC)提供商。
——一個(gè)示例React微服務(wù),其源代碼演示了GitOps管道以及向新的Kubernetes開發(fā)、階段和生產(chǎn)環(huán)境的交付。
——Argo工作流模板庫,用于執(zhí)行GitOps CI并將Kubernetes原生CI與GitHub Actions/GitLab管道集成。
——Atlantis將任何Terraform更改與你的拉取或合并請(qǐng)求工作流集成,以便基礎(chǔ)設(shè)施更改實(shí)現(xiàn)自動(dòng)化并可供團(tuán)隊(duì)審核。
——自托管GitLab/GitHub運(yùn)行程序,讓工作負(fù)載免費(fèi)且無限制地使用。
使用Kubefirst,你可以丟棄生產(chǎn)集群,因?yàn)橄乱淮蔚鷰追昼娋涂捎昧?mdash;—云原生云的興起就在這里。