All Projects → dustin-decker → grpc-firewall-bypass

dustin-decker / grpc-firewall-bypass

Licence: Apache-2.0 license
initiate connections to gRPC servers that live behind a firewall (https://github.com/grpc/grpc-go/issues/484)

Programming Languages

go
31211 projects - #10 most used programming language

Projects that are alternatives of or similar to grpc-firewall-bypass

Homo
An open source natural interaction system based on offline wake-up, natural language understanding and sentiment analysis
Stars: ✭ 233 (+339.62%)
Mutual labels:  grpc
Go Grpc Http Rest Microservice Tutorial
Source code for tutorial "How to develop Go gRPC microservice with HTTP/REST endpoint, middleware, Kubernetes deployment, etc."
Stars: ✭ 250 (+371.7%)
Mutual labels:  grpc
qtprotobuf
Protobuf generator and bindings for Qt framework
Stars: ✭ 138 (+160.38%)
Mutual labels:  grpc
Yivnet
Yivnet is a microservice game server base on go-kit
Stars: ✭ 237 (+347.17%)
Mutual labels:  grpc
Grpc Swagger
Debugging gRPC application with swagger-ui.
Stars: ✭ 242 (+356.6%)
Mutual labels:  grpc
Devops
Study Guides for DevOps Proffessionals https://gofunct.github.io/devops/.
Stars: ✭ 254 (+379.25%)
Mutual labels:  grpc
Pike
Generate CRUD gRPC backends from single YAML description.
Stars: ✭ 222 (+318.87%)
Mutual labels:  grpc
FSharp.GrpcCodeGenerator
A protoc plugin to enable generation of F# code
Stars: ✭ 61 (+15.09%)
Mutual labels:  grpc
Netcorekit
💗 A crafted toolkit for building cloud-native apps on the .NET platform
Stars: ✭ 248 (+367.92%)
Mutual labels:  grpc
compatip
A simple tool to ensure compatibility between microservices
Stars: ✭ 13 (-75.47%)
Mutual labels:  grpc
Ttrpc
GRPC for low-memory environments
Stars: ✭ 236 (+345.28%)
Mutual labels:  grpc
Kuberesolver
Grpc Load Balancer with Kubernetes resolver
Stars: ✭ 241 (+354.72%)
Mutual labels:  grpc
Converge
A powerful and easy-to-use configuration management system.
Stars: ✭ 254 (+379.25%)
Mutual labels:  grpc
Tensorrt Laboratory
Explore the Capabilities of the TensorRT Platform
Stars: ✭ 236 (+345.28%)
Mutual labels:  grpc
protoc-plugin
A protoc compiler plugin for Clojure applications
Stars: ✭ 28 (-47.17%)
Mutual labels:  grpc
Anycable Go
Anycable Go WebSocket Server
Stars: ✭ 234 (+341.51%)
Mutual labels:  grpc
Gripmock
gRPC Mock Server
Stars: ✭ 248 (+367.92%)
Mutual labels:  grpc
rpc ts
Remote Procedure Calls in TypeScript made simple 🤞
Stars: ✭ 71 (+33.96%)
Mutual labels:  grpc
jobor
支持秒级分布式定时任务系统, A high performance distributed task scheduling system, Support multi protocol scheduling tasks
Stars: ✭ 52 (-1.89%)
Mutual labels:  grpc
neofs-api-go
NeoFS API Golang repository contains implementation of core NeoFS structures that can be used for integration with NeoFS.
Stars: ✭ 14 (-73.58%)
Mutual labels:  grpc

grpc-firewall-bypass

Example of connecting to gRPC servers that live behind a firewall.

The solution is to establish a TCP connection from the endpoint behind the firewall to a public endpoint, and then dial the gRPC server behind the firewall over that TCP connection from the publicly accessible endpoint.

Components

client

The client is the TCP client and gRPC server that lives behind the firwall.

The TCP client dials the publically accessable TCP server. Its gRPC server listens on that TCP connection.

server

The server is the TCP server and the gRPC client that lives on a publically accessable server.

The TCP server listens to incoming connections from the TCP clients behind the firwalls. Once there is an established incoming TCP connection, the gRPC client dials the the gRPC server that is listening on that connection.

Security

It is expected that you would use mutually authenticated TLS (mTLS) either on the TCP or gRPC layers.

Run it

Deps

dep ensure

Build

go build -o bin/client client/main.go
go build -o bin/server server/main.go

Run

./bin/server
./bin/client

Generate API code from proto definitions

The proto go code is already generated for you, but if you make changes to the proto definition, use this to generate new code:

protoc -I api/ \
    -I${GOPATH}/src \
    --go_out=plugins=grpc:api \
    api/api.proto
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].