这篇博客文章是 Amazon Web Services 与 HashiCorp 合作的成果。HashiCorp 是 AWS 合作伙伴网络 (APN) 的高级技术合作伙伴,在开发运营和容器方面均具有 AWS 能力。
简介
有些客户在 Amazon Elastic Kubernetes Service (Amazon EKS) 上运行基于微服务的应用程序,他们需要使用 Jenkins 和 Spinnaker 构建完整的端到端持续集成 (CI) 和持续部署/交付 (CD) 管道方面的指导。Jenkins 是非常流行的 CI 服务器,具有强大的社区支持和许多插件 (Slack、GitHub、Docker、Build Pipeline) 可用。Spinnaker 提供自动发布和内置部署功能,并支持即开即用的蓝/绿部署。
这篇文章是在 Amazon EKS 上使用 Spinnaker 实现持续交付的姊妹篇,重点关注持续集成,并将讨论使用 Hashicorp Terraform 在 Amazon EC2 上安装和配置 Jenkins。我们还将讨论 Spinnaker 管道的创建,此过程是实现强大的协调和分支的各个阶段的组合。这些管道可以手动启动,也可以由事件自动触发,例如 Docker 注册表中出现的新 Docker 映像。这篇文章中使用的其他服务和技术包括 Amazon EC2、AWS Cloud9、Docker Hub 和 Amazon EKS。
概念概述
Terraform
Terraform 是用于安全高效地构建、更改和版本控制基础设施的工具。它通过易于使用的命令行界面 (CLI) 以及免费使用的名为 Terraform Cloud 的 SaaS 产品和用于企业的专用设备进行控制。Terraform 可以管理现有和流行的服务提供商以及定制的内部解决方案。配置文件向 Terraform 描述了运行单个应用程序或整个数据中心所需的组件。Terraform 生成执行计划,以描述达到预期状态所需执行的操作,然后执行该计划以构建所描述的基础设施。配置更改时,Terraform 能够确定更改的内容并创建可以应用的增量执行计划。Terraform 的主要功能包括:基础设施即代码、执行计划、资源图和变更自动化。
Jenkins
Jenkins 是一个自包含的开源自动化服务器,可用于自动化与构建、测试以及交付或部署软件有关的各种任务。它可以通过本机系统软件包 Docker 安装,甚至可以由安装有 Java Runtime Environment (JRE) 的任何计算机独立运行。
先决条件
为了实现本文中的说明,您需要以下资源:
架构
本文中,我们将讨论下列适用于持续集成的架构:
图 1.持续集成架构
步骤概述:
使用 Terraform 创建 Jenkins CI 服务器。
配置 Jenkins。
配置 Jenkins 作业和管道。
创建和配置 Spinnaker 管道。
手动运行 Spinnaker 管道。
使用 AWS Cloud9 修改代码并推送代码更改。
清理。
使用 Terraform 创建 Jenkins CI 服务器
手动预置 Jenkins CI 服务器可能容易出错且耗时,因此我将使用“基础设施即代码 (IaC)”方式配置 Jenkins Continuous Server (CI)。在本博文论述中我将使用 Terraform。登录到 AWS 管理控制台并创建一个 EC2 密钥对(在我的示例中,密钥对的名称为 ibuchh-key
)。使用您的 GitHub 账户,派生 https://github.com/aws-samples/amazon-eks-jenkins-terraform.git 上的代码示例存储库
在 AWS Cloud9 IDE 中,打开一个 shell 终端并执行以下操作(用您的 GitHub 账户替换 aws-samples
):
Bash
图 2.Terraform apply 的输出
Terraform apply
还将输出 Jenkins CI 服务器的 IP 地址,如上所示。
Terraform 将预置一个 AWS EC2 实例,并如 install_jenkins.sh
文件所示安装 git、Apache Maven、Docker、Java 8 和 Jenkins:
Bash
使用浏览器,打开页面 http://jenkins_ip_address:8080,这将显示 Jenkins 管理员页面:
图 3.Jenkins 管理员页面
使用 AWS Cloud9 shell 终端,登录到 Jenkins CI 服务器,通过运行以下命令找到管理员密码:
sudo cat /var/lib/jenkins/secrets/initialAdminPassword
将其粘贴到输入框中,从而在 Jenkins 控制台上输入管理员密码,然后单击下一步****。 单击安装建议的插件。
本文转载自 AWS 技术博客。
评论