繁体   English   中英

Kubernetes:spring 云网关不工作

[英]Kubernetes: spring cloud gateway not working

我有一个 spring 云网关,可以在 docker 配置中正常工作,如下所示:(为便于阅读,除评级外的所有路由/服务都已删除)

@Value("${hosts.ratings}")
private String ratingsPath;

@Bean
public RouteLocator customRouteLocator(RouteLocatorBuilder builder) {
    return builder.routes()
        .route(r -> r.host("*").and().path("/api/ratings/**")
                .uri(ratingsPath + ":2226/api/ratings/"))
                ...other routes...
        .build();
}

这会从本地的 application.properties 和 docker 中的环境变量获取它的值,就像在 docker-compose 中一样:

  apigw:
    build: ./Api-Gateway
    container_name: apigw
    links:
      - ratings
      ...
    depends_on:
      - ratings
      ...
    ports:
      - "80:8080"
    environment:
      - hosts_ratings=http://ratings
      ...

这个配置工作得很好。 但是,当将此移植到我们的 kubernetes 集群时,所有路由都会得到 404。我们的 api 网关的部署如下:

apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    app: apigw
  name: apigw-deployment
spec:
  replicas: 1
  selector:
    matchLabels:
      app: apigw
  template:
    metadata:
      labels:
        app: apigw
    spec:
      containers:
      - name: apigw
        image: redacted
        ports:
        - containerPort: 8080
        env:
        - name: hosts_ratings
          value: "ratings-service.default.svc.cluster.local"
        ...

评级服务是我们的评级服务(这绝对有效,因为当直接从其服务中公开它时,它确实有效),定义如下:

apiVersion: v1
kind: Service
metadata: 
  name: ratings-service
  labels:
    app: ratings
spec:
  selector:
    app: ratings
  ports:
    - port: 2226
      targetPort: 2226

我们的 api 网关的服务如下,使用裸机和可以工作的外部 IP:

apiVersion: v1
kind: Service
metadata: 
  name: apigw-service
  labels:
    app: apigw
spec:
  selector:
    app: apigw
  ports:
    - port: 80
      targetPort: 8080
  externalIPs:
    - A.B.C.D

我认为它应该如何工作,是ratings-service.default.svc.cluster.local将被转换为正确的 ip,填写到ratingsPath变量,查询会成功,但事实并非如此。
我们的其他服务能够以相同的方式进行通信,但 api 网关似乎无法做到这一点。 可能是什么问题呢?

根据评论发布社区 wiki 以获得更好的可见性。 随意扩展它。


问题是图像的错误版本:

似乎我直接使用的服务不起作用。 一定是我使用的图像的错误版本。

还要检查:

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM