《OpenShift 4.x HOL教程汇总》

我们知道容器镜像是分层的,应用镜像一般会构建在镜像之上。常见情况是底层是操作系统镜像,再往上是中间件镜像,最上层是应用镜像。当应用代码变化后可以通过CI/CD过程自动更新应用镜像,当底层支撑镜像更新的时候我们可以使用OpenShift的BuildChain功能自动触发上层的Build过程。例如当下图中ops layer镜像变化后,OpenShift可触发上层自动构建app layer的镜像,从而使得整个应用镜像保持最新状态。

  1. 用一般用户新建一个项目,然后基于一个Dockerfile新建一个Build
$ oc new-project my-build-trigger
$ oc new-build --name=ops https://github.com/liuxiaoyu-git/welcome --context-dir=sh
  1. 在提示Success后执行以下命令查看BuildConfig(bc)和ImageStream(is),此时应该有1个bc和2个is。之所以有2个is,可以在https://github.com/liuxiaoyu-git/welcome/blob/master/sh/Dockerfile看到ops还依赖另一个名为busybox的Image。
$ oc get bc
NAME      TYPE      FROM      LATEST
ops       Docker    Git       8
$ oc get is
NAME      DOCKER REPO                                                                        TAGS      UPDATED
busybox   default-route-openshift-image-registry.apps-crc.testing/my-build-trigger/busybox   latest    About an hour ago
ops       default-route-openshift-image-registry.apps-crc.testing/my-build-trigger/ops                 18 minutes ago
  1. 执行以下命令,基于另一个Dockerfile新建领一个Build
$ oc new-build --name=foo https://github.com/liuxiaoyu-git/welcome --context-dir=foo
  1. 有提示Success后执行以下命令,查看busybox的buildchain信息。以下结果说明镜像标签为busybox:latest镜像变化后会触发bc/ops的BuildConfig,而ops:latest镜像变化后会触发bc/foo
$ oc adm build-chain busybox
istag/busybox:latestbc/opsistag/ops:latestbc/fooistag/foo:latest
  1. 可使用以下命令分别查看ops镜像和foo镜像的buildchain信息
$ oc adm build-chain ops
$ oc adm build-chain foo
  1. 查看和foo镜像相关的Trigger(其中第二行是基于Image变化触发的Trigger)。
$ oc set triggers bc/foo
NAME              TYPE     VALUE       AUTO
buildconfigs/foo  config               true
buildconfigs/foo  image    ops:latest  false
buildconfigs/foo  webhook  <secret>
buildconfigs/foo  github   <secret>
  1. 查看ops和foo的Build记录
$ oc get build
NAME      TYPE      FROM          STATUS     STARTED          DURATION
ops-1     Docker    Git@ac8013d   Complete   52 seconds ago   13s
foo-1     Docker    Git@ac8013d   Complete   11 seconds ago   11s
  1. 查看ops和foo的ImageStream信息,其中会显示imagesteam对应的镜像的变化情况,例如ops的ImageStream会显示以下一条记录,说明标记为latest标签的ImageStreamTag指向的是id为2a6d33e0df5612deed84cc674e2ef3f36cc41be0c2c8fd01d8d8e0e5b385ea83的物理镜像。
$ oc describe is/ops
$ oc describe is/foo
latestno spec tag*. default-route-openshift-image-registry.apps-crc.testing/my-build-trigger/ops@sha256:2a6d33e0df5612deed84cc674e2ef3f36cc41be0c2c8fd01d8d8e0e5b385ea834 hours ago
  1. 对ops启动一个新的Build
$ oc start-build bc/ops
  1. 查看Build记录。在这一过程中会发现当ops完成Build后foo会自动启动Build
$ oc get build -w
NAME      TYPE      FROM          STATUS     STARTED          DURATION
ops-1     Docker    Git@ac8013d   Complete   21 minutes ago   17s
foo-1     Docker    Git@ac8013d   Complete   17 minutes ago   15s
ops-2     Docker    Git@ac8013d   Complete   43 seconds ago   12s
foo-2     Docker    Git@ac8013d   Complete   32 seconds ago   15s
  1. 再次用(8)的命令查看ImageStream信息,会发现标签为lastest的ImageStreamTag指向了一个新的物理镜像。
latestno spec tag*. default-route-openshift-image-registry.apps-crc.testing/my-build-trigger/ops@sha256:b09d35253d8dcdb3a24c4632e65d269c019c3e37bbc388d4436acb9d037e15a84 hours agodefault-route-openshift-image-registry.apps-crc.testing/my-build-trigger/ops@sha256:2a6d33e0df5612deed84cc674e2ef3f36cc41be0c2c8fd01d8d8e0e5b385ea834 hours ago
  1. 执行以下命令,删除foo和ops之间的Trigger
$ oc set triggers bc/foo --from-image=ops:latest --remove
  1. 再次查看BuildChain,发现ops:latest变化后不再触发foo的Build过程
$ oc adm build-chain busybox
istag/busybox:latestbc/opsistag/ops:lates
  1. 再次执行一次(9)的命令,并用(10)的命令查看状态,会发现不会自动触发foo的Build了。
  2. 执行以下命令,重新恢复BuildChain
$ oc set triggers bc/foo --from-image=ops:latest --remove=false
  1. 再次执行(4)的命令,确认BuildChain又恢复了。

  2. 再次执行(9)的命令新建一个ops的Build,然后通过(10)命令确认在Build完ops,会发现又会自动触发foo的Build操作,同时ImageStream会指向新生成的物理镜像。

