【问题标题】:Exposing openshift service to aws public ip向 aws 公共 IP 公开 openshift 服务
【发布时间】:2019-01-18 00:36:08
【问题描述】:

我在 aws 中运行 openshift

[centos@ip-10-0-0-14 ~]$ oc version
oc v3.6.1+008f2d5
kubernetes v1.6.1+5115d708d7
features: Basic-Auth GSSAPI Kerberos SPNEGO

Server https://ip-10-0-0-14.ec2.internal:8443
openshift v3.6.1+008f2d5
kubernetes v1.6.1+5115d708d7

我有一个主节点和两个节点。 如何将服务公开给 aws public ip?我可以在内部访问服务:

links http://blogroute-project-a.router.default.svc.cluster.local

如何将其公开给公共 ip?是否可以在 openshfit Web 控制台中完成? 我曾尝试关注https://docs.openshift.com/container-platform/3.4/dev_guide/expose_service/expose_internal_ip_service.html,但失败了。

在命令中:

oc patch svc blog -p '{"spec":{"externalIPs":["what ip?"]}}'

doc 说明了 ifconfig 中可见的 ip,(但它不是 aws 公共 ip)。 我应该使用哪个 ip,aws 公共 ip 还是来自 aws 本地网络的私有 ip(例如 10-0-0-14)?

我应该使用主节点的ip吗?还是工人?如果我有两个工作节点,我应该写他们两个的 ips 吗?

目前有以下路线:

[centos@ip-10-0-0-14 ~]$ oc get routes
NAME             HOST/PORT                                                   PATH      SERVICES         PORT       TERMINATION   WILDCARD
blog             blog-project-a.router.default.svc.cluster.local                       blog             8080-tcp                 None
blog-django-py   blog-django-py-project-a.router.default.svc.cluster.local             blog-django-py   8080-tcp                 None
blog2            ec2-3-90-171-97.compute-1.amazonaws.com                     /blog2    blog             8080-tcp                 None
blogroute        blogroute-project-a.router.default.svc.cluster.local                  blog             8080-tcp                 None

以下服务:

[centos@ip-10-0-0-14 ~]$ oc get svc
NAME             CLUSTER-IP      EXTERNAL-IP   PORT(S)    AGE
blog             172.30.111.64   3.90.171.97   8080/TCP   5d
blog-django-py   172.30.184.15   <none>        8080/TCP   5d

【问题讨论】:

  • 它是 HTTP 服务吗?您是否使用oc expose svc 创建了一条路线以查看是否可行?您是否有指向 OpenShift 集群路由器端口的公共 DNS 通配符主机记录,以便您可以访问路由中生成的主机名?
  • Graham,感谢您的评论,是的,它是 http 服务。我什至可以从 3 个带有链接文本浏览器的 aws centos vm 中的任何一个访问它。关于您评论中的第三句话:OMG ... :) 1)如果我有一个公共 DNS Wild...,我该如何检查它?我使用aws ec2。我没有自己设置任何额外的 DNS。 Openshift 已经自行安装了。问题可能就在这里。你能指出一些关于它的文档或教程吗? 2) 默认生成的主机名是 blogroute-project-a.router.default.svc.cluster.local - 它不是公共名称。我应该将主机名设置为什么主机名/IP?到主节点的公共 ip/aws 主机名?
  • blogroute-project-a.router.default.svc.cluster.local 是服务主机名,不是生成的路由名。您首先使用什么说明来设置此集群。如果你运行oc get routes,它会显示什么吗?
  • @Graham,我在描述中添加了当前路线和服务。这个集群是在 openshift webconsole 中创建的,一个应用程序被部署为镜像的源,一个作为来自 dockerhub 的 docker 镜像。我正在向learn.openshift.com/introduction学习
  • 您的集群设置不正确。暴露的路由不应该使用router.default.svc.cluster.local

标签: amazon-web-services kubernetes openshift kubernetes-ingress


【解决方案1】:

您可以通过使用公共 IP 创建负载平衡器并将其指向端口 80 上的所有节点(haproxy 正在侦听端口 80)来做到这一点。然后您必须创建一个通配符 DNS,例如 *.apps.yourdomain.com,并将其指向您创建的负载均衡器。

之后,您必须在 OpenShift 集群中配置您的域,请参阅 https://docs.openshift.com/container-platform/3.6/install_config/install/advanced_install.html#configuring-cluster-variables

然后你可以公开你的服务并创建一个路由,例如blog.apps.yourdomain.com

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-01-03
    • 2018-10-29
    • 2017-01-01
    • 2017-10-09
    • 1970-01-01
    • 2018-07-29
    • 1970-01-01
    相关资源
    最近更新 更多