我们的团队决定尝试使用OpenShift Origin服务器来部署服务。 我们有一个安装了OpenShift Origin服务器的单独虚拟机,工作正常。我能够部署我们的本地docker镜像,并且这些服务也运行正常 - Pod已启动并运行,获取自己的IP,我可以从VM访问服务端点。
问题是我无法使其正常工作,因此服务会暴露在机器外部。我读到了关于路由器的问题,这些路由器被认为是暴露服务的正确方式,但它现在已经无法工作,现在还有一些细节。
假设我的VM是10.48.1.1。带有我的服务之一的Dock with docker容器正在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 =&#39; 8182&#39;
我按照CLI和Console UI中的OpenShift dev doc步骤进行操作。路由器被创建得很好,但是当我想检查它的状态时,我得到了这个:
$ 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的新手,所以任何建议都会被证实。
答案 0 :(得分:2)
如果有人有兴趣,我终于找到了&#34;解决方案&#34;。 问题是没有&#34;路由器&#34;服务创建 - 我不知道它必须被创建。
一步一步,为了创建此服务,我按照OpenShift doc page的说明进行操作,这非常简单,但我无法使用管理员帐户登录。 我使用默认管理员帐户
$ oc login -u system:admin
但是使用可用的证书,它一直在问我密码,但它不应该。哪里错了?我的env变量被重置了,我不得不重新设置它们
$ 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 docs OpenShift docs中描述的第一步。之后,证书设置正确,登录按预期工作。作为管理员,我创建了路由器服务(第一个链接)并且路由开始工作 - 没有更多错误。 所以最后它变得非常简单和虚拟,但鉴于我没有使用OpenShift的经验,我很难找到正在发生的事情。希望如果有人遇到同样的问题会有所帮助。