必须先确认Kubernetes集群版本≥1.28、kubectl已配置且当前用户具备cluster-admin权限,否则CRD注册失败;再执行kubectl apply --filename https://infra.tekton.dev/tekton-releases/pipeline/latest/release.yaml部署核心组件;最后验证CRD注册和TaskRun执行成功。

要在 Kubernetes 集群上部署 Tekton 云原生流水线构建系统,你必须先确认集群版本 ≥1.28、kubectl 已配置且当前用户具备 cluster-admin 权限,否则 release.yaml 中的 CRD 将无法注册,后续所有资源创建都会失败。
验证并准备 Kubernetes 环境
运行 kubectl version --short 查看客户端和服务端版本,确保 Server Version ≥ v1.28;若低于该版本,Tekton Pipelines 的 v0.49+ 版本将拒绝安装,CRD 注册会静默失败。
执行 kubectl auth can-i '*' '*' --all-namespaces,输出必须为 yes,否则需先绑定 cluster-admin 角色:kubectl create clusterrolebinding tekton-admin --clusterrole=cluster-admin --serviceaccount=default:default(仅用于快速验证,生产环境请用专用 serviceaccount)。
一键部署 Tekton Pipelines 核心组件
直接应用官方最新稳定版清单:
kubectl apply --filename https://infra.tekton.dev/tekton-releases/pipeline/latest/release.yaml
这一步会创建 【tekton-pipelines】 命名空间,并部署 controller、webhook 及全部 CRD(包括 Task、Pipeline、TaskRun、PipelineRun)。清单已预编译,无需本地下载或解压。
等待控制器就绪:运行 kubectl get pods -n tekton-pipelines --watch,直到所有 Pod 显示 1/1 并处于 Running 状态(通常 30~90 秒),此时 Tekton Pipelines 即可使用。
按需扩展功能组件
方法一:安装 Dashboard(可视化界面)
kubectl apply -f https://storage.googleapis.com/tekton-releases/dashboard/latest/release.yaml
Dashboard 默认通过 NodePort 暴露在 9097 端口,可用 kubectl port-forward -n tekton-dashboard svc/tekton-dashboard 9097:9097 本地访问。
方法二:启用 Webhook 自动触发(需配合 GitHub/GitLab)
依次运行:
kubectl apply -f https://storage.googleapis.com/tekton-releases/triggers/latest/release.yaml → kubectl apply -f https://storage.googleapis.com/tekton-releases/triggers/latest/interceptors.yaml
注意:Triggers 组件依赖 EventListener Service,它默认使用 ClusterIP,如需外部访问需手动改为 NodePort 或配置 Ingress。
验证部署是否生效
第一步:检查自定义资源是否注册成功
运行 kubectl get crd | grep tekton.dev,应至少返回 12 行,包含 tasks.tekton.dev、pipelines.tekton.dev、taskruns.tekton.dev、pipelineruns.tekton.dev 等核心资源。
第二步:提交一个最简 TaskRun 测试执行能力
创建文件 hello-run.yaml:
apiVersion: tekton.dev/v1beta1kind: TaskRunmetadata: name: hello-worldspec: taskSpec: steps: - name: echo image: alpine command: ["/bin/sh"] args: ["-c", "echo 'Hello from Tekton!'"]
执行 kubectl apply -f hello-run.yaml,再运行 kubectl get taskrun hello-world -o wide,状态变为 Succeeded 即表示整个流水线引擎已正常工作。

















