PAYATHON 2026

CodeReady Containers 中 developer 无法访问 Topology

排障赵师傅

结论

developer 无需单独获取 “Topology 权限”。Topology 页面读取的是当前 Project(即 Kubernetes namespace)中的 DeploymentConfig、Deployment、Service、Route 等资源。

报错中写明:

in the namespace "default"

这表示控制台正在读取 default namespace。普通 developer 用户默认无权查看这个系统预置 namespace,所以请求会被拒绝。切换到 developer 自己创建的 Project 即可,无需授予整个集群的管理员权限。

如果目标 Project 由其他用户创建,可以由管理员在该 Project 中为 developer 授予 edit 角色。

确认当前选择的 Project

进入 OpenShift Web Console 的 Developer 视图,查看页面上方的 Project 下拉框。将 Project 从 default 切换为刚创建的项目,例如 demo 或 myproject。

如果还没有项目,可以在命令行中以 developer 身份登录并创建:

oc login -u developer -p developer
oc new-project myproject
oc project myproject

不同 CRC 版本的 API 地址和登录方式可能不同,可以先查看 CRC 提供的登录信息:

crc console --credentials

登录后检查当前身份和项目:

oc whoami
oc project

用户应为 developer,当前项目应为 myproject,不能是 default。

随后返回 Web Console,刷新页面,在 Project 下拉框中选择 myproject,再打开 Topology。

检查 developer 的现有权限

使用 oc auth can-i 可以直接检查某项操作是否获得授权:

oc auth can-i list deploymentconfigs.apps.openshift.io -n myproject

如果输出:

yes

说明权限正常,问题通常是 Web Console 选择了错误的 Project。

也可以检查其他常规开发操作:

oc auth can-i create deployments.apps -n myproject
oc auth can-i create services -n myproject
oc auth can-i create routes.route.openshift.io -n myproject
oc auth can-i create pods -n myproject

用户通过 oc new-project 创建 Project 后,通常会自动获得该 Project 的管理权限。实际行为可能受到集群 RBAC 和项目模板配置的影响。

为 developer 授予现有 Project 的开发权限

如果 myproject 由 kubeadmin 或其他管理员创建,developer 可能没有相应权限。先使用 CRC 显示的管理员凭据登录:

crc console --credentials

再执行:

oc adm policy add-role-to-user edit developer -n myproject

edit 适合常规开发。该角色允许用户在指定 Project 中创建和修改应用资源,但无权管理整个集群。

授权后可以验证:

oc auth can-i list deploymentconfigs.apps.openshift.io \
  --as=developer \
  -n myproject

如果 developer 还需要管理该 Project 中的角色绑定等设置,可以授予 admin:

oc adm policy add-role-to-user admin developer -n myproject

常规开发使用 edit 即可。只有需要管理项目成员和权限时,才使用 admin。

必须访问 default namespace 时

default 不适合作为日常开发项目。如果确实需要让 developer 在其中开发,可以由管理员执行:

oc adm policy add-role-to-user edit developer -n default

如果只需查看资源,可以授予权限较小的 view:

oc adm policy add-role-to-user view developer -n default

更合适的做法是创建独立的 Project,并将应用部署到其中。

不要直接授予 cluster-admin

以下命令可能会消除报错,但不适合作为常规解决方案:

oc adm policy add-cluster-role-to-user cluster-admin developer

它会让 developer 获得整个集群的最高权限,可以访问系统组件和其他 Project。即使 CRC 通常用于本地开发,也没必要为了打开 Topology 页面授予这么大的权限范围。

仍然报错时如何排查

先确认当前身份:

oc whoami

列出当前用户可以访问的项目:

oc projects

检查目标项目中的权限:

oc auth can-i list deploymentconfigs.apps.openshift.io -n myproject

查看目标项目中的角色绑定:

oc get rolebinding -n myproject

如果命令行检查结果为 yes,Web Console 却仍然提示无权访问 default,可以退出控制台后重新登录,选择 myproject,然后刷新 Topology 页面。

用户在当前 namespace 中绑定的角色决定了实际权限。developer 只是用户名,不会自动获得开发权限,OpenShift RBAC 才是权限的依据。

备注:内容仅供参考。