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

作者:木烟

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

场景介绍

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

  • 测试阶段: 流水线部署特性 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 分钟的免费运行时长。

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

PHP转Go系列 | 变量常量的使用姿势

大家好&#xff0c;我是码农先森。 变量 在 PHP 语言中&#xff0c;初始化变量虽然只有一行&#xff0c;其实包含了两步&#xff0c;一是声明变量&#xff0c;二是赋值给变量&#xff0c;同一个变量可以任意再赋值任何类型的数据。 <?php// 初始化变量 $name "man…

防爆气象仪的工作原理

TH-WFB5矿山气象传感器在矿山安全监测系统中扮演着至关重要的角色&#xff0c;它们能够及时发现异常情况&#xff0c;为矿山的安全运营提供可靠的数据支持。矿山气象传感器能够实时监测矿山环境中的风速、风向、温度、湿度和大气压力等关键气象参数。这些传感器采用先进的传感技…

网页五子棋对战项目测试(selenium+Junit5)

目录 网页五子棋对战项目介绍 网页五子棋对战测试的思维导图​ 网页五子棋对战的UI自动化测试 测试一&#xff1a;测试注册界面 测试二&#xff1a;测试登陆界面 测试三&#xff1a;测试游戏大厅界面 测试四&#xff1a;测试游戏房间界面以及观战房间界面 测试五&#…

之所以选择天津工业大学,因为它是双一流、报考难度适宜,性价比高!天津工业大学计算机考研考情分析!

天津工业大学&#xff08;Tiangong University&#xff09;&#xff0c;简称“天工大”&#xff0c;位于天津市&#xff0c;是教育部与天津市共建高校、国家国防科技工业局和天津市共建的天津市重点建设高校、国家“双一流”建设高校、天津市高水平特色大学建设高校、中国研究生…

多态性(Java)

本篇学习面向对象语言的第三个特性——多态。 目录 1、多态的概念 2、继承多态实现条件 3、重写 4、重新与重载的区别&#xff1a; 5、向上转移和向下转型 5、1向上转型&#xff1a; 5、2 向下转型 1、多态的概念 多态的概念&#xff1a;通俗来说&#xff0c;就是多种形态…

从零开始! Jupyter Notebook的安装教程

&#x1f680; 从零开始! Jupyter Notebook的安装教程 摘要 &#x1f4c4; Jupyter Notebook 是一个广受欢迎的开源工具&#xff0c;特别适合数据科学和机器学习的开发者使用。本文将详细介绍从零开始安装 Jupyter Notebook 的步骤&#xff0c;包括各种操作系统的安装方法&am…

从钉钉到跨境电商领域的技术演变,HHO如何通过NineData实现全球化业务布局

两氢一氧&#xff08;HHO&#xff09;是一家跨境出海电商平台&#xff0c;专注于通过数字化手段连接全球市场和中国优质供应链&#xff0c;致力于打造数字化时代的全球化新品牌。 创始人陈航&#xff0c;曾任钉钉 CEO 并成功打造行业领先的亿级活跃用户产品--钉钉。离开阿里后创…

Game-Fi 新贵 MetaArena 项目全解析:重塑区块链游戏生态

在区块链技术迅猛发展的浪潮中&#xff0c;全球各行业都在探索如何利用这一革命性技术来提升效率、降低成本&#xff0c;并创造新的商业模式。游戏行业作为数字娱乐的核心领域之一&#xff0c;也在经历前所未有的变革。尽管传统游戏巨头如Steam和任天堂已推出Web3元宇宙游戏产品…

Ceph入门到精通-ceph边缘集群你听说过嘛?

边缘集群是一种经济高效的对象存储配置解决方案。 Red Hat 支持以下 Red Hat Ceph Storage 集群的最低配置: 具有两个 SSD 副本的三节点集群。 具有三个 HDD 副本的四节点群集。 具有 EC 池的四节点集群,具有 2+2 配置。 对于较小的群集,由于使用量和复原能力的损失,利用率…

13.2 Go 接口的动态性

&#x1f49d;&#x1f49d;&#x1f49d;欢迎莅临我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:「stormsha的主页」…

RK3588 代码中导入torch报错

