当前位置: 首页 > 知识库问答 >
问题:

在kubernetes中部署启用https的Spring Boot Rest服务

曾晨
2023-03-14

我已经开发了一个基于spring boot的REST API服务,并通过使用自签名证书密钥库(在本地测试)在其上启用了https,它工作得很好。

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集群中部署这个服务。我知道我可以将服务公开为节点端口并从外部访问它。

共有1个答案

仲孙献
2023-03-14

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

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

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

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

 类似资料:
  • 请使用 Apache 2.4 版本。 通过 OpenSSL 生成 SSL 数字认证 免费 Self-Signed SSL 数字认证用户请看. 如果你是 SSL 付费认证用户可跳过此步. openssl genrsa -out privkey.pem 2048 openssl req -new -x509 -key privkey.pem -out cacert.pem -days 1095 在 S

  • 在 Seahub 端启用 https 免费 Self-Signed SSL 数字认证用户请看. 如果你是 SSL 付费认证用户可跳过此步. 通过 OpenSSL 生成 SSL 数字认证 openssl genrsa -out privkey.pem 2048 openssl req -new -x509 -key privkey.pem -out cacert.pem -days 1095 修改

  • 我有3个节点在kubernetes集群。我创建了一个守护进程集,并将其部署在所有3个设备中。这个守护进程集创建了3个Pod,它们正在成功运行。但是由于某些原因,其中一个吊舱失败了。 我需要知道如何在不影响守护程序集中的其他pod的情况下重新启动这个pod,也不创建任何其他守护程序集部署? 谢啦

  • 具有TLS配置的典型入口如下所示: 发现GLBC正在讨论为GCE入口启用HTTPS后端。文件摘录: 后端HTTPS 对于负载均衡器和Kubernetes服务之间的加密通信,您需要将服务的端口装饰为预期的HTTPS。有一个alpha服务注释用于指定每个服务端口的预期协议。当将协议视为HTTPS时,入口控制器将使用带有HTTPS健康检查的HTTPS后端服务组装GCP L7负载均衡器。“ 不清楚负载均衡

  • 理论上只要可以使用主机名做服务注册的应用都可以迁移到 kubernetes 集群上。看到这里你可能不禁要问,为什么使用 IP 地址做服务注册发现的应用不适合迁移到 kubernetes 集群?因为这样的应用不适合自动故障恢复,因为目前 kubernetes 中不支持固定 Pod 的 IP 地址,当 Pod 故障后自动转移到其他 Node 的时候该 Pod 的 IP 地址也随之变化。 将传统应用迁移