我创建了一个示例spring boot应用程序,它在localhost:8080 / ws中公开websocket端点。 基本上我遵循这个guide,除了我没有使用.withSockJS选项。
当我在本地运行此应用程序时,我的示例角应用程序可以连接到websocket。
现在我想在一个Kubernetes pod中安装两个容器(spring boot app和angular app)。 当我跑它们时它们都会旋转。然后我暴露了角形前端的端口,以便能够查看应用程序。但是日志告诉我它无法通过ws:// localhost:8080 / ws连接到websocket后端
即使我连接到后端容器,我也可以看到它已启动并运行,但我的curl websocket测试也总是失败。
这是我的pod def:
---
apiVersion: v1
kind: Pod
metadata:
name: my-app.example.org
labels:
app: my-app-system
spec:
containers:
- name: backend
image: test/my-app-backend
ports:
- containerPort: 8080
env:
- name: SPRING_PROFILES_ACTIVE
value: "dev-docker-postgres"
- name: JAVA_OPTIONS
value: "-agentlib:jdwp=transport=dt_socket,address=5005,server=y,suspend=n"
- name: frontend
image: test/my-app-frontend
ports:
- containerPort: 4200
imagePullPolicy: Always
command: ["/bin/sh"]
args: ["-c", "npm run kubstart"]
imagePullSecrets:
- name: registrykey
还有一件事:
当我通过NodePort类型另外暴露后端容器的端口,并使用服务的url在我的机器上本地启动角度应用程序时,websocket连接成功。
我似乎无法让我的pod中的两个容器通过ws://
相互通信答案 0 :(得分:0)
没关系...... 对于cource,这不能通过localhost工作。 我需要暴露后端的端口并从“外部”访问websocket