多环境镜像晋级/复用最佳实践

作者:木烟

本文主要介绍镜像构建部署场景,多环境镜像晋级/复用最佳实践,保证“所发即所测”。

场景介绍

应用研发场景有效地管理镜像产物是确保软件快速、安全、可靠部署的关键环节。通常一个应用研发需要经过测试、预发、生产各个阶段,一种常用的研发模式如下:

  • 测试阶段: 流水线部署特性 feature 分支构建、部署,进行测试环境开发验证。
  • 预发阶段: 经过测试验证的 feature 分支通过 MR 代码合并请求提交到 master 分支,以主干分支构建镜像、部署预发布环境并提交测试验收。
  • 生产阶段: 预发布环境测试验收通过,直接以验收通过的镜像进行生产发布,保证“所发即所测”。

图片

上述流程中,怎么知道哪个镜像版本是预发验收通过的、可用于生产发布的呢?基于云效 Flow 流水线,我们有以下两种实践。

实践 1:通过「Flow 流水线源」获取上一条流水线镜像产物

图片

  1. 预发阶段流水线配置和运行:从代码源开始,拉取 master 分支构建镜像并推送到镜像仓库、并部署到预发环境进行预发布验收。预发布验收完成通常可由测试同学、发布负责同学共同点击确认「验证通过」。

图片

  1. 生产阶段流水线配置:

i. 添加 Flow 流水线源,选择上述预发流水线作为源,默认使用最后一次成功执行的版本。

ii. 生产环境部署任务,以 Kubernetes 镜像升级任务为例,选择预发流水线的镜像产物进行部署。

图片

图片

  1. 生产发布运行:

i. 选择预发最后一次成功执行版本运行生产流水线。

ii. 生产发布人工卡点验证通过。

iii. 生产环境部署任务直接拉取预发流水线最后一次验证通过的镜像发布。

图片

图片

此外,Flow 支持流水线运行事件自动触发下一条流水线运行。通常适用于测试、预发镜像传递场景,测试环境验收通过后,自动触发预发环境部署。

图片

实践 2:通过「ACR」制品源获取镜像

图片

  1. 预发阶段流水线配置:从代码源开始,拉取 master 分支构建镜像并推送到镜像仓库;镜像标签可通过环境变量定义,如定义镜像版本号环境变量 R_VERSION。

图片

图片

  1. 预发阶段流水线运行:运行预发流水线时,指定版本号构建部署。预发布验收完成通常可由测试同学、发布负责同学共同点击确认「验证通过」。

图片

  1. 生产阶段流水线配置:

i. 添加制品源,选择 ACR 镜像仓库,指定本应用的仓库,指定默认版本号。

ii. 环境部署任务,以 Kubernetes 镜像升级任务为例,选择 ACR 镜像地址部署。同时支持公网地址和 VPC 地址。

图片

图片

  1. 生产阶段发布运行:

i. 选择指定镜像版本运行生产流水线。

ii. 生产发布人工卡点验证通过。

iii. 生产环境部署任务拉取指定镜像发布。

图片

此外,为了降低生产发布版本号选择错误的风险,还可以额外开启版本号过滤规则,约束仅满足规则的镜像版本才可用于生产部署。如仅满足 myapp-V* 的才可用于生产发布。

图片

图片

进阶实践:引入 ACR 镜像扫描进行安全合规性检查

集成安全扫描工具,在镜像推送至仓库前后进行自动扫描,检测潜在的安全漏洞、许可证问题和恶意软件。Flow 流水线支持开启制品源自动触发,支持 ACR 镜像推送完成镜像扫描完成后自动触发流水线运行。典型使用场景如下:预发阶段镜像构建完成并推送到 ACR、自动触发 ACR 镜像扫描、ACR 镜像扫描通过后自动触发预发环境部署。

图片

  1. 配置预发 CI 流水线,从代码开始构建镜像并推送到 ACR 镜像仓库。

  2. 配置预发 CD 流水线:

i. 流水线 ACR 制品源,开启制品源触发, 触发事件选择镜像扫描完成

图片

