kubernetes中服务的java应用程序中的服务器配置

kubernetes中服务的java应用程序中的服务器配置,java,service,kubernetes,minikube,Java,Service,Kubernetes,Minikube,我在一些java应用程序中遇到了一个关于配置设置的问题 我正在使用minikube版本:v0.21.0和mac版的docker 我对接了所有的应用程序,但应用程序之间的通信部分是困扰我的 由于我知道应用程序需要通过server.url选项(在application.propertiesfor java中)进行通信,所以我不确定如何使其工作 主应用程序还有一个angular前端,我必须在其中定义两个服务器java应用程序的url 我知道k8中的应用程序通过服务进行通信(使用虚拟IP),我为每个应用

我在一些java应用程序中遇到了一个关于配置设置的问题

我正在使用minikube版本:v0.21.0和mac版的docker

我对接了所有的应用程序,但应用程序之间的通信部分是困扰我的

由于我知道应用程序需要通过server.url选项(在application.propertiesfor java中)进行通信,所以我不确定如何使其工作

主应用程序还有一个angular前端,我必须在其中定义两个服务器java应用程序的url

我知道k8中的应用程序通过服务进行通信(使用虚拟IP),我为每个应用程序都这样做了

但是在前端应用程序中(config.js

所以,当我进入前端页面时,当我试图通过chrome控制台登录时,它试图转到,但它说找不到该应用程序?DNS解析程序似乎找不到名为的服务 app1?Is解析DNS(当我通过浏览器查看时),但它查找群集外部

如果我为我所有的应用程序制作了一个类似这样的服务:

apiVersion: v1
kind: Service
metadata:
  name: app1
  labels:
    app: app1
spec:
  selector:
    app: app1
  ports:
  - protocol: TCP
    port: 8080
    name: http
server.url=http://app1
我是否可以在java应用程序属性中写入url,如下所示:

apiVersion: v1
kind: Service
metadata:
  name: app1
  labels:
    app: app1
spec:
  selector:
    app: app1
  ports:
  - protocol: TCP
    port: 8080
    name: http
server.url=http://app1
我不确定我做错了什么,所以任何建议都会有帮助

Tnx,
Tom

您的angular应用程序是前端应用程序。这意味着代码将在用户的浏览器上执行。因此,从angular应用程序到java应用程序的请求来自Kubernetes集群之外

但是您创建了kubernetes
服务
,但没有指定
服务类型
,这将创建一种
集群
类型的
服务
。这种服务不允许来自集群外部的请求,比如来自前端应用程序的请求。 您需要一种方法来允许来自集群外部的流量。根据您的需要,有几种方法可以实现这一点。
NodePort
服务类型在静态端口的每个节点的IP上公开服务

假设您创建了以下
服务

apiVersion: v1
kind: Service
metadata:
  name: app1
  labels:
    app: app1
spec:
  type: NodePort
  selector:
    app: app1
  ports:
  - protocol: TCP
    targetPort: 80 # Port exposed by Pods behind the Service
    port: 8080 # Port used when connecting from inside the cluster
    nodePort: 30140 # Port used when connecting from outside the cluster
    name: http
这样,angular应用程序就可以向minikube ip发送请求,或者发送任何已分配为
节点端口的端口(本例中为30140)


除了
服务
之外,还有其他方法可以让流量进入集群,比如使用
入口
对象。

嗨,Fiunchino,我做了一个服务类型的NodePort,但为了调试,我删除了它-哇,谢谢你的建议。因此,不是使用app1\u服务器\u URL:“我应该使用app1\u服务器\u URL:”来让它工作?但是对于java应用程序之间的集群通信,像server.url=这样的配置应该也能正常工作(app1是另一个应用程序的服务)。如果您将服务从ClusterIP更改为NodePort,它将允许流量进入myminikubeIP:8080,但app1和app2之间的通信将保持正常工作。嗯,因为端口8080是pod的公开端口,而不是服务(NodePort),我仍然需要在服务配置中设置一个targetPort,然后在config.js文件中硬编码它…只是想在这里添加一个额外的点。据我所知,默认的NodePort范围是30000-32767。如果您想拥有不同的范围,您需要手动更改它。建议NodePort不应与其他系统服务端口冲突,这就是默认范围更高的原因。