OpenShift 4 Tekton (2) - Katacoda的Tekton Pipeline入门示例

文章目录

  • 安装Tekton客户端
  • 通过命令安装OpenShift Pipelines Operator
  • 创建并运行Tekton Pipeline

安装Tekton客户端

$ curl -LO https://github.com/tektoncd/cli/releases/download/v0.8.0/tkn_0.8.0_Linux_x86_64.tar.gz
$ tar -xvf tkn_0.8.0_Linux_x86_64.tar.gz
$ sudo mv tkn /usr/bin/

通过命令安装OpenShift Pipelines Operator

  1. 用户管理员登录查看operatorhub中的openshift-pipelines-operator
$ oc describe packagemanifest openshift-pipelines-operator -n openshift-marketplace
  1. 安装OpenShift Pipelines Operator。
$ oc apply -f https://raw.githubusercontent.com/liuxiaoyu-git/learn-katacoda/master/middleware/pipelines/assets/operator/subscription.yaml
  1. 查看安装后查看和Tekton相关API。
$ oc api-resources --api-group=tekton.dev
NAME                SHORTNAMES   APIGROUP     NAMESPACED   KIND
clustertasks                     tekton.dev   false        ClusterTask
conditions                       tekton.dev   true         Condition
eventlisteners      el           tekton.dev   true         EventListener
pipelineresources                tekton.dev   true         PipelineResource
pipelineruns        pr,prs       tekton.dev   true         PipelineRun
pipelines                        tekton.dev   true         Pipeline
taskruns            tr,trs       tekton.dev   true         TaskRun
tasks                            tekton.dev   true         Task
triggerbindings     tb           tekton.dev   true         TriggerBinding
triggertemplates    tt           tekton.dev   true         TriggerTemplate
  1. 安装OpenShift Pipelines Operator后会自动创建openshift-pipelines项目,并在其中运行了以下Pod。
$ oc get pod -n openshift-pipelines
NAME                                           READY   STATUS    RESTARTS   AGE
tekton-pipelines-controller-78f6dd64cc-v5qsk   1/1     Running   0          17m
tekton-pipelines-webhook-78668fcc5b-wb2m8      1/1     Running   0          17m
tekton-triggers-controller-84766fbf76-lm4qq    1/1     Running   0          16m
tekton-triggers-webhook-66456d7fbc-vxjjh       1/1     Running   0          16m
  1. 查看当前用户已经有以下创建资源的权限。
$ oc auth can-i create pipeline.tekton.dev
$ oc auth can-i create Pipeline
$ oc auth can-i create Task 
$ oc auth can-i create PipelineResource 
$ oc auth can-i create PipelineRun
  1. 可以用以下命令或在Create Config页面中可以看到OpenShift Pipelines Operator自动创建的OpenShift Pipelines Config实例。
$ oc get config
NAME      AGE
cluster   4m

创建并运行Tekton Pipeline

  1. 创建一个lab-tekton项目。
$ oc new-project lab-tekton
  1. 当安装OpenShift Pipelines Operator后,它会自动为项目创建一个名为pipeline 的ServiceAccount,以拥有build和push镜像的权限。执行命令,验证是否有名为pipeline的ServiceAccount。
$ oc get serviceaccount pipeline
NAME       SECRETS   AGE
pipeline   2         4m11s
  1. 查看项目中已有对象。由于Tekton是运行在集群级别,因此每个项目都有CusterTask对象。
$ ]$ oc get clustertask
NAME                       AGE
buildah                    28m
buildah-v0-10-0            28m
buildah-v0-8-0             28m
jib-maven                  28m
openshift-client           28m
openshift-client-v0-10-0   28m
openshift-client-v0-8-0    28m
s2i                        28m
s2i-go                     28m
s2i-go-v0-10-0             28m
s2i-go-v0-8-0              28m
s2i-java-11                28m
s2i-java-11-v0-10-0        28m
s2i-java-11-v0-8-0         28m
s2i-java-8                 28m
s2i-java-8-v0-10-0         28m
s2i-nodejs                 28m
s2i-nodejs-v0-10-0         28m
s2i-perl                   28m
s2i-perl-v0-10-0           28m
s2i-php                    28m
s2i-php-v0-10-0            28m
s2i-python-3               28m
s2i-python-3-v0-10-0       28m
s2i-ruby                   28m
s2i-ruby-v0-10-0           28m
s2i-v0-10-0                28m
s2i-v0-8-0                 28m
  1. 部署应用依赖的mongodb。
