OpenShift - Tekton
该页面的原作者是 Haroun
什么是 tekton
根据文档:Tekton 是一个强大且灵活的开源框架,用于创建 CI/CD 系统,允许开发人员在云提供商和本地系统上构建、测试和部署。 Jenkins 和 Tekton 都可以用于测试、构建和部署应用程序,但 Tekton 是云原生的。
在 Tekton 中,一切都由 YAML 文件表示。开发人员可以创建类型为 Pipelines
的自定义资源(CR),并在其中指定他们想要运行的多个 Tasks
。要运行 Pipeline,必须创建类型为 PipelineRun
的资源。
当安装 tekton 时,在每个命名空间中会创建一个名为 pipeline 的服务账户(sa)。当运行 Pipeline 时,将使用名为 pipeline
的此 sa 启动一个 pod,以运行 YAML 文件中定义的任务。
Pipeline 服务账户的能力
默认情况下,pipeline 服务账户可以使用 pipelines-scc
能力。这是由于 tekton 的全局默认配置。实际上,tekton 的全局配置也是一个 YAML,位于一个名为 TektonConfig
的 openshift 对象中,如果您在集群中拥有一些读取角色,则可以看到它。
在任何命名空间中,如果您能够获取管道服务帐户令牌,您将能够使用 pipelines-scc
。
配置错误
问题在于,管道服务帐户可以使用的默认 scc 是用户可控的。这可以通过命名空间定义中的标签来完成。例如,如果我可以使用以下 yaml 定义创建一个命名空间:
The tekton operator 将会赋予 test-namespace
中的 pipeline 服务账户使用 scc privileged 的能力。这将允许挂载节点。
修复方法
Tekton 文档关于如何通过在 TektonConfig
对象中添加标签来限制 scc 的覆盖。
这个标签被称为 max-allowed
Last updated