OpenShift 4 Tekton (2) - OpenShift Pipeline入门-用Pipeline部署应用
《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项目
- 执行命令,创建一个项目。
$ oc new-project pipelines-tutorial
- 当安装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的说明。
- 执行命令创建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
- 在执行成功后可以用命令验证其状态
$ oc get task -n pipelines-tutorial
NAME AGE
apply-manifests 26m
update-deployment 26m
- 也可以用Tekton的的客户端获取Task的状态
$ tkn task ls -n pipelines-tutorial
NAME DESCRIPTION AGE
apply-manifests 18 seconds ago
update-deployment 28 seconds ago
查看ClusterTask
- 除了上面定制的两个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
- 查看名为“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部署应用相关推荐
- OpenShift 4 Tekton (1) - OpenShift Pipeline入门-安装Pipeline Operator
<OpenShift 4.x HOL教程汇总> 说明:本文已经在OpenShift 4.8环境中验证 文章目录 Tekton 简介 安装OpenShift Pipelines Operat ...
- Jenkins pipeline 入门到精通系列文章
Jenkins2 入门到精通系列文章. Jenkins2 下载与启动 jenkins2 插件安装 jenkins2 hellopipeline jenkins2 pipeline介绍 jenkins2 ...
- OpenShift 4 Tekton - Katacoda的Tekton Pipeline入门示例
<OpenShift 4.x HOL教程汇总> 文章目录 安装Tekton客户端 通过命令安装OpenShift Pipelines Operator 创建并运行Tekton Pipeli ...
- OpenShift 4 Tekton (4) - 使用Workspaces为包含Maven Build的Pipeline提速
<OpenShift 4.x HOL教程汇总> 说明:本文已经在OpenShift 4.8环境中验证 文章目录 需求场景 什么是Workspaces 使用Workspace 在Maven ...
- OpenShift 4 Tekton - Tekton实现包含Gogs+SonaQube+Nexus+Report+WebHook的Pipeline
<OpenShift 4.x HOL教程汇总> 本文是siamaksade在其github上的一个Tekton Pipeline演示示例,它是<OpenShift 4之实现一个基于G ...
- OpenShift 4 Tekton - 用Webhook实现CI/CD
<OpenShift 4.x HOL教程汇总> 文章目录 场景说明 Tekton实现Webhook的过程和相关对象 本文的Pipeline场景说明 场景实现 复制Github项目 对pip ...
- OpenShift 4 - DevSecOps Workshop (11) - 通过Trigger启动Pipeline运行
<OpenShift 4.x HOL教程汇总> 说明:本文已经在OpenShift 4.8环境中验证 <OpenShift 4 - DevSecOps Workshop 系列视频 & ...
- openshift介绍及centos7安装单节点openshift、Redhat安装openshift集群完全教程
Centos7中openshift_3.11单节点安装及配置开机自启详解 本次openshift安装使用最简单便捷的单节点安装,适用于本地开发及测试 openshift简介 OpenShift是红帽公 ...
- openshift 3 mysql_最新OpenShift免费空间申请与使用教程-1G内存1G空间支持PHP和MysqL
一.OpenShift空间申请使用前必备工具 1.OpenShift官网: 1.官方网站:https://www.openshift.com/ 2.OpenShift V3:https://manag ...
最新文章
- 更精准地生成字幕!哥大Facebook开发AI新框架,多模态融合,性能更强
- 指定hdfs中namenode的地址_HDFS文件上传下载步骤
- jupyter中中文显示不正常_jupyter 中文乱码设置编码格式 避免控制台输出的解决...
- 【BZOJ】 2463 [中山市选2009]谁能赢呢?(博弈论)
- flex基于svn协同开发
- python打开word后再关闭再打开出错_用Python写了个程序调用word,运行完后再手动打开word文档就变慢了,这是为啥?...
- hadoop2.2.0 centos6.4 编译安装详解
- linux系统中命令执行的优先级以及命令格式
- JDBC连接池DBUtils
- hive udf开发超详细手把手教程
- ISO14001认证申请条件
- 国家统计局 2019年省市区数据(自取)
- it培训机构包就业是啥套路?it培训骗局,it培训班学出来有用吗?
- LHDC、AAC、aptx、ldac、wha哪个更好,各有什么优缺点?
- 微积分常用导数总结 - 清晰版 - 当然每一个都要熟记啦
- 用计算机拜年祝福语,适合拜年发的朋友圈祝福语
- 在VM安装最新版Linux镜像
- IO中write函数
- 移动光猫拨号,IPV6访问内网
- 万字HBase详解带你畅游大数据的海豚湾
热门文章
- python接口编程的好处_python接口自动化测试
- php怎么获取栏目,thinkphp获取栏目和文章当前位置的方法
- android关闭系统弹窗,Android 禁止 EditText 弹出软件盘
- mysql like in 数组_Web前端学习教程之常用的MySQL优化技巧
- 曲线 神经网络_神经网络的数学基础-8(完结)
- nginx 日志配置_Nginx记录日志到systemd journal
- 设计灵感|纯文字排版也能让海报引人注目
- 平面/UI设计师社区交流网站集设|给你的作品多一个展示机会
- fastdfs文件上传 read timeout_121FastDFS实现文件上传下载
- Madagascar中的宏定义函数--绝对值函数和符号函数