$ oc new-app centos/mongodb-36-centos7 -e MONGODB_USER=admin MONGODB_DATABASE=mongodb MONGODB_PASSWORD=secret MONGODB_ADMIN_PASSWORD=super-secret
  1. 创建应用所需的资源。
$ oc create -f https://raw.githubusercontent.com/liuxiaoyu-git/learn-katacoda/master/middleware/pipelines/assets/sampleapp/sampleapp.yaml
$ oc set env dc/nodejs-ex MONGO_URL="mongodb://admin:secret@mongodb-36-centos7:27017/mongodb"
  1. 查看应用相关service。
$ oc get services
NAME                 TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)                      AGE
mongodb-36-centos7   ClusterIP   172.30.227.96   <none>        27017/TCP                    32s
nodejs-ex            ClusterIP   172.30.18.167   <none>        8080/TCP,8443/TCP,8778/TCP   6m54s
  1. 当前应用状态
    OpenShift 4 Tekton (2) - Katacoda的Tekton Pipeline入门示例_第1张图片
  2. 创建s2i-nodejs的Task
$ oc create -f https://raw.githubusercontent.com/liuxiaoyu-git/learn-katacoda/master/middleware/pipelines/assets/tektontasks/s2i-nodejs-task.yaml
  1. 创建openshift-client的Task
$ oc create -f https://raw.githubusercontent.com/liuxiaoyu-git/learn-katacoda/master/middleware/pipelines/assets/tektontasks/openshift-client-task.yaml
  1. 查看tekton的task列表
$ tkn task ls
NAME               AGE
openshift-client   35 seconds ago
s2i-nodejs         1 minute ago
  1. 创建deploy-pipeline的Pipeline
$ oc create -f https://raw.githubusercontent.com/liuxiaoyu-git/learn-katacoda/master/middleware/pipelines/assets/pipeline/deploy-pipeline.yaml
  1. 查看pipeline列表
$ tkn pipeline ls
NAME              AGE             LAST RUN   STARTED   DURATION   STATUS
deploy-pipeline   9 seconds ago   ---        ---       ---        ---
  1. 在OpenShift控制台查看pipeline使用的相关Resources,其中deploy-pipeline会使用到Git和Image资源。
    OpenShift 4 Tekton (2) - Katacoda的Tekton Pipeline入门示例_第2张图片
  2. 创建Pipeline用到的Git类Resource和Image类Resource。
$ oc create -f https://raw.githubusercontent.com/liuxiaoyu-git/learn-katacoda/master/middleware/pipelines/assets/resources/git-pipeline-resource.yaml
$ oc create -f https://raw.githubusercontent.com/liuxiaoyu-git/learn-katacoda/master/middleware/pipelines/assets/resources/image-pipeline-resource.yaml
  1. 查看Resource列表。
$ tkn resource ls
NAME              TYPE    DETAILS
nodejs-ex-git     git     url: https://github.com/sclorg/nodejs-ex
nodejs-ex-image   image   url: image-registry.openshift-image-registry.svc:5000/lab-tekton/nodejs-ex:latest
  1. 启动deploy-pipeline运行。
$ tkn pipeline start deploy-pipeline -r app-git=nodejs-ex-git -r app-image=nodejs-ex-image -s pipeline
Pipelinerun started: deploy-pipeline-run-hx
 
In order to track the pipelinerun progress run:
tkn pipelinerun logs deploy-pipeline-run-jxr26 -f -n lab-tekton
  1. 通过PipelineRun查看已有的Pipeline运行状态,然后通过名称查看其日志。
$ tkn pipelinerun list
NAME                        STARTED        DURATION   STATUS
deploy-pipeline-run-jxr26   1 minute ago   ---        Running
 
$ tkn pipeline logs -f 
Showing logs...
[build : create-dir-image-jmt46]
...
[build : generate]
...
[build : build]
...
[build : push]
...
[deploy : oc] deploymentconfig.apps.openshift.io/nodejs-ex rolled out
  1. 在OpenShift控制台中查看名为deploy-pipeline的Pipeline的日志。
    OpenShift 4 Tekton (2) - Katacoda的Tekton Pipeline入门示例_第3张图片
  2. 最后完成后查看PipelineRun的执行状态为Succeeded。
$ tkn pipelinerun ls
NAME                        STARTED         DURATION    STATUS
deploy-pipeline-run-vw9vd   9 minutes ago   7 minutes   Succeeded
  1. 在Pipeline完成运行后,可以在OpenShift控制台的Developer视图的Toploy中看到nodejs-ex应用是可以通过Route访问的状态了。
    OpenShift 4 Tekton (2) - Katacoda的Tekton Pipeline入门示例_第4张图片

你可能感兴趣的:(Tekton,CICD,pipeline)