下一年值得關(guān)注的科技與應(yīng)用:運(yùn)營開發(fā)和網(wǎng)站可靠性工程師看過來
本文轉(zhuǎn)載自公眾號“讀芯術(shù)”(ID:AI_Discovery)。
三個(gè)主流云提供商(AWS/Azure/GCP)現(xiàn)在都支持通過自定義資源定義(CRDs)來從Kubernetes中提供和管理云服務(wù)。AWS有在開發(fā)者預(yù)覽過程中服務(wù)Kubernetes的AWS控制器(ACK);Azure最近發(fā)布了Azure 服務(wù)運(yùn)行器(棄用了Azure的開放服務(wù)代理器);GCP研發(fā)了配置連接器作為GKE的附屬物。
雖然諸如Terraform,Ansible和puppet的基礎(chǔ)設(shè)施即代碼類(IaC)工具仍在被廣泛運(yùn)用于管理云基礎(chǔ)設(shè)施,但對使用Kubernetes管理的云服務(wù)的支持表明,企業(yè)將把Kubernetes作為云基礎(chǔ)設(shè)施的焦點(diǎn),這是一個(gè)巨大的轉(zhuǎn)變。
轉(zhuǎn)變的有利之處在于開發(fā)者們現(xiàn)在能用同樣的工具來管理Kubernetes應(yīng)用和其他使用Kubernetes APIs的云服務(wù),潛移默化中將工作流精簡化。然而,根據(jù)你當(dāng)前的基礎(chǔ)設(shè)施工作流或?qū)ubernetes專業(yè)知識的掌握程度,你可能并不希望讓Kubernetes和其他云工作負(fù)載之間實(shí)現(xiàn)這種緊密的耦合。
Pulumi
提起Iac工具,Pulumi近期宣布了它將在B系列投資3750萬美元,挑戰(zhàn)Terraform在這個(gè)領(lǐng)域中的主導(dǎo)地位。與傳統(tǒng)的IaC產(chǎn)品不同,Pulumi選擇讓開發(fā)者們使用他們喜歡的語言(比如Go,Python,Javascript)編寫基礎(chǔ)架構(gòu)代碼,而不是強(qiáng)迫他們使用另一種基于JSON/YAML的領(lǐng)域特定語言。
這個(gè)選擇使Pulumi比Terraform更為靈活,且讓開發(fā)者們能使用現(xiàn)有的測試框架來檢驗(yàn)他們的基礎(chǔ)架構(gòu)。然而,考慮到它畢竟初出茅廬,Pulumi的社群還是遠(yuǎn)遠(yuǎn)小于Terraform。
Terragrunt和TFSEC
與Pulumi不同,Terraform通過它開放資源的社群彌補(bǔ)短板。Terragrunt是一個(gè)圍繞Terraform的“薄包裝器”,通過將配置組織到版本化的模塊中,幫助團(tuán)隊(duì)管理大型Terraform項(xiàng)目。Terragrunt實(shí)施了由Gruntwork聯(lián)合創(chuàng)始人Yevgeniy Brikman提出的一些最佳舉措。
雖然Terragrunt是完全開源的,但Gruntwork最近宣布為尋求更多可生產(chǎn)服務(wù)的企業(yè),開始提供商業(yè)支持。TFSEC是另一個(gè)能夠?qū)嵤㏕erraform工程的開源工具。它通過使用靜態(tài)分析來標(biāo)記基礎(chǔ)架構(gòu)代碼中的潛在安全威脅。
隨著安全問題在DevSecOps運(yùn)動(dòng)中得到越來越多的關(guān)注,像tfsec這樣的工具在未來將變得越來越重要。
Tekton
CI/CD市場充斥著Jenkins和Spinnaker等成熟工具以及ArgoCD等新興的云原生工具。Tekton是這個(gè)領(lǐng)域的新玩家,它專注于Kubernetes的工作負(fù)載。Tekton最初是Knative項(xiàng)目的一部分,后來捐給了持續(xù)交付基金會(CDF)。
Tekton特殊之處在于它通過Kubernetes CRDs定義管道。這允許管道在保持Kubernetes的原有特性(例如回滾)的同時(shí),并與Jenkins X或ArgoCD等現(xiàn)有工具集成,以支持復(fù)雜的端到端CI/CD管道。
Trivy
容器的漏洞掃描正在成為所有CI/CD管道的重要組成部分。像CI/CD市場一樣,有很多開源的商業(yè)工具,包括Docker Bench for Security、Clair、Cilium、Anchore Engine和Falco。
Trivy是一個(gè)來自AquaSecurity的工具,它不僅可以掃描容器,還可以掃描代碼中的底層包。結(jié)合Aqua Security的kube-bench,組織可以更容易地將安全性融入到應(yīng)用程序開發(fā)工作流中。
ShellCheck
盡管在基礎(chǔ)設(shè)施工具領(lǐng)域有了巨大的改進(jìn),shell腳本仍然保持在各種工作流中完成簡單任務(wù)的功能。ShellCheck是一個(gè)靜態(tài)分析工具,用于對shell腳本進(jìn)行語法和常見錯(cuò)誤的修改。ShellCheck可以在web、終端/CI以及您最喜歡的文本編輯器(如Vim、Sublime、Atom、VS Code)中運(yùn)行。

Pitest/Stryker
Pitest (Java)和Stryker(Javascript、c#、Scala)都用各自的語言實(shí)現(xiàn)了突變測試。進(jìn)行突變測試時(shí),會故意向測試注入錯(cuò)誤并檢查即使發(fā)生了突變,測試是否仍然通過,以此來衡量測試的質(zhì)量。當(dāng)測試用例發(fā)生突變時(shí),此次單元測試就失敗了。突變測試補(bǔ)充測試覆蓋率,以檢測未測試和未充分測試的代碼。
Litmus
早在2011年,Netflix就用chaos Monkey作為猿類軍隊(duì)工具套件的一部分推廣了混沌工程。在Kubernetes的世界里,有很多混亂的工程工具,如chaoskube、kube-monkey和PowerfulSeal,還有像Gremlin這樣的商業(yè)平臺。我想強(qiáng)調(diào)的是,Litmus是一種成熟的混沌工程解決方案,它可擴(kuò)展且易于使用。
Litmus是一個(gè)輕量級的Kubernetes運(yùn)算符,由ChaosEngine、ChaosExperiment和ChaosResult組成。Litmus支持細(xì)粒度的實(shí)驗(yàn),這種實(shí)驗(yàn)不僅僅是簡單地在名稱空間中殺死隨機(jī)的pods,而是通過ChaosResult CRD顯示結(jié)果,而不是將可觀察性留給用戶。