首页 > 解决方案 > 是否可以让 kubernetes 入口 treafik 适用于所有命名空间

问题描述

现在我正在使用treafik向外部公开我的pods服务,但是我阅读了treafik部署文档并发现仅在一个命名空间中的treafik转发请求。例如,A命名空间请求无法转发到B命名空间,我应该部署多treafik在 kubernetes 集群中?现在我有 6 个命名空间,我应该部署 6 个 treafik 吗?它是有线的,关于这种情况的最佳做法是什么?我从互联网上找到,但没有发现任何关于此的内容。

标签: kubernetes

解决方案


如果我理解正确的话,很遗憾这是不可能的,这样做是有意识的决定:

跨命名空间引用将是权限提升攻击的主要来源。

但是,如果您不关心安全规则,则有一种解决方法(请记住,它不适用于每个平台)。您需要使用 Kubernetes 类型externalName的服务,它会引用其他命名空间中的服务。请参见下面的示例:

一个。你serviceAnamespaceA

湾。创建serviceBnamespaceB

spec:
    ...
    type: ExertalName
    externalName: serviceA.namespaceA.svc.cluster.local

C。将入口规则添加到ingressBinnamespaceB

 - path: /****
    backend:
      serviceName: serviceB
      servicePort: ***

但是,如果您只为每个命名空间部署多个 ingress treafik 会更安全。

我希望它有所帮助。


推荐阅读