如果我想从公司的任何地方访问 openshift 主服务器的 REST API,我可以使用 https://master.test04.otc-test.company.com:8443
,它的工作原理如下很好。
现在我正在编写一个管理应用程序,该应用程序正在访问 REST API 并部署在这个 openshift 集群中。 openshift中是否有通用名称或环境变量来获取主服务器的主机名?
背景:我的管理应用程序将部署在多个不具有相同 URL 的 openshift 集群上。让它们自动发现当前主服务器的主机名而不是为每个部署配置此值将非常方便。
最佳答案
使用环境变量:
https://$KUBERNETES_SERVICE_HOST:$KUBERNETES_SERVICE_PORT
在容器中,除非未挂载服务帐户详细信息,否则还可以访问目录:
/var/run/secrets/kubernetes.io/serviceaccount
在此您可以找到一个 token
文件,其中包含容器运行所用的服务帐户的访问 token 。这意味着您可以为该项目中的应用程序创建一个单独的服务帐户,并使用 RBAC 来控制它通过 REST API 可以执行的操作。
同一目录还有一个命名空间
文件,以便您知道容器正在哪个项目中运行,以及通过安全连接访问 REST API 时要使用的带有证书的文件。
这是推荐的方法,而不是尝试通过其配置将访问 token 传递给您的应用程序。
请注意,在 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 中不起作用。
关于rest - 用于内部访问的 openshift 主服务器的主机名是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56643241/