
# 自建IDC与CCE集群共享域名解析方案概述
#### 应用现状
当前，越来越多的软件采用微服务架构，构建一个产品时会大量使用微服务，不同微服务之间访问时涉及到域名访问。
拥有自建IDC的企业，在使用CCE时通常需要在CCE集群与自建IDC之间通信，而且当IDC有内部域名时，需要CCE集群内的节点和容器既能够解析IDC的域名，也能够解析云域名。
例如，某企业APP微服务改造后，其管理后台部署在CCE集群上，内容审核服务部署在企业原有的IDC，该企业同时购买了华为云图像识别服务。CCE所在的VPC和原有的IDC之间通过专线进行连接。部署架构如[图1]所示。
当用户访问该企业的APP时，不同微服务之间涉及到如下交互：
- CCE集群访问华为云图像识别服务时，默认使用华为云域名解析服务器。
- CCE集群访问IDC上部署的内容审核服务时，需要使用IDC内部域名服务器。
这就需要在CCE集群上既能使用华为云域名解析服务器，也能够使用IDC内部域名服务器。如果将CCE节点上域名解析服务器指向IDC的域名解析服务器，那会导致无法解析华为云的域名；如果修改hosts文件配置增加IDC内部域名IP，在IDC内部服务IP变化时需要实时刷新CCE节点的配置，这很难做到且会导致不可用。
![](https://support.huaweicloud.com/bestpractice-cce/public_sys-resources/note_3.0-zh-cn.png)
内容审核服务与图像识别服务仅为举例，也可以是其他服务。
图1某企业APP微服务示意图   
![](https://support.huaweicloud.com/bestpractice-cce/zh-cn_image_0000001091685318.png "点击放大")
本文介绍一种自建IDC与CCE集群共享域名解析的方案，可做到同时解析华为云域名和外部域名。
#### 解决方案一：通过DNS Endpoint做级联解析
利用VPCEP服务创建DNS Endpoint，使得IDC能访问华为云域名解析服务器，将DNS Endpoint与IDC的域名解析服务器做级联，从而使得CCE集群中节点及容器在域名解析时，通过IDC的域名解析服务器进行解析。
- 如果是需要解析华为云内域名，则转发给DNS Endpoint，使用华为云DNS解析出地址并返回。
- 如果是需要解析IDC域名，则直接通过IDC的域名解析服务器直接解析出地址并返回。
图2节点同时访问华为云域名和外部域名   
![](https://support.huaweicloud.com/bestpractice-cce/zh-cn_image_0000001138547595.png "点击放大")
对于容器中的域名解析，可在创建Pod时将DNS Policy设置为ClusterFirst，这样容器中的域名解析直接走CoreDNS。
- 如果是需要解析集群内域名，则CoreDNS直接解析出结果返回。
- 如果是解析外部域名，则通过CoreDNS，转到IDC的域名解析服务器解析。
图3容器同时访问华为云域名和外部域名   
![](https://support.huaweicloud.com/bestpractice-cce/zh-cn_image_0000001091845538.png "点击放大")
#### 解决方案二：修改CoreDNS配置直接解析
直接修改CoreDNS配置，可在创建Pod时将DNS Policy设置为ClusterFirst，这样容器中的域名解析直接走CoreDNS。
- 如果是需要解析集群内域名，则CoreDNS直接解析出结果返回。
- 如果是解析外部域名，则通过CoreDNS，转到IDC的域名解析服务器解析。
- 如果是访问华为云内部域名，则直接使用华为云内部域名解析服务器解析
图4方案二：修改CoreDNS配置   
![](https://support.huaweicloud.com/bestpractice-cce/zh-cn_image_0000001091846156.png "点击放大")
#### 方案比较
| 方案                      | 优点                                 | 缺点                                                                                                                                                                                                                                                              |
|:---|:---|:---|
| 方案一：通过DNS Endpoint做级联解析 | 支持在CCE集群节点容器与节点同时解析外部域名            | 解析华为云内部域名时也需要通过外部域名解析服务器转发，存在性能损耗                                                                                                                                                                                                                               |
| 方案二：修改CoreDNS配置         | 解析华为云内部域名时不需要通过外部域名解析服务器转发，不存在性能损耗 | - 不支持在CCE集群节点解析外部域名。  - Coredns升级、回退会导致配置会丢失，需要重新配置。   |
   
