【问题标题】:Openshift: User "system:serviceaccount:<project>:jenkins" can't create PV : RBAC: clusterrole.rbac.authorization.k8s.io "create" not foundOpenshift:用户“system:serviceaccount:<project>:jenkins”无法创建PV:RBAC:clusterrole.rbac.authorization.k8s.io“create”未找到
【发布时间】:2020-05-14 07:30:13
【问题描述】:

Openshift/okd 版本:3.11

我正在使用 openshift 目录中的 jenkins-ephemeral 应用程序,并使用 buildconfig 创建管道。参考:https://docs.okd.io/3.11/dev_guide/dev_tutorials/openshift_pipeline.html

当我启动管道时,在詹金斯的一个阶段,它需要创建一个持久卷,此时我收到以下错误:

Error from server (Forbidden): persistentvolumes is forbidden: User "system:serviceaccount:pipelineproject:jenkins" cannot create persistentvolumes at the cluster scope: RBAC: clusterrole.rbac.authorization.k8s.io "create" not found

我尝试使用以下命令将集群创建角色赋予服务帐户 jenkins,但我仍然收到相同的错误。

oc adm policy add-cluster-role-to-user create system:serviceaccount:pipelineproject:jenkins

【问题讨论】:

    标签: jenkins openshift openshift-origin jenkins-job-dsl okd


    【解决方案1】:

    创建PersistentVolume 通常是您应该手动执行的操作。理想情况下,您应该依赖PersistentVolumeClaimsPersistentVolumeClaims 是命名空间资源,您的服务帐户应该能够使用 edit 角色创建。

    $ oc project pipelineproject
    $ oc policy add-role-to-user edit -z jenkins
    

    但是,如果需要您直接与 PersistentVolume 对象交互,则有一个 storage-admin ClusterRole 应该能够为您的 ServiceAccount 提供必要的权限。

    $ oc project pipelineproject
    $ oc adm policy add-cluster-role-to-user storage-admin -z jenkins
    

    【讨论】:

    • 你提到PersistentVolume的不应该手动创建,那怎么创建呢?这里我使用模板来创建PersistentVolumePersistentVolumeClaims。如果假设 PersistentVolume 未从模板应用,则 PersistentVolumeClaims 将失败。如果假设我没有以正确的方式使用东西,请提出改进​​建议。
    • 这取决于您尝试添加的存储类型。通常,对于生产环境,您将 StorageClass 用于具有自动 PV 配置的存储后端。例如,AWS EBS 卷。显然,并非总是如此,但这是最佳实践。如果你正在使用一些痛苦的东西,比如 NFS 卷挂载,那么你别无选择,只能创建 PV PVC。
    • 是的,你是对的,这里我使用 NFS 卷挂载,因此我需要创建 PV 和 PVC。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-21
    • 1970-01-01
    • 2016-07-23
    • 2020-08-14
    • 1970-01-01
    相关资源
    最近更新 更多