问题描述
在使用EKS、Jenkins、Ansible、Terraform以及BitBucket等工具时,遇到了一个问题:虽然拥有这些工具,但它们似乎并未形成一个完整的流水线。用户想知道是否需要引入更多工具(如FluxCD、ArgoCD、drone.io等),还是只需要将现有工具串联起来。目前,Jenkins主要用于业务应用的部署,但如果用户想要部署像Fluentd到集群或Pod安全策略之类的东西,通常需要手动进行部署。用户希望找到一种以安全性为前提的现代CICD方法,大部分用例涉及将应用部署到Kubernetes上,但也有一些特殊的用例(比如防火墙自动化)。
解决方案
以下解决方案基于提供的问答数据以及我的知识库。请在实施操作前充分了解,并备份重要数据。
综合运用现有工具
你已经拥有了解决问题所需的工具。根据你的问题描述,我假设你已经在应用开发中设置了自动化的代码质量和安全扫描。如果尚未将应用程序打包为Helm以便在Kubernetes中部署,我建议你开始尝试这样做。你希望自动化预构建应用程序和基础架构的部署到EKS或云平台(如AWS)。
Helm 部署应用程序:
如果要将应用程序部署到EKS集群,Terraform允许你通过Helm进行部署。因此,你的Jenkins流水线可以部署Terraform基础设施,该基础设施使用kubernetes、eks、helm、AWS等提供程序来配置基础设施和应用程序。通常,自定义应用程序、预构建应用程序和基础架构都有单独的流水线。每个流水线都需要进行质量、安全性和弹性检查,所以在前进的过程中可能需要一些额外的工具。Terraform 部署基础设施:
如果需要将基础设施部署到EKS集群,Terraform是一个很好的选择。Jenkins可以运行Terraform以部署基础设施和基础服务。以下是Terraform在自动化流水线中的使用示例:https://learn.hashicorp.com/terraform/development/running-terraform-in-automation整体思路:
不需要添加更多的工具,而是深入探索现有工具的用法。你可以这样来思考:CI/CD的任务调度和编排:Jenkins
- Jenkins将协调整个CI/CD流程
应用程序部署:Helm
- Helm可用于部署和管理所有应用程序
- 应用程序可以通过Jenkins或Terraform部署
基础设施部署:Terraform
- Terraform可以通过Jenkins运行,以部署基础设施和基本服务
Azure DevOps 方案
如果你希望将所有的CI/CD活动整合到一个流程中,可以考虑使用Azure DevOps。Azure DevOps支持与Jenkins、Ansible、Kubernetes等第三方/开源CI/CD工具集成。这样,你可以使用现有的工具,如Jenkins和Ansible,并与Azure DevOps连接,创建连接的CI/CD流水线。这种方法可以将所有CI/CD活动整合到一个自动化流程中。
总结
在现代化的CICD方法中,你已经拥有了实现目标所需的工具。你可以深入了解现有工具的用法,将它们结合起来,以实现自动化部署和持续交付。同时,你还可以考虑使用Azure DevOps来整合所有的CI/CD活动,从而实现更加高效和协调的流程。
请根据你的实际情况选择合适的方案,并在实施操作前充分了解相关工具和流程。