ii. 复制上述 Webhook 地址。

访问阿里云容器镜像服务 [ 1] 控制台,进入流水线中配置的镜像仓库实例,点击事件通知->创建规则;设置事件规则名称、设置事件通知触发的事件类型(目前 Flow 仅接收镜像扫描完成镜像推送完成两个事件自动触发)、设置事件生效范围(可设置镜像版本过滤的正则规则,在该镜像仓库下只有符合正则规则的镜像版本才会触发事件通知);下一步,通知方式选择 HTTP,并将复制的 Webhook 地址配置到通知地址后保存即可。

图片

图片

iii. 配置预发环境部署任务,同上。

  1. 点击运行 CI 流水线构建镜像,推送到 ACR 镜像仓库,自动触发 ACR 镜像扫描,可以查看安全扫描结果。

图片

图片

  1. 镜像扫描通过,自动触发预发 CD 流水线,自动部署预发环境进行验证。

图片

相关链接:

[1] 阿里云容器镜像服务

https://account.aliyun.com/login/login.htm?oauth_callback=https%3A%2F%2Fcr.console.aliyun.com%2F&lang=zh

点击此处,试用云效流水线 Flow,注册即享每月 1800 分钟的免费运行时长。

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

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

相关文章

地图上绘制地铁线路

需求背景 不管是之前的pms 地铁还是location都会有需求涉及到地图上绘制地铁线路,来查看当前位置是否靠近地铁口,常规的交互可以看下高德地图,如图所示: 需求分析 不管是高德地图还是百度地图都提供了简易版的地铁线路图&#x…

【AI】通义千问使用指南:让你快速上手,成为问题解决高手!

大家好,我是木头左。 近日,继文心一言和讯飞星火之后,阿里虽迟但到,直接宣布开源两款“通义千问”大模型。作为国内首个开源且可商用的人工智能大模型,这会给我们带来哪些变化呢? 如何申请阿里通义千问&am…

RK3568技术笔记十二 Android编译方法

Android源码说明 Android源码在SAIL-RK3568开发板光盘->Android->源代码中,由于android源码太大,在进行压缩时,进行分包压缩,因此有4部分,如图所示: 进行解压时,需将4部分压缩包放置同一…

Redis的安装及详解

1.Redis介绍? 1.1 Redis是什么? Redis(Remote Dictionary Server,远程字典服务器)是一个开源免费的,用C语言编写的一个高性能的分布式内存数据库,基于内存运行并支持持久化的NoSQL数据库。是当前最热门的…

若依RuoYi-Vue分离版—富文本Quill的图片支持伸缩大小及布局

若依RuoYi-Vue分离版—富文本Quill的图片支持伸缩大小及布局、工具栏带中文提示 1.在vue.config.js 文件中添加 一下内容2.下载安装插件3.在Editor组件中引入插件4.使用Editor组件(特别注意要的加 v-if )5.bug 之 imageResize的 img的style丢失1.先创建一…

山东大学软件学院创新项目实训开发日志——收尾篇

山东大学软件学院创新项目实训开发日志——收尾篇 项目名称:ModuFusion Visionary:实现跨模态文本与视觉的相关推荐 -------项目目标: 本项目旨在开发一款跨模态交互式应用,用户可以上传图片或视频,并使用文本、点、…

Canonical Juju 的一个奇怪编排部署

一周前的一个项目扩容出现了异常,进行了操作回滚,未对线上业务造成损失。 现象是这样的: 通过基于 Canonical Juju-GUI 在一组节点上部署了某个组件,在把这组节点添加到集群后,有4个节点上出现了同一组件的2个instanc…

WDF驱动开发-计时器

WDF可以使用框架的内置计时器支持。 它适用于 Kernel-Mode Driver Framework (KMDF) 驱动程序,以及从版本 2 开始的 User-Mode Driver Framework (UMDF) 驱动程序。 框架提供了一个 计时器对象 ,使驱动程序能够创建计时器。 在驱动程序创建计时器对象并…

Scala语言:大数据开发的未来之星 - 零基础到精通入门指南

