Spinnaker 基于 docker registry 触发部署
docker registry 触发部署
Spinnaker可以通过Docker镜像的变化来触发部署,这种方法允许你在Docker镜像发生变化时自动启动新的部署流程。
示例原理如下图所示:

以下是如何在Spinnaker中实现基于Docker Registry触发部署的配置流程。最终实现的效果如下:
- 基于jenkins CI构建docker镜像,推送到阿里云ACR镜像仓库;
- spinnaker pipeline跟踪镜像仓库中指定镜像tag变化,检测到新tag则使用新的镜像tag更新kubernetes yaml文件image字段;
- spinnaker pipeline将yaml文件部署到kubernetes集群。
前置要求:
- 已在kubernetes集群中部署spinnaker
- 准备可用的docker镜像仓库,由于阿里云ACR镜像仓库个人版可免费使用,并且国内访问比较流畅,以下以阿里云镜像仓库为例。
镜像仓库默认存在一个latest标签的nginx官方镜像。

启用 docker-registry provider
官方文档:https://spinnaker.io/docs/setup/install/providers/docker-registry/
配置spinnaker,启用docker-registry提供程序:
hal config provider docker-registry enable
假设您的注册表具有地址 $ADDRESS 、存储库 $REPOSITORIES 、用户名 $USERNAME 和密码 $PASSWORD
ADDRESS=registry.cn-shenzhen.aliyuncs.com
REPOSITORIES=cnmirror/nginx
USERNAME=xxx@mail.com
PASSWORD=xxxxxx
运行以下 hal 的帐户添加到 Docker 注册表帐户列表中:
hal config provider docker-registry account add aliyun-acr \--address $ADDRESS \--repositories $REPOSITORIES \--track-digests=true \--username $USERNAME \--password $PASSWORD
注意:参数–track-digests=true是一个重要的参数,因此即使标签已经存在但内容随摘要(哈希值)更改,管道也可以自动触发。
重新部署spinnaker,以使配置生效。
hal deploy apply
创建spinnaker应用
创建应用
点击右侧Create Application

配置名称和邮箱

创建PIPELINES

修改Configuration 阶段
选择Automated Triggers,点击Add Trigger

在Type选框中搜索Docker Registry,并选择以下参数

在下方Artifact Constraints中,定义一个新的Artifact

填写的相关参数:
Docker image: registry.cn-shenzhen.aliyuncs.com/cnmirror/nginx
Object path:registry.cn-shenzhen.aliyuncs.com/cnmirror/nginx:${parameters['VERSION']}
创建deploy阶段
点击 Add stage

选择Type类型为Deploy(Manifest),选择Account及应用部署的Namespace,最后配置Manifest。

示例Manifest如下:
apiVersion: apps/v1
kind: Deployment
metadata:labels:app: nginx-appname: nginx-app
spec:replicas: 1selector:matchLabels:app: nginx-apptemplate:metadata:labels:app: nginx-appspec:containers:- image: registry.cn-shenzhen.aliyuncs.com/cnmirror/nginxname: nginx-appports:- containerPort: 80
---
apiVersion: v1
kind: Service
metadata:name: nginx-applabels:run: nginx-app
spec:ports:- port: 80protocol: TCPtargetPort: 80selector:run: nginx-app
选择Required Artifacts to Bind

点击右下方的Save Changes。
测试触发部署
这里准备一个nginx镜像作为示例应用,jenkins镜像构建部分省略,作为演示使用手动方式上传镜像到镜像仓库。
docker pull docker.io/library/nginx:latest
docker tag docker.io/library/nginx:latest registry.cn-shenzhen.aliyuncs.com/cnmirror/nginx:v1.0
docker push registry.cn-shenzhen.aliyuncs.com/cnmirror/nginx:v1.0
等待片刻,点击PIPELINES,查看部署是否成功

