《OpenShift 4.x HOL教程汇总》
说明:本文已经在OpenShift 4.8环境中验证

文章目录

  • Tekton核心概念
  • 本CICD Pipeine场景说明
  • 操作步骤
    • 创建OpenShift项目
    • 手工配置OpenShift Pipeline
      • 创建Task对象
      • 查看ClusterTask
      • 创建Pipeline对象
      • 运行Pipeline
    • 在创建应用中自动生成Pipeline
  • 使用VSCode针对OpenShift的Tekton Pipeline扩展
  • 参考

Tekton是Google推崇的云原生(就是面向Kubernetes)开源CICD框架,2019年已经得到Redhat等云厂商的支持。在OpenShift 4的 OpenShift Pipeline中已经通过Operator Frame集成了Tekton框架,这样无需复杂集成和操作,我们就可实现各种基于Tekton的CICD Pipeline构建、操作、运行和监控了。

Tekton核心概念


在K8s或OpenShift中Tekton Pipeline是通过CRDs的方式进行定义的。Tekton Pipeline包括以下几种核心对象:

  • Task和TaskRun:Task对象用来定义要在CICD中要干的一件事。Task中可以包括多个Step,每个step定义一个独立操作。例如下面定义了一个在ubuntu容器中输出hello world的任务。TaskRun对象是用来运行Task的(运行载体是Pod),其中Tesk中Step是顺序执行的,而每个Step都运行在各自的Container中。
apiVersion: tekton.dev/v1alpha1
kind: Task
metadata:name: echo-hello-world
spec:steps:- name: echoimage: ubuntucommand:- echoargs:- "hello world"
  • Pipeline和PipelineRun:Pipeline用来定义按照指定顺序执行的一组Task。PipelineRun用来按照定义运行一些列的TaskRun。
  • PipelineResource:在Pipeline运行期间向执行的Task传递参数,这些参数主要和环境相关,例如git repository的地址。

在运行Tekton Pipeline的时候,OpenShift会使用TaskRun和PipelineRun对象分别运行Tesk和Pipeline。Pipeline会按照指定的顺序执行Task,并获取结果。

本CICD Pipeine场景说明

本CICD Pipeline场景会部署两个模块,api和ui。这两个部分都是从git上获取代码,然后使用S2I方式构建镜像,然后再部署运行。

操作步骤

创建OpenShift项目

  1. 执行命令,创建一个项目。
$ oc new-project pipelines-tutorial
  1. 当安装OpenShift Pipelines Operator后,它会自动为项目创建一个名为pipeline 的ServiceAccount,以拥有build和push镜像的权限。执行命令,验证是否有名为pipeline的ServiceAccount。
$ oc get serviceaccount pipeline -n pipelines-tutorial
NAME       SECRETS   AGE
pipeline   2         12h

手工配置OpenShift Pipeline

创建Task对象

这里我们创建的独立的Task对象,而在后面步骤中在我们创建的Pipeline对象中包含多个tasks,这些不是独立的Task对象,而只是Pipeline对象执行tasks的说明。

  1. 执行命令创建2个Task对象。
$ oc create -f https://raw.githubusercontent.com/openshift/pipelines-tutorial/pipelines-1.5/01_pipeline/01_apply_manifest_task.yaml -n pipelines-tutorial
task.tekton.dev/update-deployment created
$ oc create -f https://raw.githubusercontent.com/openshift/pipelines-tutorial/pipelines-1.5/01_pipeline/02_update_deployment_task.yaml -n pipelines-tutorial
task.tekton.dev/apply-manifests created
  1. 在执行成功后可以用命令验证其状态
$ oc get task -n pipelines-tutorial
NAME                AGE
apply-manifests     26m
update-deployment   26m
  1. 也可以用Tekton的的客户端获取Task的状态
$ tkn task ls -n pipelines-tutorial
NAME                DESCRIPTION   AGE
apply-manifests                   18 seconds ago
update-deployment                 28 seconds ago

查看ClusterTask

  1. 除了上面定制的两个Task,我们还会用到buildah和git-clone这两个ClusterTask。执行命令查看集群范围的ClusterTask。
