云原生强大且灵活的持续集成CI开源框架Tekton实战-上( 二 )


云原生强大且灵活的持续集成CI开源框架Tekton实战-上

文章插图
安装Tekton Pipelines
  • 官方部署方式
# 使用kubectl安装最新版本的Tekton pipelinekubectl apply --filename \https://storage.googleapis.com/tekton-releases/pipeline/latest/release.yaml
  • 修改镜像地址方式
# 创建资源时,pull 镜像用的镜像库是国外的,gcr.io 需要替换成国内的镜像源:gcr.azk8s.cn;如果使用原来的gcr.io  ,  资源创建成功后在启动的过程中 , pod状态一直是 imagepullbackoff , 查看pod 内部,是无法pull 镜像所致 。# 官方提供release.yaml中需要的镜像是从谷歌云拉取的,国内的环境可能拉不到镜像kubectl get pods --namespace tekton-pipelines --watchkubectl get pods --namespace describe pod <pod-id>kubectl --namespace tekton-pipelines describe pods# 创建目录mkdir tekton# 下载yaml 文件,注意如果因为我们下面要替换的国内源不是即时更新的,有一个同步时间差,如果下载latest release 可能会遇到下载到昨天发布的最新版本,而使用国内源时会出现找不到最新镜像ID. 所以在更新之前可以在官网看一下最新版本是不是昨天才更新的版本,如果是建议选上一个版本,如果latest 是几天之前的,则没有问题 。#修改yaml 里面的镜像库vi release.yamlwget https://storage.googleapis.com/tekton-releases/pipeline/latest/release.yaml%s/gcr.io/gcr.azk8s.cn/g#重新创建资源kubectl apply -f release.yaml
  • 阿里云资源方式
# 上面的都还是有问题,最后可以使用阿里云的资源 , 这一个可以成功的创建kubectl apply -f http://my-oss-testing.oss-cn-beijing.aliyuncs.com/k8s/tekton/release.yamlkubectl get pods -n tekton-pipelines安装完后后,可以看到在Kubernetes集群中新增了哪些Tekton的crd
云原生强大且灵活的持续集成CI开源框架Tekton实战-上

文章插图

云原生强大且灵活的持续集成CI开源框架Tekton实战-上

文章插图
创建并运行任务创建并运行一个基本任务 , Task在API中表示为Task类对象,它定义了一系列按顺序运行的步骤,以执行Task所需的逻辑 。每个Task都作为一个pod在Kubernetes集群上运行,每个步骤都在自己的容器中运行 。创建vi hello-world.yaml
apiVersion: tekton.dev/v1beta1kind: Taskmetadata:name: hellospec:steps:- name: echoimage: alpinescript: |#!/bin/shecho "Hello World,itxs"apiVersion: tekton.dev/v1beta1kind: Taskmetadata:name: hellospec:steps:- name: echoimage: ubuntu # contains bashscript: |#!/usr/bin/env bashecho "Hello World,itxs"应用到集群的更改
kubectl apply --filename hello-world.yaml要运行此Task , 必须使用TaskRun实例化它 。创建另一个名为hello-task-run的文件Yaml,内容如下:
apiVersion: tekton.dev/v1beta1kind: TaskRunmetadata:name: hello-task-runspec:taskRef:name: hello将更改应用到集群以启动任务
kubectl apply --filename hello-task-run.yaml# 验证运行是否正常kubectl get taskrun hello-task-run# 查看容器运行日志kubectl logs --selector=tekton.dev/taskRun=hello-task-run
云原生强大且灵活的持续集成CI开源框架Tekton实战-上

文章插图
安装Dashboard
  • 官方部署方式
kubectl apply --filename https://storage.googleapis.com/tekton-releases/dashboard/latest/tekton-dashboard-release.yaml
  • 阿里云资源方式
# 安装一个 Tekton 提供的一个 Dashboard , 我们可以通过 Dashboard 查看 Tekton 整个任务的构建过程,直接执行下面的命令直接安装即可kubectl apply -f http://my-oss-testing.oss-cn-beijing.aliyuncs.com/k8s/tekton/dashboard.yaml安装完后,可以查看其svc资源,类型为NodePort,暴露30952端口
云原生强大且灵活的持续集成CI开源框架Tekton实战-上

文章插图
访问http://tekton.com:30952/ ,这里我是作为host解析,所以可以域名访问
云原生强大且灵活的持续集成CI开源框架Tekton实战-上

文章插图
安装Cli# 下载rpm或者二进制包wget https://github.com/tektoncd/cli/releases/download/v0.26.0/tektoncd-cli-0.26.0_Linux-64bit.rpm# rpm安装rpm -Uvh tektoncd-cli-0.26.0_Linux-64bit.rpmtkn task listtkn --help
云原生强大且灵活的持续集成CI开源框架Tekton实战-上

文章插图
Pipelines示例演示演示步骤如下
  • 创建两个任务 。其中一个任务用2.3节的任务
  • 创建一个包含任务的管道 。
  • 使用PipelineRun实例化并运行包含任务的管道 。
创建goodbye-world.yaml
apiVersion: tekton.dev/v1beta1kind: Taskmetadata:name: goodbyespec:steps:- name: goodbyeimage: alpinescript: |#!/bin/shecho "Goodbye World,itxs"

推荐阅读