当前位置: 首页 > news >正文

Spinnaker 基于 jenkins 触发部署

jenkins job 触发部署

将 Jenkins 设置为 Spinnaker 中的持续集成 (CI) 系统可让您使用 Jenkins 触发管道、向管道添加 Jenkins 阶段或向管道添加脚本阶段。
在这里插入图片描述
前置要求:

  • 已在kubernetes中部署spinnaker
  • 已准备可用的jenkins实例

启用 jenkins触发器

官方文档:https://spinnaker.io/docs/setup/other_config/ci/jenkins/

通过halyard修改spinnaker配置,启用jenkins

hal config ci jenkins enable

配置Jenkins,需要用到账号和密码

hal config ci jenkins master add my-jenkins-master-01 \--address http://192.168.72.42:8080 \--username admin \--password jenkins

启用csrf

hal config ci jenkins master edit my-jenkins-master-01 --csrf true

更新配置

hal deploy apply

启用 http Artifact

首先,启用 http工件提供程序:

hal config artifact http enable

使用 Jenkins 基本 URL 和有权访问构建工件的凭证为 Jenkins 创建 HTTP 文件工件帐户,用于通过http方式从 jenkins 下载构建物。

hal config artifact http account add my-http-artifact-account \--username admin \--password jenkins

更新配置

hal deploy apply

创建jenkins流水线

本示例中的jenkins实例在ubuntu上以apt install方式进行部署。

在jenkins中新建任务,类型选择流水线。
在这里插入图片描述

Jenkins 能够将构建中的文件保存为构建工件。这些对象可以是已编译的二进制文件或 kubernetes 清单或作为构建过程的一部分创建的任何其他工件。

最佳实践表明,这些工件应上传到专用工件存储库,例如 GCR、DockerHub、Artifactory、Maven 等,但有时将工件存储为构建输出的一部分会更容易。

配置jenkins pipeline,然后点击保存。
在这里插入图片描述

以下是一个完整的存储工件的 Jenkins 管道示例,为了简化流程,直接创建dist目录和yaml文件:

pipeline{agent anystages {stage('Generate Kubernetes Manifests') {steps {sh '''#npm install#npm run import#npm run buildecho "BUILD=${BUILD_NUMBER}" > build.propertiesrm -rf dist && mkdir -p distcat >dist/nginx-demo.yaml<<EOF
apiVersion: apps/v1
kind: Deployment
metadata:labels:app: nginx-appname: nginx-appnamespace: default
spec:replicas: 1selector:matchLabels:app: nginx-apptemplate:metadata:labels:app: nginx-appspec:containers:- image: docker.io/library/nginx:latestname: nginx-appports:- containerPort: 80
EOF'''}}}post {always {archiveArtifacts artifacts: 'dist/*.yaml', fingerprint: truearchiveArtifacts artifacts: 'build.properties', fingerprint: true}}
}

该行echo "BUILD=${BUILD_NUMBER}" > build.properties向 build.properties 添加了一个内部版本号字段,稍后可使用该字段生成用于使用 HTTP 下载工件的 URL。

Jenkins 构建工件,执行该作业,将生成以下工件
在这里插入图片描述

配置spinnaker 触发器

官方文档:https://spinnaker.io/docs/guides/user/pipeline/triggers/jenkins/

创建PIPELINE

访问spinnaker,新建APPLICATION,点击PIPELINES,创建管道。

修改配置阶段

在新管道的配置阶段,添加触发器。从类型菜单中选择Jenkins,配置示例如下。

从Master下拉菜单中选择 Jenkins master ,然后从Job下拉菜单中选择一个作业。

在这里插入图片描述
如果需要,添加属性文件,build.properties 工件应该像上面这样添加到 Jenkins 触发器中。

新建deploy stage

点击Add stage,Type选择Deploy(Manifest),并配置k8s账号信息。

清单配置示例如下,配置完成后保存配置。
在这里插入图片描述

在最后部分,要将 Jenkins 构建工件添加为 Spinnaker 工件,请执行以下操作。

在jenkins中右键单击上面构建输出中显示的构建工件。这将为您提供构建工件的完整 URL - 类似这样

http://192.168.72.42:8080/job/nginx-demo/1/artifact/dist/nginx-demo.yaml

使用以下变量将新的 HTTP 文件工件添加到管道,将内部版本号替换为属性中的 BUILD 字段 -${trigger.properties[‘BUILD’]}如下所示

http://192.168.72.42:8080/job/nginx-demo/${trigger.properties['BUILD']}/artifact/dist/nginx-demo.yaml

在这里插入图片描述

测试jenkins job触发部署

连接jenkins,触发新的构建任务

在这里插入图片描述

查看spinnaker是否自动触发管道部署

在这里插入图片描述

连接到kubernetes确认部署的pods

root@node40:~# kubectl get pods
NAME                         READY   STATUS    RESTARTS       AGE
nginx-app-8494986646-57ssz   1/1     Running   0              17m
http://www.lryc.cn/news/249931.html

相关文章:

  • FLASK博客系列6——数据库之谜
  • Clickhouse UPDATE 和 DELETE操作
  • golang channel执行原理与代码分析
  • OpenCvSharp从入门到实践-(04)色彩空间
  • 100.有序数组的平方(力扣)
  • 微服务--01--简介、服务拆分原则
  • IntelliJ IDEA安装使用教程
  • 校园门禁可视化系统解决方案
  • rest_framework_django学习笔记一(序列化器)
  • 面试题:什么是负载均衡?常见的负载均衡策略有哪些?
  • 精通Git(第2版)读书笔记
  • XUbuntu22.04之OBS30.0设置录制音频降噪(一百九十六)
  • 渗透测试学习day4
  • Deepin使用记录-deepin系统下安装RabbitMq
  • 【腾讯云云上实验室】用向量数据库——实现高效文本检索功能
  • Pytorch中的gather的理解和用法
  • 唯创知音WTN6系列语音芯片:高音频采样率与精细音量控制赋能广泛应用
  • 机器人分类
  • html/css中位置position的绝对位置absolute顺时针盒子案例图片排序
  • 分享86个清新唯美PPT,总有一款适合您
  • 虚拟机系列:Oracle VM VirtualBox安装/更新/卸载出现 无法访问你试图使用的功能所在的网络位置
  • 【数据库】数据库并发控制的冲突检测,冲突可串行化的调度,保障事务的特性
  • java 对象大小计算
  • 12个国外电子元器件基本参数(下)
  • Docker容器中的OpenCV:轻松构建可移植的计算机视觉环境
  • SSH基础和高级用法
  • 算法通关第十三关-青铜挑战数学基础问题
  • 如何使用 Freepik 的 Pikaso 工具来画图
  • 一个没正常处理tcp对端关闭的bug
  • 什么是JDK