如何自定义服务的域名

在添加服务的时候.网络选项卡的域名是做什么用的.如何给服务配置私有域名共环境内部使用. 使用外部dns自动添加的域名是主机的地址.并不是环境内的内网地址.内部服务没法调用.而且外部dns使用的域名格式也是服务.堆.环境的模式.并不是自定义的域名格式.这个要如何配置.
已邀请:
1.  根据你的配置,添加域名后,你进容器中执行hostname,你会发现主机名为 Ubuntu9.a.cvdaily.cn;
 
2. 你的网络模式是主机还是管理?
 
3.  你们应该是用的BIND9吗?  
如果是bind9, 因为域名并不是rancher 这边直接传过去的, 域名是通过DNS Update (RFC2136)这个服务传给DNS服务器的。所以在定义DNS Name template 的时候,就不能用默认的 %{{service_name}}.%{{stack_name}}.%{{environment_name}}, 要改为%{{service_name}}.a.cvdaily.cn,这样刷新的域名才是Ubuntu9.a.cvdaily.cn;
 
要外部直接通过域名能直接访问容器,有至少三种方法:
1.搭建VPN,外部机器可以直接访问到10.42 这个私有网络;
2.利用扁平网络(应用商店flat网络),也就是容器直接使用了外部的物理网络;
3.通过域名反向代理实现域名访问;
 
推荐方案3,
 
方案1不稳定而且性能不怎么好;方案2需要更改服务的网络架构,变动大;
方案3只需要增加一个反向代理服务,比如通过平台的负载均衡或者自定义的nginx反向代理服务,或者Traefik。 通过工具去刷新反向代理的frontend和backend,frontend中绑定实际的域名(比如Ubuntu9.a.cvdaily.cn), backend中刷新为容器的私网IP。 在通过工具去刷新DNS记录,但DNS记录中的IP需要保证是反向代理服务的IP。
 
恩.感谢您的回答.根据您的解释.我明白了这个域名参数的真正意义.是我一开始对此参数的理解产生了误解.也感谢您对我提出问题的细心回答和解决方案.使我十分受教.也解决了我从外网对内容容器连接的问题.深表感谢.

要回复问题请先登录注册