首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法从webhook容器创建TaskRun/PipeLineRun

无法从webhook容器创建TaskRun/PipeLineRun
EN

Stack Overflow用户
提问于 2021-10-23 17:53:07
回答 1查看 26关注 0票数 0

我正在尝试创建一个PipeLineRun/PipeLineRun,从一个大洲内部监听一个webhook并运行tkn --但我需要RBAC权限。我尝试将角色绑定角色:tekton-pipelines controller设置为默认服务帐户:

代码语言:javascript
复制
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
  name: webhook
  namespace: tekton-pipelines
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: Role
  name: tekton-pipelines-controller
subjects:
  - kind: ServiceAccount
    name: default
    namespace: default

但我还是不能这样做:

代码语言:javascript
复制
kubectl auth can-i create taskrun -n default --as=system:serviceaccount:default:default

no

我还尝试为资源创建一个角色:

代码语言:javascript
复制
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
  name: webhook-create-taskrun
  namespace: tekton-pipelines
rules:
  - apiGroups: ["tekton.dev/v1beta1"]
    resources: ["taskrun"]
    verbs: ["get", "create", "list"]
# [ delete deletecollection get list patch create update watch ]
---
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
  name: webhook-create-taskrun
  namespace: tekton-pipelines
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: Role
  name: webhook-create-taskrun
subjects:
  - kind: ServiceAccount
    name: default
    namespace: default

不幸的是,仍然无法访问

我还在tekton- RoleBindings中的所有管道中查找了任何"taskrun“,但什么也没有找到

代码语言:javascript
复制
        ns := "tekton-pipelines"
    rbacClientSet := clientSet.RbacV1()
    rolebindings, _ := rbacClientSet.RoleBindings(ns).List(context.Background(), metav1.ListOptions{})

    for _, element := range rolebindings.Items {
        fmt.Println(element)
    }
EN

回答 1

Stack Overflow用户

发布于 2021-10-24 09:02:51

您的ServiceAccount应该被授予类似于EventListener的权限(Tekton触发器)。

您可以在那里找到一个示例角色:https://github.com/tektoncd/triggers/blob/main/config/200-clusterrole.yaml#L64-L87

代码语言:javascript
复制
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
  name: tekton-triggers-eventlistener-roles
  labels:
    app.kubernetes.io/instance: default
    app.kubernetes.io/part-of: tekton-triggers
rules:
  - apiGroups: ["triggers.tekton.dev"]
    resources: ["eventlisteners", "triggerbindings", "triggertemplates", "triggers"]
    verbs: ["get", "list", "watch"]
  - apiGroups: [""]
    resources: ["configmaps"]
    verbs: ["get", "list", "watch"]
  - apiGroups: ["tekton.dev"]
    resources: ["pipelineruns", "pipelineresources", "taskruns"]
    verbs: ["create"]
  - apiGroups: [""]
    resources: ["serviceaccounts"]
    verbs: ["impersonate"]
  - apiGroups: ["policy"]
    resources: ["podsecuritypolicies"]
    resourceNames: ["tekton-triggers"]
    verbs: ["use"]

您使用的(tekton-pipelines PipelineRuns )不是用来创建控制器的。

您尝试自己编写的代码允许创建TaskRuns,但您仍然缺少PipelineRuns。

如果您正在实现自己的触发器,则可能不需要完整的tekton- triggers eventlistener-roles权限。创建流水线运行可能就足够了。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69690697

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档