三个主流云提供商(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显示结果,而不是将可观察性留给用户。