连接到kubernetes集群,查看部署的nginx-app pods以及service
root@node40:~# kubectl get pods
NAME READY STATUS RESTARTS AGE
nginx-app-7bf7d4d4cd-hhrtj 1/1 Running 0 26s
root@node40:~#
root@node40:~# kubectl get svc
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 74m
nginx-app ClusterIP 10.96.3.41 <none> 80/TCP 63m
查看镜像
root@node40:~# kubectl get pods -l app=nginx-app -o yaml | grep image:- image: registry.cn-shenzhen.aliyuncs.com/cnmirror/nginx:v1.0image: registry.cn-shenzhen.aliyuncs.com/cnmirror/nginx:v1.0
推送新的镜像到镜像仓库,模拟jenkins镜像构建
docker tag docker.io/library/nginx:latest registry.cn-shenzhen.aliyuncs.com/cnmirror/nginx:v1.1
docker push registry.cn-shenzhen.aliyuncs.com/cnmirror/nginx:v1.1
确认新的PIPELINES部署已自动执行

查看镜像,已更新为v1.1版本
root@node40:~# kubectl get pods -l app=nginx-app -o yaml | grep image:- image: registry.cn-shenzhen.aliyuncs.com/cnmirror/nginx:v1.1image: registry.cn-shenzhen.aliyuncs.com/cnmirror/nginx:v1.0
参考:
https://docs.armory.io/continuous-deployment/spinnaker-user-guides/kubernetes-deployments/
相关文章:
Spinnaker 基于 docker registry 触发部署
docker registry 触发部署 Spinnaker可以通过Docker镜像的变化来触发部署,这种方法允许你在Docker镜像发生变化时自动启动新的部署流程。 示例原理如下图所示: 以下是如何在Spinnaker中实现基于Docker Registry触发部署的配置流程。最终实现的效果如下…...
2023亚马逊云科技re:Invent,在开发者板块探究如何利用技术重塑业务
美国当地时间11月27日,一年一度的亚马逊云科技re:Invent大会在美国拉斯维加斯盛大开幕。这场全球云计算领域的前沿盛会,已连续12年成为引领行业的风向标。那么本次2023亚马逊云科技re:Invent大会又有哪些可玩、可看的新项目,下面就一起来瞧一…...
JAVA 使用stream流将List中的对象某一属性创建新的List
JAVA 使用stream流将List中的对象某一属性创建新的List 1.stream流介绍 Java Stream是Java 8引入的一种新机制,它可以让我们以声明式方式操作集合数据,提供了更加简洁、优雅的集合处理方式。Stream是一个来自数据源的元素队列,并支持聚合操…...
Elasticsearch:ES|QL 函数及操作符
如果你对 ES|QL 还不是很熟悉的话,请阅读之前的文章 “Elasticsearch:ES|QL 查询语言简介”。ES|QL 提供了一整套用于处理数据的函数和运算符。 功能分为以下几类: 目录 ES|QL 聚合函数 AVG COUNT COUNT_DISTINCT 计数为近…...
SpringBoot——Swagger2 接口规范
优质博文:IT-BLOG-CN 如今,REST和微服务已经有了很大的发展势头。但是,REST规范中并没有提供一种规范来编写我们的对外REST接口API文档。每个人都在用自己的方式记录api文档,因此没有一种标准规范能够让我们很容易的理解和使用该…...
网络入门---网络编程预备知识
目录标题 ifconfigip地址和mac地址的区别端口号pid和端口号UDP和TCP的初步了解网络字节序socket套接字 ifconfig 通过指令ifconfig便可以查看到两个网络接口: 我们当前使用的是一个linux服务器并是一个终端设备,所以他只需要一个接口用来入网即可&…...
记录一次YAMLException异常
记录一次YAMLException异常 ✅作者简介:大家好,我是Leo,热爱Java后端开发者,一个想要与大家共同进步的男人😉😉 🍎个人主页:Leo的博客 💞当前专栏: 报错以及B…...
calendar --- 日历相关函数
calendar --- 日历相关函数 源代码: Lib/calendar.py 这个模块让你可以输出像 Unix cal 那样的日历,它还提供了其它与日历相关的实用函数。 默认情况下,这些日历把星期一作为一周的第一天,星期天作为一周的最后一天(这…...
中国信息通信研究院产业与规划研究所校招一面、二面内容
本文介绍2024届秋招中,中国信息通信研究院的数字孪生智慧城市研究员岗位一面、二面的面试基本情况、提问问题等。 10月投递了中国信息通信研究院的数字孪生智慧城市研究员岗位,所在部门为数字孪生与城市数字化研究部。目前完成了一面与二面,在…...
一些数据库学习的小结
一些数据库学习的小结: SQL: 遵循ACID原则。支持Transaction。适合在线交易处理(OLTP),不适合在线分析处理(OLAP)。例子有 MySQL 读写效率 单机约1KQPS POSTGRESQL NoSQL: 遵循BASE原则。不支持Transaction。例子有 DynamoDB - Amazon Key-Value BigTa…...
【计算机网络】虚拟路由冗余(VRRP)协议原理与配置
目录 1、VRRP虚拟路由器冗余协议 1.1、协议作用 1.2、名词解释 1.3、简介 1.4、工作原理 1.5、应用实例 2、 VRRP配置 2.1、配置命令 1、VRRP虚拟路由器冗余协议 1.1、协议作用 虚拟路由冗余协议(Virtual Router Redundancy Protocol,简称VRRP)是由IETF…...
Using Set Processing Examples 使用集合处理示例
Using Set Processing Examples 使用集合处理示例 Each of the following topics contains an example of set processing. 以下每个主题都包含一个集处理示例。 Payroll 工资单 In this example, suppose the payroll department needs to give a 1000 USD salary increase to…...
Spark将execl表格文件导入到mysql中
实现代码 excel所需的pom依赖 案例实现 实现代码 package excel_mysqlimport org.apache.spark.sql.SparkSession import java.util.Propertiesobject t1 {def main(args: Array[String]): Unit {val spark SparkSession.builder().appName("ExcelToMySQL") /…...
Vue3-Eslint配置代码风格
prettier风格配置 官网:https://prettier.io Eslint:代码纠错,关注于规范 prettier:专注于代码格式化的插件,让代码更加美观 两者各有所长,配合使用优化代码 生效前提: 1)禁用…...
“Install Js dependencies failed“JS SDK安装失败【Bug已解决-鸿蒙开发】
文章目录 项目场景:问题描述原因分析:解决方案:解决措施1解决方案2:其他解决方案解决方案3:此Bug解决方案总结项目场景: 在下载JS SDK时,出现下载失败的情况,并显示“Install Js dependencies failed”。 在使用版本为DevEco Studio 3.0.0.601 Beta1进行低代码开发时…...
接口测试入门8问(含答案+文档)
Q1:什么是接口测试,基础知识什么的讲讲吧! A:你好,接口可以分下面几种 1、系统与系统之间的调用,比如银行会提供接口供电子商务网站调用,或者说,支付宝会提供接口给淘宝调用 2、上…...
【Spring之事务底层源码解析,持续更新中~~~】
文章目录 一、EnableTransactionManagement工作原理二、Spring事务基本执行原理三、Spring事务传播机制与分类四、Spring事务强制回滚五、TransactionSynchronization六、Spring事务详细执行流程 一、EnableTransactionManagement工作原理 二、Spring事务基本执行原理 三、Sp…...
吃火锅(Python)
题目描述 吃火锅 以上图片来自微信朋友圈:这种天气你有什么破事打电话给我基本没用。但是如果你说“吃火锅”,那就厉害了,我们的故事就开始了。 本题要求你实现一个程序,自动检查你朋友给你发来的信息里有没有 chi1 huo3 guo1。…...
深圳市东星制冷机电受邀莅临2024国际生物发酵展,济南与您相约
深圳市东星制冷机电有限公司受邀莅临2024国际生物发酵展,济南3月5-7日与您相约! 展位号:1号馆A53 深圳市东星制冷机电有限公司,(东星集团)是一家专业生产制冷设备的外商独资大型集团企业,拥有30多年的生产…...
内网渗透(哈希传递)
概念 早期SMB协议明文在网络上传输数据,后来诞生了LM验证机制,LM机制由于过于简单,微软提出了WindowsNT挑战/响应机制,这就是NTLM。 哈希传递前提 同密码(攻击主机与实现主机两台要密码一致)。 NTLM协议 加密ntlm哈希 转换成…...
Windows系统指针美化全攻略:基于开源方案的跨平台实现
Windows系统指针美化全攻略:基于开源方案的跨平台实现 【免费下载链接】macOS-cursors-for-Windows Tested in Windows 10 & 11, 4K (125%, 150%, 200%). With 2 versions, 2 types and 3 different sizes! 项目地址: https://gitcode.com/gh_mirrors/ma/macO…...
seo关键字价格便宜的方法有哪些
价格便宜的方法有哪些 在当今市场竞争激烈的环境中,降低成本成为企业提升竞争力的关键之一。价格便宜的方法有哪些呢?本文将从问题分析、原因说明、解决方法、注意事项和实用建议五个方面来详细探讨这一话题。 问题分析 我们需要明确什么是“价格便宜…...
LTspice AC分析实战:从OP07数据手册曲线到仿真波特图,一步步验证GBW和开环增益
LTspice AC分析实战:从OP07数据手册曲线到仿真波特图,一步步验证GBW和开环增益 在模拟电路设计中,运算放大器的频率响应特性是决定电路性能的关键因素之一。对于刚接触模拟电路设计的工程师或实习生来说,如何将数据手册上的理论参…...
如何为Wolverine贡献代码:从Bug报告到PR提交的完整指南
如何为Wolverine贡献代码:从Bug报告到PR提交的完整指南 【免费下载链接】wolverine 项目地址: https://gitcode.com/gh_mirrors/wo/wolverine Wolverine是一个能为Python脚本提供"再生修复能力"的工具,当脚本运行出错时,它…...
WaveTools鸣潮工具箱:从游戏卡顿到流畅体验的智能优化方案
WaveTools鸣潮工具箱:从游戏卡顿到流畅体验的智能优化方案 【免费下载链接】WaveTools 🧰鸣潮工具箱 项目地址: https://gitcode.com/gh_mirrors/wa/WaveTools 你是否曾因《鸣潮》游戏帧率不稳而错过关键操作?是否在多账号切换时反复调…...
Flutter相机开发避坑指南:CameraPreview全屏适配的正确姿势
Flutter相机开发避坑指南:CameraPreview全屏适配的正确姿势 第一次在Flutter中集成相机功能时,我信心满满地给CameraPreview设置了屏幕宽高,结果看到的画面像被强行拉长的橡皮筋——人脸变成了马脸,圆形变成了椭圆。这种新手必踩的…...
STM32F407实战指南(十九) 红外避障传感器模块深度调试与CubeMX源码解析
1. 红外避障传感器模块的核心原理与硬件解析 红外避障传感器本质上是一个"主动探测反射接收"的系统。发射管会持续发射38kHz的红外信号(这个频率能有效避免自然光干扰),当遇到障碍物时,红外线会被反射回来。接收管内部其…...
FramePack视频扩散技术指南:从原理解析到实战优化的完整路径
FramePack视频扩散技术指南:从原理解析到实战优化的完整路径 【免费下载链接】FramePack Lets make video diffusion practical! 项目地址: https://gitcode.com/gh_mirrors/fr/FramePack 原理解析:FramePack的技术突破与核心架构 视频生成效率的…...
FXGL:JavaFX游戏开发的现代化架构实践
FXGL:JavaFX游戏开发的现代化架构实践 【免费下载链接】FXGL Java / JavaFX / Kotlin Game Library (Engine) 项目地址: https://gitcode.com/gh_mirrors/fx/FXGL FXGL是一个基于JavaFX构建的现代化游戏开发框架,为Java开发者提供了完整的游戏开发…...
使用 Dify 快速搭建 Ostrakon-VL 智能应用:无需编码的视觉工作流
使用 Dify 快速搭建 Ostrakon-VL 智能应用:无需编码的视觉工作流 1. 引言:当视觉理解遇上无代码开发 想象一下,你是一家电商公司的运营人员,每天需要处理上千张商品图片——识别商品类别、提取关键属性、整理成表格。传统方式要…...
