首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用kubernetes部署启用https的Spring服务

问使用kubernetes部署启用https的Spring服务
EN

Stack Overflow用户
提问于 2018-07-19 19:23:15
回答 1查看 4.4K关注 0票数 2

我开发了一个基于spring引导的REST服务,并通过使用自签名的cert (用于本地测试)启用了https,而且它运行良好。

代码语言:javascript
复制
server.ssl.key-store=classpath:certs/keystore.jks
server.ssl.key-store-password=keystore
server.ssl.key-store-type=PKCS12
server.ssl.key-alias=tomcat

现在,我想打包一个docker映像并将此服务部署到kubernetes集群中。我知道我可以将服务公开为NodePort并在外部访问它。

我想知道的是,当部署在kubernetes集群中时,我怀疑在本地机器中生成的自我签名证书是否能够工作。我研究并找到了几种使用kubernetes入口、kubernetes秘密等的解决方案。我不知道如何才能这样做,这样我就可以通过https访问在kubernetes中运行的服务。我需要对REST代码做什么更改?

更新备注:虽然我已经使用了自签名证书用于测试目的,但我可以从我的公司获得一个CA签名证书并用于生产。我的问题更多的是,对于已经使用基于SSL/TLS连接的REST服务,在kubernetes集群中部署和访问cert的一些更好的方法是什么,例如:应用程序本身中的包、使用机密,或者放弃应用程序的SSL配置并使用Ingres等等。希望我的问题是有意义的:)

谢谢你的建议。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-07-20 07:48:41

这取决于你想公开你的服务的方式。基本上,您可以使用入口、外部负载均衡器(仅在某些云环境中可用)或将服务路由到端口(通过NodePort或HostPort)作为选项。

注意:我们的K8S集群是自我托管的,因此我没有关于K8S中外部负载平衡器的可靠信息,因此将省略该选项。

如果您想直接在端口80 (例如https://app.myorg.org)的某个域后面公开您的服务,那么您将需要使用入口。但是,如果您不需要这样做,并且您可以使用特定的端口,那么NodePort方法应该能做到这一点(例如,https://one.ofyourcluster.servers:30000/)。

让我们假设您希望尝试导入方法,而不是需要将证书添加到K8S中的入口定义中,而不是春季引导应用程序中,或者必须另外指定服务可以通过入口中的https本身到达。这样做的方式可能不同于入口控制器和入口控制器。

对于NodePort/HostPort,只需在应用程序中启用SSL即可。

尽管如此,您还需要一个有效的证书,例如,由https://letsencrypt.org/为K8S实际颁发的证书,如果您要使用积件,有些项目可以自动获取一个letsencrypt证书。(例如https://github.com/jetstack/cert-manager/)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51430395

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档