首页 > 其他分享 >多环境镜像晋级/复用最佳实践

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

时间:2024-06-19 17:44:32浏览次数:25  
标签:触发 晋级 部署 复用 ACR 流水线 镜像 预发

作者:木烟

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

场景介绍

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

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

标签:触发,晋级,部署,复用,ACR,流水线,镜像,预发
From: https://www.cnblogs.com/alisystemsoftware/p/18256813

相关文章

  • 因docker的镜像未经审查,几乎全部docker镜像站下架 之docker换源
    下面的常见的国内的源好像都被自己人监控起来了,都出现dockerpulltimeout的问题。Docker中国区官方镜像:https://registry.docker-cn.com网易:http://hub-mirror.c.163.comustc:https://docker.mirrors.ustc.edu.cn中国科技大学:https://docker.mirrors.ustc.edu.cn阿......
  • 如何将国外的docker镜像转存到自己的阿里云镜像仓库
    参考:https://www.zhihu.com/question/607500671/answer/3534734215配置阿里云docker镜像仓库登录阿里云容器镜像服务首先我们需要登录到阿里云容器镜像服务https://cr.console.aliyun.com/<imgsrc="https://pica.zhimg.com/50/v2-5c5554525f38085b2edcf34a44c13e14_720w......
  • Rocky Linux yum/dnf repo/mirrors 国内镜像列表及更换方法
    RockyLinuxyum/dnfrepo/mirrors国内镜像列表及更换方法RockyLinuxMirrors请访问原文链接:https://sysin.org/blog/rocky-linux-mirrors/,查看最新版。原创作品,转载请保留出处。作者主页:sysin.org高校镜像推荐mirror.sjtu.edu.cn和mirrors.zju.edu.cn。商业公司镜像......
  • AlmaLinux yum/dnf repo/mirrors 国内镜像列表及更换方法
    AlmaLinuxyum/dnfrepo/mirrors国内镜像列表及更换方法AlmaLinuxMirrors请访问原文链接:https://sysin.org/blog/rocky-linux-mirrors/,查看最新版。原创作品,转载请保留出处。作者主页:sysin.org高校镜像推荐mirror.sjtu.edu.cn和mirrors.zju.edu.cn。商业公司镜像推荐......
  • CPU指令集——bayer抽取r、g、b三通道(含镜像)
    需求1:在高帧率场景下,一般拿到的是bayer格式数据。图像处理时,一般会先插值成rgb,再拆分为单通道。如果可以直接bayer中抽出r、g、b,那效率将大大提升。需求2:抽取的单通道直接是镜像的注意:抽取后r、g、b尺寸是原来的一半,没有做插值(插值只会让数据量变大,并没有引入有效信息)效果:CPU指......
  • docker镜像压缩包加载到镜像系统 docker load、将已拉取的镜像打包下载到本地docker
    当系统无法连接外网去拉取镜像的时候可以将下载好的镜像压缩包 *.tgz 、*.tar.gz 等上传至系统里、再经过docker指令加载到镜像镜像加载指令: dockerload-i 镜像压缩包名    # -i 指定要加载的镜像包#这个指令只是加载镜像文件不会启动镜像容器 ......
  • linux docker 删除none的镜像
    在Docker中,通常会有一些无标签(none)的镜像和悬空镜像(即不再任何容器中使用但未被删除的镜像)。这些无标签镜像和悬空镜像可能会占用磁盘空间。要删除这些无标签的镜像,可以使用以下命令:dockerrmi$(dockerimages-f"dangling=true"-q)这条命令会删除所有未被任何......
  • k8s拉取harbor仓库镜像
    目录1.修改containerd配置文件2.重启containerd3.验证由于现在国内无法连cker接dohub,所以镜像也是拉取不到的,所以需要去拉取本地仓库的地址k8s版本1.26如果直接去指定harbor的地址的话是会失败的[root@mastercontainerd]#kubectlruntomcat1--image192.168.200.200:5......
  • 11、docker-dockerfile--构建docker的镜像文件和容器的挂载卷方法 方式二挂载
    挂载方式二:此方式是在生成镜像的同时也实现挂载1、现在本机创建一个目录文件存放脚本·mkdir/home/docker-volume-test2、创建脚本文件·vim  /home/docker-volume-test/dockerfile01·内容如下:FROMcentos//表示......
  • [转帖]端口复用
    https://cxd2014.github.io/2018/09/12/port-reuse/  SO_REUSEPORT套接字选项从Linux3.9内核版本之后Linux网络协议栈开始支持SO_REUSEPORT套接字选项,这个新的选项允许一个主机上的多个套接字绑定到同一个端口上,它的目的是提高运行在多核CPU上的多线程网络服务应用的处......