$ tkn clustertask ls
NAME                       DESCRIPTION              AGE
buildah                    Buildah task builds...   17 minutes ago
buildah-1-5-0              Buildah task builds...   17 minutes ago
git-cli                    This task can be us...   16 minutes ago
git-clone                  These Tasks are Git...   17 minutes ago
git-clone-1-5-0            These Tasks are Git...   17 minutes ago
helm-upgrade-from-repo     These tasks will in...   16 minutes ago
helm-upgrade-from-source   These tasks will in...   16 minutes ago
jib-maven                  This Task builds Ja...   16 minutes ago
kn                         This Task performs ...   16 minutes ago
kn-1-5-0                   This Task performs ...   16 minutes ago
kn-apply                   This task deploys a...   16 minutes ago
kn-apply-1-5-0             This task deploys a...   16 minutes ago
kubeconfig-creator         This Task do a simi...   16 minutes ago
maven                      This Task can be us...   16 minutes ago
openshift-client           This task runs comm...   16 minutes ago
openshift-client-1-5-0     This task runs comm...   16 minutes ago
pull-request               This Task allows a ...   16 minutes ago
s2i-dotnet                 s2i-dotnet task fet...   16 minutes ago
s2i-dotnet-1-5-0           s2i-dotnet task fet...   16 minutes ago
s2i-go                     s2i-go task clones ...   16 minutes ago
s2i-go-1-5-0               s2i-go task clones ...   16 minutes ago
s2i-java                   s2i-java task clone...   16 minutes ago
s2i-java-1-5-0             s2i-java task clone...   16 minutes ago
s2i-nodejs                 s2i-nodejs task clo...   16 minutes ago
s2i-nodejs-1-5-0           s2i-nodejs task clo...   16 minutes ago
s2i-perl                   s2i-perl task clone...   16 minutes ago
s2i-perl-1-5-0             s2i-perl task clone...   16 minutes ago
s2i-php                    s2i-php task clones...   16 minutes ago
s2i-php-1-5-0              s2i-php task clones...   16 minutes ago
s2i-python                 s2i-python task clo...   16 minutes ago
s2i-python-1-5-0           s2i-python task clo...   16 minutes ago
s2i-ruby                   s2i-ruby task clone...   16 minutes ago
s2i-ruby-1-5-0             s2i-ruby task clone...   16 minutes ago
skopeo-copy                Skopeo is a command...   16 minutes ago
skopeo-copy-1-5-0          Skopeo is a command...   16 minutes ago
tkn                        This task performs ...   16 minutes ago
tkn-1-5-0                  This task performs ...   16 minutes ago
trigger-jenkins-job        The following task ...   16 minutes ago
  1. 查看名为“buildah”的ClusterTask,注意“Input Resources”、“Output Resources”和“Params”、“Results”、“Workspaces”、“Steps”。
$ tkn clustertask describe buildah
Name:          buildah
Description:   Buildah task builds source into a container image and then pushes it to a container registry.
Buildah Task builds source into a container image using Project Atomic's Buildah build tool.It uses Buildah's support for building from Dockerfiles, using its buildah bud command.This command executes the directives in the Dockerfile to assemble a container image, then pushes that image to a container registry.												

