写点什么

在 Amazon EKS 上使用 Jenkins 和 HashiCorp Terraform 实现持续集成(二)

  • 2019-12-20
  • 本文字数:2567 字

    阅读完需:约 8 分钟

在 Amazon EKS 上使用 Jenkins 和 HashiCorp Terraform 实现持续集成(二)

配置 Jenkins 作业和管道

在 Jenkins 控制台中,单击新建项目。选择多分支管道,将其命名为 petclinic 然后单击确定



图 5.Jenkins 多分支管道


选择 GitHub,然后从下拉列表中选择 GitHub 凭据。输入如下所示的 GitHub URL,然后单击保存以保存 Jenkins 作业。



图 6.Jenkins 作业详细信息


Jenkins 构建执行器将检出并扫描 GitHub 存储库,并按照下面显示的 Jenkins 文件中的规定执行管道中的阶段。确保将注册表替换为构建阶段中 Docker 注册表 URL。


Bash


pipeline {    agent any       triggers {        pollSCM "* * * * *"       }    stages {        stage('Build Application') {             steps {                echo '=== Building Petclinic Application ==='                sh 'mvn -B -DskipTests clean package'             }        }        stage('Test Application') {            steps {                echo '=== Testing Petclinic Application ==='                sh 'mvn test'            }            post {                always {                    junit 'target/surefire-reports/*.xml'                }            }        }        stage('Build Docker Image') {            when {                branch 'master'            }            steps {                echo '=== Building Petclinic Docker Image ==='                script {                    app = docker.build("ibuchh/petclinic-spinnaker-jenkins")                }            }        }        stage('Push Docker Image') {            when {                branch 'master'            }            steps {                echo '=== Pushing Petclinic Docker Image ==='                script {                    GIT_COMMIT_HASH = sh (script: "git log -n 1 --pretty=format:'%H'", returnStdout: true)                    SHORT_COMMIT = "${GIT_COMMIT_HASH[0..7]}"                    docker.withRegistry('https://registry.hub.docker.com', 'dockerHubCredentials') {                        app.push("$SHORT_COMMIT")                        app.push("latest")                    }                }            }        }        stage('Remove local images') {            steps {                echo '=== Delete the local docker images ==='                sh("docker rmi -f ibuchh/petclinic-spinnaker-jenkins:latest || :")                sh("docker rmi -f ibuchh/petclinic-spinnaker-jenkins:$SHORT_COMMIT || :")            }        }    }}
复制代码


下面是最终运行的屏幕截图;如果一切顺利,您将看到一个新的 Docker 映像推送到您的 Docker 注册表中。



__


图 7.管道阶段

创建和配置 Spinnaker 管道

管道是指 Spinnaker 提供的一定顺序的阶段,从操作基础设施的功能(部署、调整、禁用),到支持功能(手动判断、等待、运行 Jenkins 作业),这些功能共同精确定义了管理您部署的操作手册。管道可帮助您一致、可重复且安全地管理部署。


  1. 登录到 AWS Cloud9 IDE 环境,然后打开一个新终端。运行以下命令:


kubectl get svc -n spinnaker



图 8.Spinnaker UI 终端节点


  1. 打开浏览器,使用 spin-deck-public services 终端节点登录 Spinnaker UI,如上面的输出所示。


选择应用程序选项卡,然后选择操作 → 创建应用程序。 输入 petclinic 作为名称,然后输入有效的电子邮件地址,其余字段留为空白。



图 9.Spinnaker 应用程序


  1. 管道选项卡上,单击配置新管道,输入 DeployToUAT 作为管道名称,然后单击创建



图 10.Spinnaker DeployToUAT 管道


  1. 单击添加构件并选择 GitHub → 种类,文件路径 → kubernetes/petclinic.yaml,显示名称 → Petclinic-Manifest,内容 URL https://api.github.com/repos/aws-samples/amazon-eks-jenkins-terraform/contents/kubernetes/petclinic.yaml



图 11.管道构件


  1. 单击添加触发器并选择类型 → Docker 注册表,注册表名称 → Spinnaker 中配置的 Docker 注册表,组织 → 您的 Docker 注册表名称,映像 → Jenkins 创建的 Docker 映像。



图 12.管道触发器


  1. 单击添加阶段,选择阶段类型 → 部署(清单),账户 → eks-uat应用程序 → petclinic,清单源 → 构件,清单构件 → Petclinic-Manifest构件账户 → spinnaker-github



图 13.部署清单阶段


  1. 单击保存将更改保存到 DeployToUAT 管道。

  2. 管道选项卡下,单击创建,输入 ****ManualApproval ****作为管道名称,然后单击“创建”。单击添加触发器并选择类型 → 管道,应用程序 → petclinic,管道 → DeployToUAT



图 14.ManualApproval 管道


  1. 单击添加阶段,选择阶段名称 → 手动判断,判断输入下添加两个选项批准拒绝,如下所示:



