1 Tekton Pipelines 快速入门
官方文档:https://tekton.dev/docs/
1.1 安装 Tekton 相关工具
管饭安装链接:https://tekton.dev/docs/pipelines/install/
环境要求:
- Tekton Pipelines 0.11.0 及以上的版本,需要运行于 Kubernetes v1.15 以上的集群中;
-
集群上要启用了 RBAC 鉴权插件;
-
拥有管理员权限(绑定到了clusterrole/cluster-admin)的用户;
部署 Tekton Pipelines:
- 根据 Tekton Pipelines 项目提供的配置文件完成部署
kubectl apply --filename https://storage.googleapis.com/tekton-releases/pipeline/latest/release.yaml
- Tekton Pipelines会部署两个controller和webhook两个应用
kubectl get deployments -n tekton-pipelines
- 客户端工具tkn
- 下载页面:https://github.com/tektoncd/cli/releases
curl -LO https://github.com/tektoncd/cli/releases/download/v0.22.0/tektoncd-cli-0.22.0_Linux-64bit.deb
sudo dpkg -i ./tektoncd-cli-0.22.0_Linux-64bit.deb
1.1.1 部署 Tekton Pipelines
操作如下:
1 安装
root@master:~# kubectl apply --filename https://storage.googleapis.com/tekton-releases/pipeline/latest/release.yaml
2 部署完毕检查
root@master:~# kubectl get pod -n tekton-pipelines
NAME READY STATUS RESTARTS AGE
tekton-pipelines-controller-799fd96f87-5jmk9 1/1 Running 0 45s
tekton-pipelines-webhook-6f44cfb768-hhl7j 1/1 Running 0 45s
# 它会自动创建于给 tekton-pipeline 的 NS
# 在这个 NS 运行了 controller、webhook 两个 Pod
3 查看 CRD 的 API 群组
root@master:~# kubectl api-resources --api-group=tekton.dev
NAME SHORTNAMES APIVERSION NAMESPACED KIND
clustertasks tekton.dev/v1beta1 false ClusterTask
conditions tekton.dev/v1alpha1 true Condition
pipelineresources tekton.dev/v1alpha1 true PipelineResource
pipelineruns pr,prs tekton.dev/v1beta1 true PipelineRun
pipelines tekton.dev/v1beta1 true Pipeline
runs tekton.dev/v1alpha1 true Run
taskruns tr,trs tekton.dev/v1beta1 true TaskRun
tasks tekton.dev/v1beta1 true Task
其中最重要的 CRD 分别是:Pipeline、PipelineRun、Task、TaskRun
各CRD的简要说明
- Task:一系列 Step 的组合,每个Step 主要负责运行特定的构建或交付工具从而完成相关的一次特定事项;
-
TaskRun:Task 的实例化,支持附带 inputs、outputs 和 parameters;可独立运行,亦可由 Pipeline 发起并运行;
-
Pipeline:负责实现某个特定构建或交付目标的一系列任务的组合,可由事件或 PipelineRun 触发运行;
-
PipelineRun:Pipeline 的实例化,运行附带 inputs、outputs 和 parameters;
-
PipelineResource (Deprecated) :定义可由 Step 使用的 input 或 output 资源的具体位置;
这里为了更好的使用 tekton 我们还需要部署 dashboard、tkn(tekton 客户端交互式命令行)
1.1.2 部署 dashboard
安装地址:https://tekton.dev/docs/dashboard/
1 通过 yaml 文件部署
root@master:~# kubectl apply --filename https://github.com/tektoncd/dashboard/releases/latest/download/tekton-dashboard-release.yaml
2 部署成功
root@master:~# kubectl get pod -n tekton-pipelines
NAME READY STATUS RESTARTS AGE
tekton-dashboard-56fcdc6756-brv8j 1/1 Running 0 52s # dashboard 部署成功
tekton-pipelines-controller-799fd96f87-5jmk9 1/1 Running 0 10m
tekton-pipelines-webhook-6f44cfb768-hhl7j 1/1 Running 0 10m
3 修改对应 svc 实现对外暴露
# 查看对应 svc 可以看到当前 dashboard 为 CIP 我们需要将其改为 EXTERNAL-IP
root@master:~# kubectl get svc -n tekton-pipelines
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
tekton-dashboard ClusterIP 10.102.28.152 <none> 9097/TCP 2m17s
tekton-pipelines-controller ClusterIP 10.99.137.168 <none> 9090/TCP,8008/TCP,8080/TCP 12m
tekton-pipelines-webhook ClusterIP 10.102.3.237 <none> 9090/TCP,8008/TCP,443/TCP,8080/TCP 12m
# 修改为 EXTERNAL-IP ,让他实现对外访问
root@master:~# kubectl edit svc -n tekton-pipelines tekton-dashboard
spec:
externalIPs:
- 10.0.0.131 # 在 spec 字段下添加该字段
# 再次查看当前的 external-ip 已经实现绑定
service/tekton-dashboard edited
root@master:~# kubectl get svc -n tekton-pipelines
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
tekton-dashboard ClusterIP 10.102.28.152 10.0.0.131 9097/TCP 5m45s
4 所以为了方便我将在这里定义虚拟主机头
1.1.2.1 浏览器访问
http://tekton.zgy.com:9097/#/about
1.1.3 部署交互式命令
当我们部署完了 dashboard 和 tekton pipelines 之后我们还需要部署对应的 tekton 命令行
部署链接:https://github.com/tektoncd/cli/releases
这里我部署 0.23 版本
1 下载安装包
# 由于我这里是 x86 架构的 os,所以下载对应的 x86,如果您是其他版本则需要按需下载
root@master:~# wget https://github.com/tektoncd/cli/releases/download/v0.23.0/tkn_0.23.0_Linux_x86_64.tar.gz
2 解压
root@master:~/tekton# tar xf tkn_0.23.0_Linux_x86_64.tar.gz
# 将二进制文件移动至 bin
root@master:~/tekton# mv tkn /usr/local/bin/
# 测试 tkn 可使用,然后会将我们刚才部署的这几个组件的版本输出
root@master:~/tekton# tkn version
Client version: 0.23.0
Pipeline version: v0.34.1
Dashboard version: v0.25.0
以上就是 tekon 的部署步骤