RK3588 代码中导入torch报错 使用RK3588测试官方的YOLOv8,出现下面的问题 发现是dfl函数中导入torch的时候产生的&#xff0c;但是我在python终端上执行导入torch并没有发生报错 Traceback (most recent call last):File "infer.py", line 243, in <module>b…

数据结构-算法和算法分析

目录 前言一、算法1.1 算法与程序1.2 算法描述方法1.3 算法特性1.4 算法设计的要求 二、算法分析2.1 算法时间效率的度量2.1.1 事前分析方法算法的渐进时间复杂度算法时间复杂度分析例子算法最坏时间复杂度时间复杂度的计算规则 2.2 算法空间效率的度量 总结 前言 程序 数据结…

docker回顾--docker compose详细解释,安装,与常用命令

文章目录 Docker compose简介什么是Docker compose核心概念优势 安装常用命令总结 Docker compose简介 什么是Docker compose Docker Compose 是一个用于定义和运行多容器 Docker 应用的工具。它使得开发者可以使用一个单独的 YAML 文件来定义应用所需的所有服务、网络和卷&a…

发力采销,京东的“用户关系学”

作者 | 曾响铃 文 | 响铃说 40多岁打扮精致的城市女性&#xff0c;在西藏那曲的偏远农村&#xff0c;坐着藏民的摩托车&#xff0c;行驶在悬崖边的烂泥路上&#xff0c;只因为受顾客的“委托”&#xff0c;要寻找最原生态的藏区某款产品。 30多岁的憨厚中年男性&#xff0c;…

HTTP学习记录(基于菜鸟教程)

文章目录 1.简介1.1常用的HTTP方法1.2Http版本1.3注意事项 2.Https3.Http消息结构3.1客户端请求消息3.2响应消息 4.常见的响应头5.HTTP状态码6.Http content-type在这里插入图片描述 7.MIME类型8.HTTP2 1.简介 Http&#xff0c;被称为超文本传输协议&#xff0c;HyperText Tran…

mfc140.dll电脑文件丢失的处理方法,这4种方法能快速修复mfc140.dll

mfc140.dll文件是一个非常重要的dll文件&#xff0c;如果它丢失了&#xff0c;那么会严重的影响程序的运行&#xff0c;这时候我们要找方法去修复mfc140.dll这个文件&#xff0c;那么你知道怎么修复么&#xff1f;如果不知道&#xff0c;那么不妨看看下面的mfc140.dll文件丢失的…

海豚调度异常处理: 使用 arthas 在内存中删除启动失败的工作流

&#x1f4a1; 本系列文章是 DolphinScheduler 由浅入深的教程&#xff0c;涵盖搭建、二开迭代、核心原理解读、运维和管理等一系列内容。适用于想对 DolphinScheduler了解或想要加深理解的读者。祝开卷有益。大数据学习指南 大家好&#xff0c;我是小陶&#xff0c;DolphinSch…

晨持绪科技:抖音小店的前景究竟怎么样

随着移动互联网的迅猛发展&#xff0c;短视频平台快速崛起并逐渐成为人们日常生活中不可或缺的一部分。作为国内领先的短视频平台&#xff0c;抖音在近年推出了“抖音小店”功能&#xff0c;为商家提供了一个新兴的、流量巨大的电商渠道。这一功能的推出不仅改变了传统的购物方…

RabbitMQ安装配置,封装工具类,发送消息及监听

1. Get-Started docker安装rabbitmq 拉取镜像 [rootheima ~]# docker pull rabbitmq:3.8-management 3.8-management: Pulling from library/rabbitmq 7b1a6ab2e44d: Pull complete 37f453d83d8f: Pull complete e64e769bc4fd: Pull complete c288a913222f: Pull complet…

AI视频智能监管赋能城市管理:打造安全有序的城市环境

一、方案背景 随着城市化进程的加速和科技的飞速发展&#xff0c;街道治安问题日益凸显&#xff0c;治安监控成为维护社会稳定和保障人民安全的重要手段。当前&#xff0c;许多城市已经建立了较为完善的治安监控体系&#xff0c;但仍存在一些问题。例如&#xff0c;监控设备分…