如何通过Kubernetes/OpenShift API启动Tekton PipelineRun
通过Kubernetes API触发Tekton Pipeline的实现方案(OpenShift环境适用)
可以直接通过Kubernetes原生API实现Tekton Pipeline的触发,Tekton所有核心资源都是Kubernetes CRD,OpenShift完全兼容该操作逻辑,不需要依赖Triggers或者tkn命令行。
核心实现逻辑
直接向Kubernetes API发起POST请求,创建对应命名空间下的PipelineRun自定义资源即可,Tekton Pipeline控制器会自动监听到资源创建事件,触发对应的Pipeline执行。
具体操作步骤
- 确认API信息
Tekton Pipeline v1版本的API组为tekton.dev,资源路径为:/apis/tekton.dev/v1/namespaces/<目标命名空间>/pipelineruns
你可以先通过kubectl api-resources | grep pipelineruns确认当前集群部署的Tekton版本对应的API版本,部分旧版本可能使用tekton.dev/v1beta1。 - 构造请求体
标准的PipelineRun JSON结构示例如下,你可以根据你的Pipeline的参数、工作空间、服务账号配置调整:
{ "apiVersion": "tekton.dev/v1", "kind": "PipelineRun", "metadata": { "generateName": "run-<你的pipeline名称>-", "namespace": "<目标命名空间>", "labels": { "tekton.dev/pipeline": "<你的pipeline名称>" } }, "spec": { "pipelineRef": { "name": "<你的pipeline名称>" }, "params": [ { "name": "<参数1名称>", "value": "<参数1值>" } ], "workspaces": [ { "name": "<工作空间名称>", "persistentVolumeClaim": { "claimName": "<PVC名称>" } } ], "serviceAccountName": "<执行pipeline用的服务账号名称>" } }
- 发起API请求
OpenShift环境下可以直接使用OpenShift OAuth令牌发起请求,示例curl命令:
curl -X POST \ https://<你的OpenShift API地址>/apis/tekton.dev/v1/namespaces/<目标命名空间>/pipelineruns \ -H "Authorization: Bearer <你的OAuth令牌>" \ -H "Content-Type: application/json" \ -d '@<你的pipelinerun配置文件路径>.json'
实用验证技巧
你可以直接通过tkn命令行的verbose模式查看官方命令行底层的API调用逻辑,运行tkn pipeline start <你的pipeline名称> -v 6即可看到完整的请求路径、请求头、请求体内容,直接复用对应配置即可避免构造错误。
权限说明
调用API的身份(用户/服务账号)需要在对应命名空间下拥有pipelineruns.create权限,你可以通过以下Role配置授权:
apiVersion: rbac.authorization.k8s.io/v1 kind: Role metadata: namespace: <目标命名空间> name: pipelinerun-creator rules: - apiGroups: ["tekton.dev"] resources: ["pipelineruns"] verbs: ["create"]
内容的提问来源于stack exchange,提问作者Bharath
相关产品推荐
相关产品推荐

