我们的团队决定尝试使用 OpenShift Origin 服务器来部署服务。 我们有一个单独的虚拟机,安装了 OpenShift Origin 服务器并且运行良好。我能够部署我们的本地 docker 镜像,并且这些服务也运行良好 - Pod 已启动并运行,获得它们自己的 IP,我可以从 VM 访问服务端点。
问题是我无法让它工作,所以服务暴露在机器之外。我阅读了有关路由器的信息,它被认为是公开服务的正确方式,但它不起作用,现在是一些细节。
假设我的虚拟机是 10.48.1.1。带有我的一项服务的带有 docker 容器的 Pod 在 IP 172.30.67.15 上运行:
~$ oc get svc
NAME CLUSTER-IP EXTERNAL-IP PORT(S) AGE
my-svc 172.30.67.15 <none> 8182/TCP 4h
该服务是一个简单的 Spring Boot 应用程序,在端口 8182 上公开了 REST 端点。 当我从托管它的 VM 调用它时,它工作得很好:
$ curl -H "Content-Type: application/json" http://172.30.67.15:8182/home
{"valid":true}
现在我想把它暴露在外面,所以我创建了一个路由器: oc adm router my-svc --ports='8182'
我按照 OpenShift dev doc 中的步骤操作来自 CLI 和控制台 UI。路由器创建得很好,但是当我想检查它的状态时,我得到了这个:
$ oc status
In project sample on server https://10.48.3.161:8443
...
Errors:
* route/my-svc is routing traffic to svc/my-svc, but either the administrator has not installed a router or the router is not selecting this route.
关于此错误,我找不到任何可以帮助我解决问题的信息 - 有人遇到过类似问题吗?是否有任何其他(更好/合适的?)公开服务端点的方式?我是 OpenShift 的新手,所以我会提出任何建议。
最佳答案
如果有人感兴趣,我终于找到了“解决方案”。 问题是没有创建“路由器”服务 - 我不知道必须创建它。
一步一步,为了创建这个服务,我按照 OpenShift doc page 中的说明进行操作这很简单,但我无法使用管理员帐户登录。 我使用默认管理员帐户
$ oc login -u system:admin
但不是使用可用的证书,它一直要求我输入密码,但它不应该。什么问题?我的环境变量被重置了,我不得不重新设置它们
$ export KUBECONFIG="$(pwd)"/openshift.local.config/master/admin.kubeconfig
$ export CURL_CA_BUNDLE="$(pwd)"/openshift.local.config/master/ca.crt
$ sudo chmod +r "$(pwd)"/openshift.local.config/master/admin.kubeconfig
这是 OpenShift 文档中描述的首要步骤之一 OpenShift docs .之后证书设置正确并且登录按预期工作。作为管理员,我创建了路由器服务(第一个链接)并且路由开始工作 - 没有更多错误。 所以最后它变得非常简单和虚拟,但鉴于我没有使用 OpenShift 的经验,我很难找出发生了什么。希望对遇到同样问题的人有所帮助。
关于openshift-origin - 在 OpenShift Origin Server 中公开服务 - 路由器不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42250967/