使用 Angular http 客户端和 Flask 进行 Kubernetes 微服务开发不起作用

问题描述

我遇到了一个问题,我没有更多想法该怎么做。我想在带有 kubernetes 的 Linode 上设置一个基于微服务的应用程序。 我已经在那里部署了一个 Angluar 应用程序(在同一个集群和同一个节点上运行),它工作正常,从这个 angular 应用程序我想通过 angular http 客户端向 python 烧瓶应用程序发送请求。

我的微服务 (flask) yaml 文件如下所示:

    apiVersion: apps/v1
kind: Deployment
Metadata:
  name: backend
spec:
  replicas: 1
  selector:
    matchLabels:
      app: backend
  template: 
    Metadata:
      labels:
        app: backend
    spec:
      containers:
      - name: backend
        image: imageName (unfortunately,I am not allowed to show the real image name,sorry)
        ports:
        - containerPort: 5000

---

apiVersion: v1
kind: Service
Metadata:
  name: backend-service
spec:
  selector:
    app: backend
  ports:
  - protocol: TCP
    port: 5000
    targetPort: 5000

在 Angular 中,我使用 Angular httpClient 向这个 url 发送请求:

    export const environment = {
  production: true,backendUrl: 'http://backend-service'
};

我也已经尝试使用 Linode 中给出的 IP 地址。请求未到达flask 应用程序。一切看起来都是这样,没有任何变化(我在调试模式下使用 Flask 进行监控):

 Serving Flask app "app.py"
 * Environment: production
   WARNING: This is a development server. Do not use it in a production deployment.
   Use a production Wsgi server instead.
 * Debug mode: off
 * Running on http://0.0.0.0:5000/ (Press CTRL+C to quit)

我的入口是:

apiVersion: networking.k8s.io/v1
kind: Ingress
Metadata:
  name: app-ingress
spec:
  rules:
    - host: Linode host url
      http:
        paths:
          - path: /
            pathType: Prefix
            backend:
              service:
                name: angular-app-service
                port:
                  number: 80
          - path: /backend-service
            pathType: Prefix
            backend:
              service:
                name: backend-service
                port:
                  number: 5000

我不知道我的错误是什么。当我在系统上的容器中运行应用程序时,一切正常。我确定这是一个愚蠢的错误,但我现在无法识别。如果这个问题已经被问过很多次了,很抱歉,直到现在我才找到解决方案。非常感谢。

解决方法

您需要进行 ingress 设置。这将允许从 Angular 应用进入集群的外部流量到达后端。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...