如果我想从公司的任何地方访问openshift主服务器的REST api,我可以使用https://master.test04.otc-test.company.com:8443
。
现在,我正在编写一个管理应用程序,该应用程序正在访问REST API,并已部署在此openshift集群中。 openshift中是否有通用名称或环境变量来获取主服务器的主机名?
背景:我的管理应用程序将部署在没有相同URL的多个openshift集群上。让它们自动发现当前主服务器的主机名而不是为每个部署配置该值将非常方便。
答案 0 :(得分:2)
使用环境变量:
https://$KUBERNETES_SERVICE_HOST:$KUBERNETES_SERVICE_PORT
在容器中,除非未安装服务帐户详细信息,否则您还可以访问目录:
/var/run/secrets/kubernetes.io/serviceaccount
然后您可以在其中找到一个token
文件,其中包含容器运行时所使用的服务帐户的访问令牌。这意味着您可以为该项目中的应用程序创建一个单独的服务帐户,然后使用RBAC通过REST API控制其功能。
同一目录中还有一个namespace
文件,因此您知道容器在哪个项目中运行,以及带有通过安全连接访问REST API时要使用的证书的文件。
这是推荐的方法,而不是尝试通过其配置将访问令牌传递给您的应用程序。
请注意,在OpenShift 4中,如果您需要访问OAuth服务器端点,则该端点位于与REST API不同的URL上。在3.X中,它们使用相同的URL。
在4.0中,您可以访问REST API URL上的路径/.well-known/oauth-authorization-server
,以获取有关单独的OAuth服务器端点的信息。
有关通过服务帐户授予REST API访问应用程序的其他信息,请参阅:
请注意,该页面当前显示您可以使用https://openshift.default.svc.cluster.local
作为URL,但这在OpenShift 4中不起作用。