我无法使用Openshift集群获得自定义域记录。我已经阅读了大量文章,stackoverflow帖子和此youtube视频https://www.youtube.com/watch?v=Y7syr9d5yrg。对我来说,所有人似乎“几乎”都是有用的,但是总有一些遗漏,我无法自己完成这项工作。
方案如下。我已经在IBM Cloud帐户上部署了一个openshift集群。我已经注册了[[myinnovx.com。我想将它与openshift应用程序一起使用。群集详细信息:
oc v3.11.0+0cbc58b
kubernetes v1.11.0+d4cacc0
features: Basic-Auth
Server https://c100-e.us-south.containers.cloud.ibm.com:31104
openshift v3.11.146
kubernetes v1.11.0+d4cacc0
我已经部署了具有蓝/绿策略的应用程序。在以下屏幕截图中,您可以看到我可用的路线。mobile-blue:我手动创建了一个指向我的自定义域的文件[[mobileoffice.myinnovx.com
移动办公室:使用oc expose service mobile-office --name=mobile-blue
创建,以使用外部访问。
mobile-blue:Openshift为蓝色应用程序版本自动生成的路线。 (Sourte2Image部署)
我在DNS编辑页面上设置了两个CNAME记录,如下所示:
[在几篇博客/文章中,我发现我应该将通配符记录指向路由器路由的规范名称。但是我的集群中没有任何路由规范名称。我什至没有配置Ingress路由。
我在这里迷失了我所缺少的东西。任何帮助都非常有用。
为了方便起见,因此管理员不必为每个公开的OpenShift应用程序手动创建DNS记录,这里有一个通配符DNS条目,该条目指向与HAProxy路由器关联的负载均衡器。 DNS名称是在用于安装群集的ansible清单文件的openshift_master_default_subdomain中配置的。
此记录的结构通常类似于*.apps.<cluster name>.<dns subdomain>
,但可以是您喜欢的任何东西。
如果您想为应用程序使用更漂亮的DNS名称,则可以做几件事。
[首先是创建一个指向您的负载均衡器的DNS条目myapp.example.com
,并将您的负载均衡器配置为将这些请求转发到HAProxy路由器在端口443上运行的群集主机。然后,您可以配置应用程序的[C0 ]对象以使用主机名Route代替默认的myapp.example.com
。
另一种方法是按照您的建议进行操作,并让应用程序使用默认的通配符路由名称,但是创建一个指向原始通配符路由名称的DNS CNAME。例如,如果我的<app name>-<project name>.apps.<cluster name>.<dns subdomain>
是openshift_master_default_subdomain
,而我的应用程序路由是apps.openshift-dev.example.com
,那么我可以创建一个指向myapp-myproject.apps.openshift-dev.example.com
的CNAME DNS记录myapp.example.com
。
进行以上任何一项工作的关键是HAProxy路由器不在乎请求的主机名是什么。它要做的就是将入站请求的Host标头(对于TLS请求和HAProxy路由器,必须设置SNI以进行传递)与集群中的所有Route对象相匹配,并查看它们是否匹配。
就您而言,我认为您没有将CNAME指向正确的位置。您需要将CNAME指向应用程序Route正在使用的通配符主机名。