You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Terraform创建OpenShift项目遇权限问题,如何改用ProjectRequests API?

用Terraform调用ProjectRequests API创建OpenShift项目的解决方案

先明确:oc new-project本质是向OpenShift的projectrequests.project.openshift.io API提交请求,而非直接创建Namespace或Project资源。你的权限允许操作ProjectRequests,但不允许直接创建Namespace/Project,所以直接在Terraform里调用这个API对象就行。

Terraform的kubernetes_manifest资源可以直接定义Kubernetes/OpenShift API对象,不需要依赖特定的Provider资源类型,刚好适配这个场景。

具体配置代码

resource "kubernetes_manifest" "atlas_project_request" {
  manifest = {
    apiVersion = "project.openshift.io/v1"
    kind       = "ProjectRequest"
    metadata = {
      # 若要固定项目名称,将generateName替换为name = "atlas"即可,注意避免名称重复
      generateName = "atlas-"
    }
    spec = {
      displayName = "Atlas Project" # 可选配置,项目的显示名称
      description = "用于Atlas工作负载的项目" # 可选配置,项目描述
    }
  }
}

关键说明

  • 必须指定apiVersion为project.openshift.io/v1、kind为ProjectRequest,这和oc new-project调用的API完全对应
  • 执行该配置时,Terraform会向OpenShift提交ProjectRequest,集群会自动创建对应的Project及关联的Namespace,同时应用默认RBAC规则,效果和oc new-project完全一致
  • 既然你能成功执行oc new-project aa,该Terraform配置的权限要求和它完全匹配,可正常通过RBAC校验

可选:提前验证权限

你可以先用oc命令手动确认自身是否具备创建ProjectRequests的权限:

oc auth can-i create projectrequests.project.openshift.io

返回yes即可放心使用上述配置。


内容的提问来源于stack exchange,提问作者Brandon Kauffman

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 12:35:20