【问题标题】:Ingress for SpringBoot serviceSpring Boot 服务的入口
【发布时间】:2020-07-07 21:15:45
【问题描述】:

我正在使用 CoreOS Kubernetes 在 Vultr 公共云上运行。我正在配置一个入口控制器,以便可以访问我的后端 SpringBoot 服务。

我有一个 Spring Boot 服务“springboot”在端口 30123 上运行。

我从 Kubernetes 文档中获得了这个入口 yaml,并修改了我的服务:

ingress.yaml
------------
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: test-ingress
spec:
  backend:
    serviceName: springboot
    servicePort: 31922

kubectl 获取

名称主机地址端口年龄

测试入口 * 80 2m

curl mydns.com 连接被拒绝。

我不确定我是否理解它应该如何工作。

有人可以帮忙吗?

谢谢

【问题讨论】:

  • 您是否启动了 Ingress Controller?仅 Ingress 是不够的。它定义了哪些服务应该为哪些请求提供服务,但是您需要运行一个 Ingress Controller,该控制器读取该 Ingress 并运行一个代理服务器(例如 Nginx),该服务器实际上将请求转发到您的服务。参见例如github.com/kubernetes/ingress/tree/master/controllers/nginx
  • 我已经尝试了几个文档。我想知道是否有一些简单的示例仅显示带有配置域名的入口控制器的入口规则。
  • servicePort: 31922 看起来目标服务是 NodePort 类型,它应该是 ClusterIP 类型。我没有使用 Vultr 的经验,但我的想法是将云 LB 定向到 nginx 入口控制器。当这部分工作时,每个服务负责提供它自己的入口规则。入口控制器正在所有命名空间中侦听具有某些注释的服务(例如kubernetes.io/ingress.class: nginx)。当新服务启动时,入口控制器将自动更新其内部配置。

标签: kubernetes docker-ingress


【解决方案1】:

正如@slintes 所述,您是否添加了 IngressController ?您可以使用以下命令轻松添加一个(nginx 入口控制器):

kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/master/deploy/static/provider/cloud/deploy.yaml

顺便说一句,在您的问题中,您是说您在端口 30123 上有一个 Spring Boot 应用程序,但您的入口指向 31922 端口。正常吗?

希望对你有帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-08-16
    • 2020-10-17
    • 1970-01-01
    • 2016-04-24
    • 2019-04-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多