
# 不同命名空间下的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的配置页面将出现以下提示。
![](https://support.huaweicloud.com/cce_faq/zh-cn_image_0000001996757010.png "点击放大")
#### 解决方案
由于每一个TLS密钥对应ELB的一个证书，且密钥内容相同，ELB证书信息的获取是使用CCE委托权限，获取不受命名空间约束。因此可以通过修改ingress1的证书来源为服务器证书，并配置证书为TLS密钥对应的ELB证书，在ingress2的配置修改页面可以看到实际生效的服务器证书。
1. 登录CCE控制台，单击集群名称进入集群。
2. 选择左侧导航栏的"服务"，在右侧选择"路由"页签，单击ingress1路由对应的负载均衡器链接跳转到ELB页面。
3. 切换至"监听器"页签，根据ingress1配置的端口，在负载均衡器页面找到对应的监听器，并单击监听器名称进入详情。
4. 在监听器详情页面，找到服务器证书并记录。 
   ![](https://support.huaweicloud.com/cce_faq/zh-cn_image_0000002033272697.png "点击放大")
   
   
   
5. 在CCE控制台中，单击ingress1的"更多 \> 更新"，选择证书来源为ELB服务器证书，并配置为上一步骤查询到的服务器证书，单击"确定"更新Ingress配置。 
   ingress1的证书来源由TLS密钥更换为服务器证书，且更换前后密钥内容一致，实际生效的配置在更换前后不变。
   ![](https://support.huaweicloud.com/cce_faq/zh-cn_image_0000002009193212.png "点击放大")
   
   
   
6. 切换至namespace2，单击ingress2的"更多 \> 更新"，单击服务器证书下方的"同步"按钮，并单击"确定"更新Ingress配置。 
   ![](https://support.huaweicloud.com/cce_faq/zh-cn_image_0000002009352232.png "点击放大")
   
   
   
7. 更新完成后ingress2的配置显示正常。
 
