我们正在尝试在非默认的k8s namespace 上使用nextflow,我们使用的 namespace 是nextflownamespace。我们已经创建了PVC,并确保默认服务帐户具有管理员角色绑定(bind)。我们收到一个错误,表明nextflow无法访问PVC:

"message": "persistentvolumeclaims \"my-nextflow-pvc\" is forbidden:
User \"system:serviceaccount:mynamespace:default\" cannot get resource
\"persistentvolumeclaims\" in API group \"\" in the namespace \"nextflownamespace\"",
在该错误中,我们看到system:serviceaccount:mynamespace:default错误地指向我们的默认 namespace mynamespace,而不是我们创建供nextflow使用的nextflownamespace
我们尝试将debug.yaml = true添加到我们的nextflow.config中,但是找不到提交给k8s的YAML以验证错误。我们的配置文件如下所示:
profiles {
  standard {
    k8s {
          executor = "k8s"
          namespace = "nextflownamespace"
          cpus = 1
          memory = 1.GB
          debug.yaml = true
        }
    aws{
          endpoint = "https://s3.nautilus.optiputer.net"
       }
  }
我们确实验证了当我们将命名空间更改为另一个任意值时,错误消息使用了新的任意命名空间,但是服务帐户名继续错误地指向用户的默认命名空间。
我们尝试了我们能想到的profiles.standard.k8s.serviceAccount = "system:serviceaccount:nextflownamespace:default"的每个变体,但这些尝试没有得到任何改变。

最佳答案

我认为最好避免在Nextflow中使用嵌套的config profiles。我要么从您的配置文件中删除“标准”层,要么将“标准”设为一个单独的配置文件:

profiles {

    standard {
      process.executor = 'local'
    }

    k8s {
        executor = "k8s"
        namespace = "nextflownamespace"
        cpus = 1
        memory = 1.GB
        debug.yaml = true
    }

    aws{
        endpoint = "https://s3.nautilus.optiputer.net"
    }
}

关于kubernetes - Nextflow没有使用正确的服务帐户将工作流部署到kubernetes,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/64072826/

10-11 07:13