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

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