首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >go-更好的例子-无法到达更好的api服务。

go-更好的例子-无法到达更好的api服务。
EN

Stack Overflow用户
提问于 2018-04-20 07:36:11
回答 1查看 1.5K关注 0票数 1

我正试图在Kubernetes https://github.com/micro/examples/tree/master/greeter上得到这个更好的例子。

我可以在码头办好这个。但是,当我试图通过Kubernetes (http://{{external-ip}}/greeter/say/hello)访问greeter api服务时,我会得到错误:{"id":"go.micro.api",“go.micro.api”:500,"detail":"not“,”status“:”内部服务器错误“}

为了排除故障,我简化了场景,我只想通过微api调用一个go-micro服务。下面是我的设置:

api.go

代码语言:javascript
复制
package main

import (
    "github.com/micro/go-micro"
    api "github.com/micro/micro/api/proto"
    "log"
    k8s "github.com/micro/kubernetes/go/micro"

    "context"
)

type Say struct {
}

//I just want to access this via the micro api on k8s via services external ip
func (s *Say) Hello(ctx context.Context, req *api.Request, rsp *api.Response) error {
    rsp.StatusCode = 200
    rsp.Body = "Hello"
    return nil
}

func main() {
    service := k8s.NewService(
        micro.Name("default.greeter-api"),
    )

    service.Init()

    service.Server().Handle(
        service.Server().NewHandler(
            &Say{},
        ),
    )

    if err := service.Run(); err != nil {
        log.Fatal(err)
    }
}

micro-api-deployment.yml

代码语言:javascript
复制
apiVersion: apps/v1
kind: Deployment
metadata:
  name: micro
spec:
  replicas: 1
  selector:
    matchLabels:
      app: micro
  template:
    metadata:
      labels:
        app: micro
    spec:
        containers:
        - name: micro
          image: microhq/micro:kubernetes
          args:
            - "api"
            - "--handler=rpc"
            - "--namespace=default"
          env:
          - name: MICRO_API_ADDRESS
            value: ":80"
          ports:
          - containerPort: 80
            name: api-port

micro-api-svc.yml

代码语言:javascript
复制
apiVersion: v1
kind: Service
metadata:
  name: micro
spec:
  type: LoadBalancer
  ports:
  - name: api-http
    port: 80
    targetPort: "api-port"
    protocol: TCP
  selector:
    app: micro

greet-deployment.yml

代码语言:javascript
复制
apiVersion: apps/v1beta1
kind: Deployment
metadata:
  name: greeter-api
spec:
  replicas: 1
  selector:
    matchLabels:
      app: greeter-api
  template:
    metadata:
      labels:
        app: greeter-api
    spec:
        containers:
        - name: greeter-api-service
          image: greeter-api:latest
          imagePullPolicy: Always
          command: [
            "./greet",
            "--selector=static",
            "--server_address=:8080",
          ]
          ports:
          - containerPort: 8080
            name: greet-port

greet-svc.yml

代码语言:javascript
复制
apiVersion: v1
kind: Service
metadata:
  name: greet
  labels:
    app: greet
spec:
  ports:
  - port: 8080
    protocol: TCP
  selector:
    app: greet
EN

回答 1

Stack Overflow用户

发布于 2018-04-20 15:50:41

你的倾诉一切都很好。

( http://{{external-ip}}/greeter/say/hello),我得到错误:{"id":"go.micro.api",“代码”:500,“详细”:“未找到”,“状态”:“内部服务器错误”}

您只忽略了请求中的端口号8080,并且尝试调用rpc服务而不是greeter-api

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49936464

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档