OpenShift 4 Tekton (2) - OpenShift Pipeline入门-用Pipeline部署应用相关推荐

  1. OpenShift 4 Tekton (1) - OpenShift Pipeline入门-安装Pipeline Operator

    <OpenShift 4.x HOL教程汇总> 说明:本文已经在OpenShift 4.8环境中验证 文章目录 Tekton 简介 安装OpenShift Pipelines Operat ...

  2. Jenkins pipeline 入门到精通系列文章

    Jenkins2 入门到精通系列文章. Jenkins2 下载与启动 jenkins2 插件安装 jenkins2 hellopipeline jenkins2 pipeline介绍 jenkins2 ...

  3. OpenShift 4 Tekton - Katacoda的Tekton Pipeline入门示例

    <OpenShift 4.x HOL教程汇总> 文章目录 安装Tekton客户端 通过命令安装OpenShift Pipelines Operator 创建并运行Tekton Pipeli ...

  4. OpenShift 4 Tekton (4) - 使用Workspaces为包含Maven Build的Pipeline提速

    <OpenShift 4.x HOL教程汇总> 说明:本文已经在OpenShift 4.8环境中验证 文章目录 需求场景 什么是Workspaces 使用Workspace 在Maven ...

  5. OpenShift 4 Tekton - Tekton实现包含Gogs+SonaQube+Nexus+Report+WebHook的Pipeline

    <OpenShift 4.x HOL教程汇总> 本文是siamaksade在其github上的一个Tekton Pipeline演示示例,它是<OpenShift 4之实现一个基于G ...

  6. OpenShift 4 Tekton - 用Webhook实现CI/CD

    <OpenShift 4.x HOL教程汇总> 文章目录 场景说明 Tekton实现Webhook的过程和相关对象 本文的Pipeline场景说明 场景实现 复制Github项目 对pip ...

  7. OpenShift 4 - DevSecOps Workshop (11) - 通过Trigger启动Pipeline运行

    <OpenShift 4.x HOL教程汇总> 说明:本文已经在OpenShift 4.8环境中验证 <OpenShift 4 - DevSecOps Workshop 系列视频 & ...

  8. openshift介绍及centos7安装单节点openshift、Redhat安装openshift集群完全教程

    Centos7中openshift_3.11单节点安装及配置开机自启详解 本次openshift安装使用最简单便捷的单节点安装,适用于本地开发及测试 openshift简介 OpenShift是红帽公 ...

  9. openshift 3 mysql_最新OpenShift免费空间申请与使用教程-1G内存1G空间支持PHP和MysqL

    一.OpenShift空间申请使用前必备工具 1.OpenShift官网: 1.官方网站:https://www.openshift.com/ 2.OpenShift V3:https://manag ...

最新文章

  1. 更精准地生成字幕!哥大Facebook开发AI新框架,多模态融合,性能更强
  2. 指定hdfs中namenode的地址_HDFS文件上传下载步骤
  3. jupyter中中文显示不正常_jupyter 中文乱码设置编码格式 避免控制台输出的解决...
  4. 【BZOJ】 2463 [中山市选2009]谁能赢呢?(博弈论)
  5. flex基于svn协同开发
  6. python打开word后再关闭再打开出错_用Python写了个程序调用word,运行完后再手动打开word文档就变慢了,这是为啥?...
  7. hadoop2.2.0 centos6.4 编译安装详解
  8. linux系统中命令执行的优先级以及命令格式
  9. JDBC连接池DBUtils
  10. hive udf开发超详细手把手教程
  11. ISO14001认证申请条件
  12. 国家统计局 2019年省市区数据(自取)
  13. it培训机构包就业是啥套路?it培训骗局,it培训班学出来有用吗?
  14. LHDC、AAC、aptx、ldac、wha哪个更好,各有什么优缺点?
  15. 微积分常用导数总结 - 清晰版 - 当然每一个都要熟记啦
  16. 用计算机拜年祝福语,适合拜年发的朋友圈祝福语
  17. 在VM安装最新版Linux镜像
  18. IO中write函数
  19. 移动光猫拨号,IPV6访问内网
  20. 万字HBase详解带你畅游大数据的海豚湾

热门文章

  1. python接口编程的好处_python接口自动化测试
  2. php怎么获取栏目,thinkphp获取栏目和文章当前位置的方法
  3. android关闭系统弹窗,Android 禁止 EditText 弹出软件盘
  4. mysql like in 数组_Web前端学习教程之常用的MySQL优化技巧
  5. 曲线 神经网络_神经网络的数学基础-8(完结)
  6. nginx 日志配置_Nginx记录日志到systemd journal
  7. 设计灵感|纯文字排版也能让海报引人注目
  8. 平面/UI设计师社区交流网站集设|给你的作品多一个展示机会
  9. fastdfs文件上传 read timeout_121FastDFS实现文件上传下载
  10. Madagascar中的宏定义函数--绝对值函数和符号函数