ngrokでgRPC接続を受ける
概要
まんまtcp扱いでいけた。tls endpointとしても動作してくれる。
無料アカウントでtcp reservedを使わないと毎回ポートが変わるが、それはそれでセキュアでいいな。
実際
難しかったのはngrokのgo sdk 2.0の使い方で、ローカルで動くgRPCサーバの8080番に対して、
ngrokでtcpを受け付ける接続を立てるには以下の感じだった。
// ngrokのセットアップ
authToken := os.Getenv("NGROK_AUTHTOKEN")
// ngrokの接続を行う
l, err := ngrok.Forward(
context.Background(),
ngrok.WithUpstream("tcp://localhost:8080"),
ngrok.WithURL("tcp://"),
)
前提としてngrokのagentがインストールしてあり、環境にNGROK_AUTHTOKENがセットされている必要がある。