提一个不合理的地方-不同的项目必须要用不同的命名空间

  • Choerodon平台版本:0.20.0

  • 运行环境(如localhost或k8s):k8s

  • 问题描述:
    按理来说,不同的项目它们应该公用相同的命名空间(例如阿里云效),比如测试环境它们都是test命名空间。但是c7n里,不同的项目要建不同的环境,导致它们的命名空间都不一样了。建议环境配置是所有项目共享的,这样我只需要建立几个命名空间,可以给所有项目使用。

如果是进行集群和环境的统一管理的话,建议直接单独另外起一个项目作为运维管理的项目,然后由其他项目进行应用的版本共享功能共享到运维项目进行统一的部署管理。
多项目共用环境会造成权限、安全隔离等等的问题,毕竟环境一旦进行共享之后安全约束就不好进行管理。

谢谢答复。我按照你的建议,新建了“运维”项目,然后把xx项目共享给了“运维”。“运维”里面的手动部署可以选择“共享应用”部署成功。但是用流水线部署的话,“应用服务”就是空的。

另外,我将4个应用共享给了“运维”项目,但是在“共享应用”的“应用服务”下拉里面只能看到2个应用。

跨项目的流水线触发会有权限安全问题,这部分我们没有放开该权限内容,在统一环境集群管理的需求下目前不支持跨项目的流水线功能

可以提供一些详细的截图,是否是共享规则或者版本未设置正确?

那你这个应用有跑出来版本吗?

其实我问这个问题的原因,是因为,如果在测试环境,命名空间叫做test,开发环境,命名空间叫做dev。
原本不管是哪个环境,应用A访问应用B,代码里面都是写:B
但是用了c7n之后,应用B在测试环境的命名空间是b-test,开发环境是b-dev,导致应用A的代码要先判断自身的环境,然后访问B.b-test等。
这样就把代码和环境绑在一起了,以后要维护也困难。

跑出来了

理解。但是项目中的环境本就是做隔离用的,多个项目如果共用一个环境那权限如何定义分配?实际k8s安全管理中,对于部署资源的权限维度也是基于rbac对ns来进行分配隔离的,多项目混用一个环境说实话本就不是正常的操作,会导致权限、审计等等没有办法进行管理。其次,若应用间进行访问还是建议用ns.svc这种比较“全”的地址来进行命名比较规范,因为很多中间件、数据库诸如mysql等等svc名称一样的时候,不全的地址配置会导致没有办法直观的通过配置确定你连接的组件是什么,不便于配置的管理,当然这个是我们这边内部要求的规范,不这样技术上确实是没有问题。
以上您可以参考一下,那个共享找不到的问题我们看下是什么原因

嗯嗯。感谢指导。能不能再跟我分享多一点呢。比如你们现在是如何在一个应用里面,区分要调用的服务的ns.svc。

一般通用的中间件、数据库会专门放在一个ns下进行管理,对应到猪齿鱼平台会有一个专门的运维项目,这边会维护很多这种通用的组件,然后分发给其他项目的ns去使用这样,配置分发的功能目前还在做,会在后面上线

好的,很期待。