我在Openshift容器上设置MySQL服务,但我无法从其他服务访问它。
根据文档(https://docs.openshift.com/online/dev_guide/environment_variables.html#automatically-added-environment-variables),在创建服务时,X_SERVICE_HOST
和X__SERVICE_PORT
环境vbles会填充到其他服务中,但我似乎无法看到能够从我的Java服务访问它们(使用${MYSQL_SERVICE_HOST}
文件上的.properties
占位符。
以前我能够使用服务定义上的Cluster IP
值连接到MySQL数据库,但它也不起作用,我试图在我的Java服务上导入mysql机密,这是应该导入env变量,如username,pwd等,但它不会导入主机名和端口。
正如在这个帖子(https://github.com/openshift/origin/issues/10401)中所说的那样,我试图创建一个名为MYSQL
的MySQL服务,但是由于上层大小而失败了。
我应该如何将环境传播到其他服务?
谢谢。
编辑:问题终于解决了,MySQL URL连接格式错误,在我修复了正确传播的vbles后,它在某处包含了一个额外的/
。
答案 0 :(得分:1)
订购可能是这里的问题。我相信该服务需要在任何部署配置,复制控制器等之前创建,并将它们作为env vars使用。
答案 1 :(得分:1)
这些环境变量仅存在于服务清单选择的pod上。例如,如果服务清单选择器与pod标签匹配,则只有那些pod将具有环境变量。其他pod不会看到这些环境变量。
从你的java应用程序中简单地引用mysql服务名称和它暴露的端口,你应该好好去。但请确保您的Java客户端和mysql位于相同的命名空间/项目中。
答案 2 :(得分:0)
问题终于解决了,MySQL URL连接格式错误,并且在我修复了正确传播的vbles后,它包含了一个额外/某处。