当前位置: 首页 > 知识库问答 >
问题:

向aws公共ip公开openshift服务

阚亮
2023-03-14

我正在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公共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补丁svc blog-p‘{“spec”:{“externalips”:[“什么IP?”]}}’

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

我应该使用主节点的ip吗?还是工人?如果我有两个工作节点,我是否应该同时写这两个节点的IP?

目前有以下路由:

[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

共有1个答案

韦宏朗
2023-03-14

您可以通过创建一个具有公共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

 类似资料:
  • 我可以对我的AWS EC2实例使用SSH ok。Grizzly已经安装并启动。 我无法通过浏览器从本地计算机连接到EC2公共IPhttp://publicip:8080/索引。我有一个安全组,允许传入访问HTTP端口8080,允许所有传出。我还尝试允许ICMP进行ping,但我也无法ping。我删除了所有安全组限制,但这也不起作用。我检查了iptables,没有任何限制规则。 有什么想法吗? 谢谢

  • 我在AWS中有一个公共子网,我在其中有3个实例。。。 WebApp01 (例如弹性 IP - 54.23.61.239) WebApp02 (私有 IP - 192.168.0.24) 虚拟应用程序03 (私有 IP - 192.168.0.25) 我的路由表设置为192.168.0.0/16 - 我可以看到拥有公共IP的实例可以访问互联网,但没有公共IP的实例无法访问互联网。 如何让Intern

  • 我有一个场景,我必须在AWS ECS上部署多个微服务。我想让服务能够通过每个微服务中开发的API相互通信。我想把前端也部署在AWS ECS上,可以公开访问,也可以与其他部署在AWS ECS上的微服务通信。我怎样才能做到这一点呢?我是否可以使用AWS ECS服务发现,将所有服务都放在一个专用子网中,以启用每个服务之间的通信?我可以使用弹性负载均衡器使前端微服务仅通过HTTP/HTTPS协议在inte

  • 我有一个Angular应用程序,有一个API,它连接并调用一个在服务器上建立的数据库,该数据库具有一个公共IP。 第二,你有什么想法为什么会发生这种情况吗? 谢谢。

  • 我在EC2(Fedora)上运行了elasticsearch, 我无法使用公共IP或主机名进行外部连接。 ElasticSearch正确启动,我可以使用:curl-XGET在机器上本地访问http://localhost:9200 我确实遵循了这里解释的所有步骤:Ec2上的elasticsearch无法命中公共IP(超时) 喜欢 按照TJ在评论中说的做,重新启动实例。我不确定这是否有必要,但我做得

  • 我正在使用NodeJS和Express。js来运行我的项目。在本地应用程序预览模式下,一切正常。但每次预览时提供的丑陋、长且临时的预览链接并不适合我,我希望有人能够通过以下方式访问我的服务器: 我在这里遵循了指南: AWS Cloud9应用程序预览指南 并将弹性IP分配并关联到运行Cloud9 IDE的EC2实例,我将入站安全规则设置如下: 运行Cloud9 IDE的EC2实例的安全组的入站规则