CNAME记录不适用于openshift应用

问题描述 投票:1回答:1

我无法使用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
我已经部署了具有蓝/绿策略的应用程序。在以下屏幕截图中,您可以看到我可用的路线。

routes screenshot

mobile-blue:我手动创建了一个指向我的自定义域的文件[[mobileoffice.myinnovx.com

移动办公室:使用oc expose service mobile-office --name=mobile-blue创建,以使用外部访问。

mobile-green:Openshift为绿色应用程序版本自动生成的路线。 (Sourte2Image部署)

mobile-blue:Openshift为蓝色应用程序版本自动生成的路线。 (Sourte2Image部署)

我在DNS编辑页面上设置了两个CNAME记录,如下所示:

enter image description here

[在几篇博客/文章中,我发现我应该将通配符记录指向路由器路由的规范名称。但是我的集群中没有任何路由规范名称。我什至没有配置Ingress路由。

我在这里迷失了我所缺少的东西。任何帮助都非常有用。

kubernetes dns ibm-cloud openshift
1个回答
0
投票
默认情况下,OpenShift 3.11通过Red Hat的自定义HAProxy入口控制器(俗称“路由器”)公开应用程序。 OpenShft 3.x分类器中的典型设计是指定特定的群集主机,以运行HAProxy路由器和内部OpenShift注册表之类的群集基础结构工作负载。

为了方便起见,因此管理员不必为每个公开的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正在使用的通配符主机名。

© www.soinside.com 2019 - 2024. All rights reserved.