前言 随着大数据时代的到来,数据量的急剧增长为软件开发带来了新的挑战和机遇。Scala语言因其函数式编程和面向对象的特性,以及与Apache Spark的完美协作,在大数据开发领域迅速崛起,成为该领域的新兴宠儿。本篇将从零基础开始&…

Vue59-全局事件总线:任意组件间通信

一、原理图 只是总结出的经验,不是新的API! 二、x的要求: 1、保证x被所有组件看见; 2、x可以调用的到$on,才能绑定事件,还能调用到:$of, $emit; 三、x的创建&#xff…

手把手教你创建并启动一个Vue3项目(Windows版)

一、Node安装 1、下载地址:Node.js — Run JavaScript Everywhere 2、安装Node,双击启动一直Next 3、验证安装Node是否成功,打开CMD命令窗口,输入node -v,显示版本就表示成功 4、验证安装npm是否成功,npm是…

sqlite3指令操作-linux

1.查看当前数据库位置 2.查看当前数据库文件下有哪些表 3.显示 某表创建时的SQL语句 4.打开、关闭显示列标题; 5.列对齐显示 6.列以‘,’分隔显示 .separator 7.查询表信息 8.插入消息 9.删除某一行内容 10.修改某行某列内容 11.修改表名字 alter tab…

开发者黑板报#65

第65期 AI 谷歌Gemini 终于,GPT-4独霸时代终结了! 过去一个月里,四款大模型横空出世,在各项关键基准测试中与GPT-4相匹敌,甚至更胜一筹。 谷歌Gemini 1.5突破100万个tokens,是GPT-4的近8倍&#xff0c…

办公楼导航系统:设计要点、功能实现与效益评估

随着现代办公楼的日益复杂化和规模化,如何高效、便捷地在楼宇内部进行定位和导航,已成为众多企业和员工关注的焦点。维小帮办公楼定位导航系统通过精准的定位和智能的导航功能,能够显著提升办公环境的智能化水平和办公效率。 一、维小帮办公…

嵌入式实验---实验一 通用GPIO实验

一、实验目的 1、掌握STM32F103 GPIO程序设计流程; 2、熟悉STM32固件库的基本使用。 二、实验原理 1、通过按键实现:按键按下,LED点亮;按键释放,LED熄灭。 三、实验设备和器材 电脑、Keil uVision5软件、Proteus…

Top10在线音频剪辑软件,你了解几款?(免费分享)

多年来,随着音乐制作人和音频工程师的需求不断增长,音频剪辑软件领域经历了巨大的发展。最新的音频剪辑软件提供了从基本录制到最终发布所需的一切功能。其中一些软件专为播客设计,一些软件是免费的,并且一些软件提供了出色的音效…

【Win】双系统新体验:Hyper-V上macOS安装攻略

在虚拟化的世界里,Hyper-V是探索不同操作系统的一扇大门。尽管macOS并不是Hyper-V官方支持的来宾操作系统,但这并未阻挡技术探索者的脚步。他们通过不懈努力,开辟出了一条条通往macOS的非官方路径。这些路径或许曲折,却为那些渴望…

Z世代职场价值观的重塑:从“班味”心态到个人成长的追求

近日,社交平台Soul APP联合上海市精神卫生中心(俗称“宛平南路600号”)发布《2024年Z世代职场心理健康报告》(下称“报告”),发现今天的年轻人正以其独特的价值观和行为模式,重新定义成功与成就…

机器学习_SVM支持向量机

引入:在面对线性可分时,即用一条直线就可以区分数据的时候,需要将直线放在距离数据点距离最大化的位置,这个过程需要寻找最大间隔,即为最优化问题。当数据点不能用一根直线区分——线性不可分,就需要用核函…

瑞数信息入选IDC《中国WAAP厂商技术能力评估,2024》

5星满分:WAF、Bot流量管理、行业应用等评估维度 日前,全球领先的IT市场研究和咨询公司IDC发布《中国WAAP厂商技术能力评估,2024》。报告聚焦WAAP能力,通过对中国市场中主要WAAP产品提供商的技术评估以及对大量最终用户的客观访谈…