图 15.手动判断阶段


  1. 单击保存将更改保存到 ManualApproval 管道。

  2. 管道选项卡下,单击创建,输入 DeployToProd 作为管道名称,然后单击创建。单击添加触发器并选择类型 → 管道,应用程序 → petclinic,管道 → DeployToProd

  3. 单击添加构件并选择 GitHub → 种类,文件路径 → kubernetes/petclinic.yaml显示名称 → Petclinic-Manifest,内容 URL https://api.github.com/repos/aws-samples/amazon-eks-jenkins-terraform/contents/kubernetes/petclinic.yaml



图 16.管道构件


  1. 单击添加触发器并选择类型 → Docker 注册表,注册表名称 → Spinnaker 中配置的 Docker 注册表,组织 → 您的 Docker 注册表名称,映像 → Jenkins 创建的 Docker 映像。



图 17.管道触发器


  1. 单击添加阶段,选择阶段类型 → 部署(清单),账户 → eks-prod,应用程序 → petclinic清单源 → 构件,清单构件 → Petclinic-Manifest构件账户 → spinnaker-github



图 18.部署清单阶段


  1. 单击保存将更改保存到 DeployToProd 管道。

手动运行 Spinnaker 管道

现在手动运行三个管道。单击开始手动执行,选择管道 → DeployToUAT,类型 → 标记,标记 → 输入有效的标记号。单击运行并观察管道执行。



图 19.管道执行


本文转载自 AWS 技术博客。


原文链接:https://amazonaws-china.com/cn/blogs/china/continuous-integration-using-jenkins-and-hashicorp-terraform-on-amazon-eks/


2019-12-20 15:141142

评论

发布
暂无评论
发现更多内容

聊聊 Sharding-Jdbc 使用原理之分库分表下的分页方案

Nick

MySQL 分库分表 中间件 ShardingJDBC 6月月更

实战Redis序列化性能测试(Kryo和字符串)

程序员欣宸

Java redis 序列化 6月月更

React Native 资源更新增量包的优化实践

Shopee技术团队

前端 React Native

创业 2 年值得分享的事情

琚致远

创业 apache 社区

阻塞队列实现原理

急需上岸的小谢

6月月更

如何利用 Django 进行API 开发

宇宙之一粟

django API 6月月更

centos系统下php完全离线安装

乌龟哥哥

6月月更

日本动画发展史简述——动画及日本动画起源

头顶胖次

6月月更

给 Print SQL Connector 添加随机取样

JasonLee实时计算

flink 源码 flink 实战

bootstrap深入学习

恒山其若陋兮

6月月更

Git 如何从特定的提交中创建一个新的分支

HoneyMoose

Web Service进阶(二)如何用Apache TCPMon来截获SOAP消息

No Silver Bullet

6月月更 Apache TCPMon

RTP与RTCP协议简述

穿过生命散发芬芳

rtp/rtcp 6月月更

【高并发】高并发环境下如何优化Tomcat性能?看完我懂了!

冰河

并发编程 多线程 高并发 异步编程 6月月更

Fabric.js 缩放画布 🍬

德育处主任

canvas Fabric.js 6月月更

java可变参数(详解+代码样例)

写代码两年半

面试 javase 可变参数 6月月更

ES6集合引用类型Map与WeakMap

大熊G

JavaScript 前端 6月月更

【Spring 学习笔记(三)】Spring Bean 属性注入

倔强的牛角

spring Java EE 6月月更

SDN系统方法 | 3. 基本架构

俞凡

架构 网络 sdn SDN系统方法

【Python共建】Python 列表推导式

梦想橡皮擦

6月月更

JS原型、原型链深入理解

源字节1号

前端开发 后端开发

C#入门系列(四) -- 常量和变量

陈言必行

C# 6月月更

sap.ui.core.IAsyncContentCreation 这个标记接口在 SAP UI5 框架中的应用

汪子熙

前端开发 前端框架 Fiori SAP UI5 6月月更

IDEA 中使用 Big Data Tools 连接大数据组件

JasonLee实时计算

flink

每日一题 | LeetCode 454 四数相加Ⅱ

武师叔

哈希表 Leet Code 6月月更

leetcode 46. Permutations 全排列(中等)

okokabcd

LeetCode 搜索 数据结构与算法

Vue框架学习笔记 每天学习----五

恒山其若陋兮

6月月更

5款 React 实时消息提示通知(Message/Notification)组件推荐与测评

蒋川

JavaScript 低代码 React 组件 消息提示通知

Flink 源码:广播流状态源码解析

JasonLee实时计算

flink 源码

架构实战营 - 模块七 - 作业

michael

#架构实战营 「架构实战营」

leetcode 77. Combinations 组合(中等)

okokabcd

LeetCode 搜索 算法与数据结构

在 Amazon EKS 上使用 Jenkins 和 HashiCorp Terraform 实现持续集成(二)_语言 & 开发_亚马逊云科技 (Amazon Web Services)_InfoQ精选文章