簡體   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