OpenShift 4 之通过ImageTrigger自动构建变化级联镜像相关推荐

  1. (开包即用,不用看代码!)借助Docker自动构建Java(Oracle)镜像

    开包即用,不用看代码! 如果着急使用可以直接使用我构建的镜像,请从配置镜像源开始看 Docker中的Java Java可能是程序员最常用的运行时环境了, 即使你不开发Java程序,大量的开发工具也需要 ...

  2. OpenShift 4 Hands-on Lab (5) - 用Build、Builder Trigger、Webhook构建和更新镜像

    <OpenShift 4.x HOL教程汇总> 说明:本文已经在OpenShift 4.8环境中验证 文章目录 构建(Build)镜像的相关概念 BuildConfig Build Bui ...

  3. 中国人工智能学会通讯——自然语言处理的十个发展趋势 趋势 4: 语言知识——从人工构建到自动构建...

    趋势 4: 语言知识--从人工构建到自动构建 AlphaGo告诉我们,没有围棋高手介入它的开发过程,到AlphaGo最后的版本,它已经不怎么需要看棋谱了.所以AlphaGo在学习和使用过程中都有可能会 ...

  4. [Linux] 编写Dockerfile文件自动构建镜像

    Dockerfile是一个文本文件,按顺序包含构建给定镜像所需的所有命令 Docker通过读取Dockerfile中的指令自动构建图像 . Dockerfile遵循特定的格式和指令集,您可以在Dock ...

  5. 基于领域知识的Docker镜像自动构建方法

    点击上方蓝字关注我们 基于领域知识的Docker镜像自动构建方法 陈伟1,2, 叶宏杰1,2, 周家宏1,2, 魏峻1,2 1 中国科学院大学,北京 100190 2 中国科学院软件研究所,北京 10 ...

  6. [Pytorch系列-58]:循环神经网络 - 词向量的自动构建与模型训练代码示例

    作者主页(文火冰糖的硅基工坊):文火冰糖(王文兵)的博客_文火冰糖的硅基工坊_CSDN博客 本文网址:https://blog.csdn.net/HiWangWenBing/article/detai ...

  7. dockerfile 编写php,[Linux]编写Dockerfile文件自动构建镜像

    Dockerfile是一个文本文件,按顺序包含构建给定镜像所需的所有命令 Docker通过读取Dockerfile中的指令自动构建图像 . Dockerfile遵循特定的格式和指令集,您可以在Dock ...

  8. Concourse实战 - 监控GitHub release并自动构建镜像

    背景及需求 偶然在网上看到了一个可以多端直播推流的工具,叫Ant Media Server,但是它的安装程序并不支持我正在用的Ubuntu 22.04 LTS,同时它也没有提供制作好的Docker镜像 ...

  9. iOS应用模块化的思考及落地方案(二)模块化自动构建工具的使用

    1.0 iOS模块化中的问题 前文已经介绍了模块化的流程及一些常见的问题,我们在这里再次总结一下. 在工作中,当我们开始一个新项目的时候,最先考虑的就是模块化工作. 模块化工作的想法是很美好的,可是执 ...

最新文章

  1. Oracle RMAN备份深入解析--联机备份
  2. 015PHP文件处理——文件处理flock 文件锁定 pathinfo realpath tmpfile tempname
  3. dedecms系统环境需求及注意事项是什么
  4. linux系统安装服务器过程,Linux系统服务器安装宝塔面板图文过程详解
  5. poj1201Intervals(差分约束)
  6. Spring3:类型安全依赖项注入
  7. C语言作业二选择结构,C语言第二次作业参考答案选择结构.pdf
  8. SPSS基础教程:SPSS菜单命令详解(三)
  9. 基于BIM+3DGIS的智慧城市基础设施管理
  10. android sqlite多条件查询,sqlite 多条件查询
  11. Android地图轨迹抽稀、动态绘制
  12. 05 js面向对象(属性操作符,创建对象)
  13. CSDN的MD编辑器【写作技巧】
  14. 计算机网络大学宿舍组网方案设计,学生公寓组网方案推荐 精品推荐
  15. Dynamics CRM IFD部署后延长系统注销时间
  16. JAVA面试题集(2) (转)
  17. git小乌龟TortoiseGit的使用
  18. C/C++后端学习秘籍
  19. 1秒消失 alert jquery_jquery 弹窗信息显示几秒后自动消失
  20. 2020 蓝桥杯大学 B 组省赛模拟赛 七巧板

热门文章

  1. c# webclient 保存会话信息_会话保持机制cookie和session
  2. 知识图谱java实现_知识图谱:neo4j(四)Java API
  3. eclipse占用内存过大_Java内存泄漏分析工具Memory Analyzer Tool
  4. sqlserver leftjoin出现重复数据_数据库存数据时,逻辑上防重了为啥还会出现重复记录?...
  5. 情人节海报模板,甜到牙疼!
  6. 游戏迷英雄联盟游戏高清壁纸!扮演你的英雄
  7. html漂亮的表格模板+背景_咨询amp;金融主题响应式网站着陆页模板
  8. mysql 自定义函数 事务_MySQL存储过程、触发器、自定义函数、事务
  9. oracle服务名连接慢,数据库 – Oracle SID和服务名称;连接问题
  10. sql 分组求和_《从零学会SQL-第七关高级功能》课后练习