美文网首页API网关Kong实践笔记
Kong[nginx]-21 配置Kong的grpc代理功能

Kong[nginx]-21 配置Kong的grpc代理功能

作者: 国服最坑开发 | 来源:发表于2019-09-18 09:49 被阅读0次

KONG专题目录


0x00 前言

本文内容包括:

  • 用go语言实现一个grpc的hello服务
  • 通过kong为grpc服务添加一个接口配置项
  • 命令行方式测试grpc接口服务

注意: 本文只记录了Kong相关的配置, Go相关内容没有过多详细介绍, 见谅.

0x01 Kong升级安装

nginx 1.3.10 以后版本官方支持grpc协议, 所以, 本文开始要使用的Kong版本为 1.3.0.
由于之前教程里一直使用的是1.2.x 版本, 这里记录一下升级过程.

# 查询可用版本
yum provides kong
# 安装 1.3.0 版本
yum install kong-1.3.0-1.x86_64

接下来, 第一次使用 kong restart 重启服务时, 会提示一些数据库格式不兼容的信息.
但只需要根据提示输入迁移数据库的指令即可完成.(具体指令忘记了记录 :)

再次 kong restart 完成升级

0x02 grpc 服务

go语言写grpc还是比较简单的(相比Java代码少了很多). 这里只记录一下用到的代码 ,具体实施过程 不是本文重点.

  • 定义一个proto
syntax = "proto3";

message HelloRequest {
    string greeting = 1;
}

message HelloResponse {
    string reply = 1;
}

service HelloService {
    rpc SayHello (HelloRequest) returns (HelloResponse) {
    }
}
  • 生成go代码
protoc --go_out=plugins=grpc:.  protos/order.proto
  • 编写服务端代码
package main

import (
    "fmt"
    "log"
    "net"

    "golang.org/x/net/context"
    "google.golang.org/grpc"
    "google.golang.org/grpc/reflection"
    order "grpc_demo/protos"
)

type Server struct{}

// SayHello (HelloRequest) returns (HelloResponse)
func (s *Server) SayHello(ctx context.Context, in *order.HelloRequest) (*order.HelloResponse, error) {
    return &order.HelloResponse{Reply: "Hello :" + in.Greeting}, nil
}

func main() {
    listener, e := net.Listen("tcp", ":50000")
    if e != nil {
        log.Fatalf("failed to listen : %v", e)
    }
    s := grpc.NewServer()
    order.RegisterHelloServiceServer(s, &Server{})

    reflection.Register(s)
    if e := s.Serve(listener); e != nil {
        log.Fatalf("failed to serve : %v", e)
    }

    fmt.Println("Server started ...")
}
  • 启动服务
go run server.go
目录结构

到此, 我们就有一个端口为50000的grpc服务.

0x03 配置Kong
  • 添加一个service

    Service
  • 为此service添加一个router

    Router

重点已经给出来了, 记得PathsProtocols这里输入好字符后, 要回车一下.


OK, Kong已经配置完成, 是不是很简单.

0x04 安装grpc命令行工具grpcurl
go get github.com/fullstorydev/grpcurl
go install github.com/fullstorydev/grpcurl/cmd/grpcurl
grpcurl
  • grpcurl 使用基础
    下图展示的是通过 grpcurl来查看服务的细节
  • 查看有哪些服务
    grpcurl -plaintext localhost:80 list
  • 查看服务有哪些方法
    grpcurl -plaintext localhost:80 list HelloService
  • 查看方法定义
    grpcurl -plaintext localhost:80 describe HelloService.SayHello
  • 查看参数定义
    grpcurl -plaintext localhost:80 describe HelloRequest
  • 构建参数, 发启调用
    grpcurl -d '{"greeting":"国服最坑开发"}' -plaintext localhost:80 HelloService.SayHello

grpcurl使用基础
0x05 验证接口
grpcurl -v -d '{"greeting":"world"}' -plaintext localhost:80 HelloService.SayHello
请求过程

完美!!!


KONG专题目录


相关文章

  • Kong[nginx]-21 配置Kong的grpc代理功能

    KONG专题目录 0x00 前言 本文内容包括:用go语言实现一个grpc的hello服务通过kong为grpc服...

  • kong-网络与防火墙

    端口 kong 通过多个链接实现不同的目录: 代理 管理api 集群 代理 kong通过nginx做前端代理处理流...

  • Kong反向代理UPSTREAM配置

    Kong 配置upstream负载均衡 今天的目标是配置upstream(反向代理),实现nginx的最基础负载均...

  • [转]从部署架构角度看Envoy

    Envoy:路由转发和反向代理功能。一般作为网关或者反向代理。代理转发功能类似的有:nginx、kong、envo...

  • Kong代理向导

    简介 在这篇文档中,我们会通过详细介绍Kong的路由功能和内部工作原理来涵盖其代理功能,Kong通过两个配置项对外...

  • Kong网络 & 防火墙向导

    简介 在本节中,用户可以找到Kong推荐的网络和防火墙配置 端口 Kong提供多个连接为了不同的功能需要 代理 a...

  • Kong自定义日志格式

    一、背景 Kong使用nginx作为运行时,因此把nginx的配置文件也进行了封装,当你在使用kong的时候,不需...

  • Kong配置项向导

    Kong配置文件 加载配置 Kong提供了一份默认配置文件,路径是 /etc/kong/kong.conf.def...

  • Kong 的Service和Route配置使用

    Kong的Service和Route实战 本文目标:实践Kong的service和route基础配置功能,实现简单...

  • Kong网关-初探

    1 Kong网关介绍 Kong是在Nginx的基础上构建的,更确切的说Kong是在Nginx中运行的Lua应用程序...

网友评论

    本文标题:Kong[nginx]-21 配置Kong的grpc代理功能

    本文链接:https://www.haomeiwen.com/subject/mdmhuctx.html