文档首页/ 云容器引擎 CCE/ 常见问题/ 网络管理/ 网络指导/ 不同命名空间下的Ingress共用监听器时如何同步生效的证书?
更新时间:2024-09-30 GMT+08:00

不同命名空间下的Ingress共用监听器时如何同步生效的证书?

问题背景

在同一个集群中,多个Ingress可以使用同一个监听器(即使用同一个负载均衡器的同一个端口)。如果两个Ingress均配置了HTTPS证书,则生效的服务器证书将以最早创建的Ingress配置为准。

但是不同命名空间下的Ingress对接同一个监听器且使用TLS密钥类型证书时,由于命名空间隔离,后创建的Ingress可能出现无法正常显示TLS密钥对应Secret的场景。

例如,两个Ingress配置如下:

Ingress名称

ingress1

ingress2

命名空间

namespace1

namespace2

创建时间

2024/04/01

2024/04/02

协议

https

https

负载均衡器

elb1

elb1

端口

443

443

证书来源

TLS密钥

TLS密钥

TLS密钥对应secret

namespace1/secret1

namespace2/secret2

实际生效的证书

namespace1/secret1

namespace1/secret1

问题现象

在同一个集群中,在namespace1创建ingress1,在namespace2创建ingress2,两个Ingress对接同一个监听器,使用了TLS密钥类型的证书。

由于ingress1创建时间早于ingress2,所以实际生效证书以ingress1为准。但ingress2所在命名空间不是namespace1,无法读到secret1的配置,在ingress2的配置页面将出现以下提示。

解决方案

由于每一个TLS密钥对应ELB的一个证书,且密钥内容相同,ELB证书信息的获取是使用CCE委托权限,获取不受命名空间约束。因此可以通过修改ingress1的证书来源为服务器证书,并配置证书为TLS密钥对应的ELB证书,在ingress2的配置修改页面可以看到实际生效的服务器证书。

  1. 登录CCE控制台,单击集群名称进入集群。
  2. 选择左侧导航栏的“服务”,在右侧选择“路由”页签,单击ingress1路由对应的负载均衡器链接跳转到ELB页面。
  3. 切换至“监听器”页签,根据ingress1配置的端口,在负载均衡器页面找到对应的监听器,并单击监听器名称进入详情。
  4. 在监听器详情页面,找到服务器证书并记录。

  5. 在CCE控制台中,单击ingress1的“更多 > 更新”,选择证书来源为ELB服务器证书,并配置为上一步骤查询到的服务器证书,单击“确定”更新Ingress配置。

    ingress1的证书来源由TLS密钥更换为服务器证书,且更换前后密钥内容一致,实际生效的配置在更换前后不变。

  6. 切换至namespace2,单击ingress2的“更多 > 更新”,单击服务器证书下方的“同步”按钮,并单击“确定”更新Ingress配置。

  7. 更新完成后ingress2的配置显示正常。