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 any
    stages {
      stage('Generate Kubernetes Manifests') {
        steps {
        sh '''
        #npm install
        #npm run import
        #npm run build
        echo "BUILD=${BUILD_NUMBER}" > build.properties
        rm -rf dist && mkdir -p dist
        cat >dist/nginx-demo.yaml<<EOF
apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    app: nginx-app
  name: nginx-app
  namespace: default
spec:
  replicas: 1
  selector:
    matchLabels:
      app: nginx-app
  template:
    metadata:
      labels:
        app: nginx-app
    spec:
      containers:
        - image: docker.io/library/nginx:latest
          name: nginx-app
          ports:
            - containerPort: 80
EOF
        '''
        }
      }
    }
    post {
      always {
        archiveArtifacts artifacts: 'dist/*.yaml', fingerprint: true
        archiveArtifacts 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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/208777.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

使用LVM给Centos根分区扩容

1.查看磁盘使用 roottomoncle:~# df -h 文件系统 容量 已用 可用 已用% 挂载点 devtmpfs 1.9G 0 1.9G 0% /dev tmpfs 2.0G 0 2.0G 0% /dev/shm tmpfs 2.0G 1.1M 2.0G 1% /run …

leetCode 494.递增子序列 + 回溯算法 + 图解 + 笔记

给你一个整数数组 nums &#xff0c;找出并返回所有该数组中不同的递增子序列&#xff0c;递增子序列中 至少有两个元素 。你可以按 任意顺序 返回答案。 数组中可能含有重复元素&#xff0c;如出现两个整数相等&#xff0c;也可以视作递增序列的一种特殊情况。 示例 1&#…

实现一个简单的网络通信上

那么我们的服务器有了&#xff0c;接下来就是初始化服务器 我们写的是基于udp协议的服务器&#xff0c;如果你想进行网络编程&#xff0c;那么创建的第一个就是socket 创建套接字 domain参数 所以当我们创建一个套接字时&#xff0c;你得说明未来使用这些套接字对应的类型是什…

企业如何做好合规管理?

近年来“合规”作为一个热点话题&#xff0c;频繁出现在公众视野&#xff0c;已然成为企业管理发展的大趋势。国家相继出台的各项合规管理标准预示着我国的企业合规管理正逐步从头部央企向民营企业扩展。因此&#xff0c;各大企业将合规管理作为了企业管理的首要任务。 随着中…

一次北斗接收机调试总结

作者&#xff1a;朱金灿 来源&#xff1a;clever101的专栏 为什么大多数人学不会人工智能编程&#xff1f;>>> 最近项目中要用到北斗接收机&#xff0c;它的样子是长这样的&#xff1a; 这部机器里面是没有操作系统的&#xff0c;由单片机控制。最近我们要根据协议…

PyTorch2.0环境搭建(二)

三、前置环境搭建——CUDA pytorch有cpu和gpu两个版本&#xff0c;区别是&#xff1a; 1、硬件要求&#xff1a;CPU版本运算只与CPU版本有关&#xff1b;GPU版本还需要额外链接N卡&#xff0c;可以通过N卡进行加速 2、运行速度&#xff1a;GPU版本比CPU版本在复杂数据和密集计算…

vscode中使用luaide-lite插件断点调试cocos2dx-lua

使用quick-cocos2dx-lua&#xff0c;用了众多插件&#xff0c;包括免费的BabeLua,VS调试太慢&#xff0c;vscode上的免费的EmmyLua, 还有收费的luaide&#xff0c;都没搞出来&#xff0c;唯独这个免费luaide-lite用成功了&#xff0c;步骤也简单&#xff0c;可以断点调试&#…

听GPT 讲Rust源代码--src/tools(4)

题图由AI生成 File: rust/src/tools/rust-analyzer/crates/hir-ty/src/interner.rs 在Rust源代码中&#xff0c;rust/src/tools/rust-analyzer/crates/hir-ty/src/interner.rs这个文件是rust-analyzer工具的一部分&#xff0c;它定义了用于将类型系统中的实体进行唯一标识和共享…

Python爬虫完整代码模版——获取网页数据的艺术

Python爬虫完整代码模版——获取网页数据的艺术 在当今数字化世界中&#xff0c;数据是价值的源泉。如何从海量数据中提取所需信息&#xff0c;是每个数据科学家和开发者必须面对的问题。Python爬虫作为一种自动化工具&#xff0c;专门用于从网站上抓取数据。本文将提供一个Py…

每天五分钟计算机视觉:ImageNet大赛的世界冠军AlexNet模型

AlexNet模型 2012 Imagenet 比赛第一&#xff0c;Top5准确度超出第二10% &#xff0c;它让人们认识到了深度学习技术的威力。比 LeNet更深&#xff0c;用多层小卷积层叠加替换大卷积层&#xff0c;就是说每一个卷积层的通道数小&#xff0c;不像LeNet一样每个卷积层的通道数很大…

面向对象编程的艺术:构建高效可扩展的软件

&#x1f90d; 前端开发工程师&#xff08;主业&#xff09;、技术博主&#xff08;副业&#xff09;、已过CET6 &#x1f368; 阿珊和她的猫_CSDN个人主页 &#x1f560; 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 &#x1f35a; 蓝桥云课签约作者、已在蓝桥云…

震坤行:数字驱动食品农副行业采购的新兴趋势与实践

震坤行&#xff1a;数字驱动食品农副行业采购的新兴趋势与实践 近年来消费者对于营养价值和健康的追求日益凸显&#xff0c;促使各类有机食品、低糖低脂食品、素食等健康食品受到热烈追捧。同时&#xff0c;以往单一的产品也被各家企业“卷”出了个性化&#xff0c;光是卖水&a…

单片机----汇编语言入门知识点

目录 汇编语句的格式 汇编语句的两个基本语句 子程序的调用 查表程序设计 1.x和y均为单字节数的查表程序设计 2.x为单字节数y为双字节数的查表程序设计 3.x和y均为双字节数的查表程序设计 分支转移程序设计 1.单分支选择结构 2.多分支选择结构 循环程序设计 (1) 计…

成倍提高生产力工具Notion

成倍提高生产力工具Notion Notion已经成为了很多内容创作者的唯一生产力工具&#xff0c;甚至很多企业已经把Notion当作他们的唯一的工作平台&#xff0c;学习这款软件不仅能提高你的工作效率甚至在职场上也会成为一个吃香的技能&#xff0c;在美国有人制作销售Notion模板&…

nvm安装管理nodejs版本

1&#xff1a;如果之前先安装了nodejs先卸载nodejs 2&#xff1a;下载nvm&#xff0c;点击下载路径https://github.com/coreybutler/nvm-windows/releases&#xff0c;选择相应环境下载&#xff0c;如下window环境下载 下载成功后&#xff0c;选择NVM安装在哪个文件目录下&…

linux(3)之buildroot配置软件包

Linux(3)之buildroot配置软件包 Author&#xff1a;Onceday Date&#xff1a;2023年11月30日 漫漫长路&#xff0c;才刚刚开始… 参考文档&#xff1a; Buildroot - Making Embedded Linux Easymdev.txt docs - busybox - BusyBox: The Swiss Army Knife of Embedded Linu…

PostgreSQL-shared_buffers(双缓存)

关于shared_buffers 这是一篇2018年写的&#xff0c;可以结合shared read一起看 什么是shred_buffer&#xff0c;我们为什么需要shared_buffers&#xff1f; 1.在数据库系统中&#xff0c;我们主要关注磁盘io&#xff0c;大多数oltp工作负载都是随机io&#xff0c;因此从磁盘获…

【学习记录】从0开始的Linux学习之旅——应用开发(helloworld)

一、概述 Linux操作系统通常是基于Linux内核&#xff0c;并结合GNU项目中的工具和应用程序而成。Linux操作系统支持多用户、多任务和多线程&#xff0c;具有强大的网络功能和良好的兼容性。本文主要讲述如何在linux系统上进行应用开发。 二、概念及原理 应用程序通过系统调用与…

AdWords 广告字符的限制是多少?

谷歌已经发展到不仅仅是一个简单的网络搜索。谷歌已成为任何组织所希望的最好的广告网络之一&#xff0c;不断有全球观众来到它研究项目和便利设施、数据、新闻、解决方案等等。 手机的变化带来了数字广告形式的初步转变&#xff0c;随后学习算法的发展和接受也给Google AdWor…

算法题:求所需的最小的书包数量(拓展拓展再拓展~)

算法题&#xff1a;求所需的最小的书包数量 现在有一种书包&#xff0c;这种书包只有两个书槽&#xff08;即最多只能放下两本书。&#xff09;&#xff0c;并且一个这种书包只能装下N千克的书。现在有一个数组&#xff0c;数组元素是每本书的重量&#xff08;千克&#xff09…