方法不存在:部署云端点

时间:2019-04-21 12:53:36

标签: google-cloud-endpoints google-kubernetes-engine

我的spring boot项目具有许多其他的API,要使用Cloud Endpoint进行部署,它会引发错误。应用程序在GKE中运行。

错误显示方法不存在。我已经提到了该问题,并且我没有使用默认的根路径来检查openapi.yaml中的状态

这是配置:

openapi.yaml

# [START swagger]
swagger: "2.0"
info:
  description: "SPR API"
  title: "SPR API"
  version: "1.0.0"
host: "spr-api.endpoints.spr-mza-dev.cloud.goog"
# [END swagger]
schemes:
- "http"
paths:
  "/statuscheck":
    get:
      description: "Returns Status code"
      operationId: "status"
      parameters:
        - name: name
          in: query
          description: "Status verification"
          required: true
          type: string
      #produces:
      #- "application/json"
      responses:
        200:
          description: "Status 200"

Deployment.yaml

apiVersion: v1
kind: Service
metadata:
  name: spr-api
spec:
  ports:
  - port: 80
    targetPort: 8081
    protocol: TCP
    name: http
  selector:
    app: spr-api
  type: LoadBalancer
---
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: spr-api
spec:
  replicas: 1
  template:
    metadata:
      labels:
        app: spr-api
    spec:
      containers:
      # [START esp]
      - name: esp
        image: gcr.io/endpoints-release/endpoints-runtime:1
        args: [
          "--http_port", "8081",
          "--backend", "127.0.0.1:8080",
          "--service", "spr-api.endpoints.spr-mza-dev.cloud.goog",
          "--rollout_strategy", "managed",
        ]
      # [END esp]
        ports:
          - containerPort: 8081
      - name: spr-api
        image: "gcr.io/spr-mza-dev/sprapis:latest"
        ports:
          - containerPort: 8080

到达端点时出现以下错误:

{
code: 5,
message: "Method does not exist.",
details: [
{
@type: "type.googleapis.com/google.rpc.DebugInfo",
stackEntries: [ ],
detail: "service_control"
}
]
}

感谢您的宝贵意见。

致谢。

2 个答案:

答案 0 :(得分:0)

获取404时,您的网址是什么?

您还可以提供已解析的服务配置吗?您可以通过CLI获取它

gcloud端点配置描述

答案 1 :(得分:0)

这可能是用于将API配置为端点的openapi.yaml与实际的spring-boot API代码之间的 missmatch

就我而言,我遇到了同样的问题,原因是在我的swagger文件(OpenAPI)中,我错过了 basePath 配置!我在GKE内运行的API代码期望以路径/api/v1开头的请求,但这没有映射到我的端点配置(swagger.yaml)中。

检查在终端控制台的 Method 列中显示的路径是否与运行GKE的应用程序内部配置的路径相同。在我的方法控制台中,仅显示/elements而不显示完整路径/api/v1/elements,然后在更新我的OpenAPI配置并添加BasePath后解决了该问题。

参考: