可视化 Tekton 组件 Tekton Dashboard

前言

Tekton 作为一款开源的云原生 CI/CD 框架,前身是 Knative 的 build-pipeline 项目。作为 CI/CD 框架,其本身并不是一个 CI/CD 产品,所以不应拿 Tekton 与 Jenkins 或者 Drone 这样的 CI/CD 产品进行比较,Tekton 本质是一个强大而灵活的 CI/CD 框架,开发者可以基于它开发自己的 CI/CD 工具或产品,一些有能力的团队可以使用 Tekton 做为底座开发出更适合自己团队使用的 CI/CD 工具。

而 Tekton 的可视化组件 Tekton Dashboard 则为用户提供了可视化界面,使 Tekton 的体验更接近与 Jenkins 这样的 CI/CD 产品,同时开发者可以在使用 Tekton Dashboard 时也会对 Tekton 的一些概念进行更深入的了解。

本文将会使用 Tekton Dashboard,通过 UI 界面在 K8S 集群中部署一个 Java 项目:pipeline-example-maven

交互式学习

本文还提供 [katacoda] 交互式学习版本,用户可以直接访问 katacoda 页面:https://katacoda.com/guoxudong/scenarios/tekton-dashboard ,使用 [katacoda] 在浏览器端学习使用 Tekton Dashboard。

该教程属于官方教程的汉化版,并得到了许可

可视化 Tekton 组件 Tekton Dashboard

Tekton Dashboard

安装

这是所有步骤中最麻烦的一步,由于官方提供的 Tekton 镜像都在 gcr.io 上,在国内并不能直接拉取,所以在测试的时候着实花费了不少时间。

我特意将这些镜像转储到 dockerhub 上,如果官方版无法使用,可以使用克隆版:

安装 Tekton Pipelines

# 官方
$ kubectl apply --filename https://storage.googleapis.com/tekton-releases/pipeline/previous/v0.10.1/release.yaml
# 克隆版
$ kubectl apply -f https://raw.githubusercontent.com/sunny0826/tekton-local/v0.10.1/tekton-pipeline.yaml

安装 Tekton Dashboard

# 官方
$ kubectl apply --filename https://storage.googleapis.com/tekton-releases/dashboard/previous/v0.5.3/tekton-dashboard-release.yaml
# 克隆版
$ kubectl apply -f https://raw.githubusercontent.com/sunny0826/tekton-local/v0.10.1/tekton-dashboard.yaml

安装成功之后需要配置 Tekton Dashboard 的访问地址,可以使用 ingress 或 Nodeport 暴露端口,这里采用 port-forward 的形式将端口映射到本地:

$ kubectl port-forward svc/tekton-dashboard 8097:9097 -n tekton-pipelines
Forwarding from 127.0.0.1:8097 -> 9097
Forwarding from [::1]:8097 -> 9097
...

访问 Tekton Dashboard

打开浏览器访问访问 http://localhost:8097

可视化 Tekton 组件 Tekton Dashboard

导入资源

点击 Import Tekton resources 进入资源导入页面,导入资源:

  • Repository URL: https://github.com/sunny0826/pipeline-example-maven
  • Namespace: default
  • Repository directory: tekton/
  • Service Account tekton-dashboard

输入内容如下:

可视化 Tekton 组件 Tekton Dashboard

点击 Import and Apply 按钮,之后 Dashboard 会创建一个 PipelineRun 来导入指定的 Tekton 资源。

点击页面底部的 View status of this run 链接,查看 MyApp 导入 Tekton 资源的状态。

可视化 Tekton 组件 Tekton Dashboard

PipelineRun 完成后,Tekton 资源已导入成功。

可视化 Tekton 组件 Tekton Dashboard

创建 PipelineResource

选择 default 命名空间,并点击 PipelineResource 按钮。

可视化 Tekton 组件 Tekton Dashboard

点击页面右上方的 Create + 按钮,将弹出一个创建 PipelineResource 的表单。

我们要在 default 命名空间中为 pipeline-example-maven 的 master 分支创建一个 git PipelineResource,故在弹出的表单中填写以下信息:

  • Name: pipeline-example-maven
  • Namespace: default
  • Type: Git
  • URL: https://github.com/sunny0826/pipeline-example-maven
  • Revision: master

该表单内容应如下:

可视化 Tekton 组件 Tekton Dashboard

点击 Create 按钮,创建 PipelineResource。

创建 PipelineRun

选择 default 命名空间,并点击 PipelineRuns 按钮。

可视化 Tekton 组件 Tekton Dashboard

点击页面右上方的 Create + 按钮,将弹出一个创建 PipelineRun 的表单。该表单是动态的,会根据所选的 Pipeline 提供 PipelineResource 和 Param 字段。

我们需要 default 命名空间中使用 pipeline-example-maven 的 Pipeline 和 PipelineResource,创建一个 PipelineRun,故在弹出的表单中填写以下信息:

  • Namespace: default
  • Pipeline: pipeline-example-maven
  • PipelineResources source: pipeline-example-maven
  • 其余字段保留默认值。

该表单内容应如下:

可视化 Tekton 组件 Tekton Dashboard

点击 Create 按钮,创建 PipelineRun。

查看 PipelineRun 日志

点击页面顶部创建通知中的链接或在 PipelineRun 列表中对应的 PipelineRun,查看 pipeline-example-maven PipelineRun 的日志。

可视化 Tekton 组件 Tekton Dashboard

deploy 步骤中,有时会出现权限错误,需要给 default:default 绑定上 admin 的 clusterrole 权限:

$ kubectl create rolebinding default-admin --clusterrole=admin --serviceaccount=default:default

确认 builddeploy 任务均已成功。

可视化 Tekton 组件 Tekton Dashboard

注意:这里为了方便,使用的是单节点的 Kubernetes,构建完并没有推送到镜像仓库,镜像拉取策略为 imagePullPolicy: Never ,所以启动时候也没有从远程仓库拉取镜像,而是启动的本地镜像。

查看构建结果

$ kubectl get deploy
NAME                 READY   UP-TO-DATE   AVAILABLE   AGE
example-greenhouse   1/1     1            1           5h2m

总结

Tekton Dashboard 将 Tekton 的资源进行了可视化展示,指导用户快速理解 Tekton pipeline 流程以及配置方式,快速上手 Tekton。但是由于镜像的原因,导致新手体验不佳,所幸官方还提供了 [katacoda] 交互式教程,该教程我已汉化完成并获得了官方的许可,可以在浏览器端快速体验从安装 Tekton 到部署应用的整个过程。

上一篇:k3d+k3s+kubecm 本地快速搭建与管理集群


下一篇:架构动静分离和分布式阶段——阿里云 MVP乔锐杰