Skip to content

Repository files navigation

Radiant

Photo by Jakub Novacek on Pexels

Radiant

Radiant is a GRPC proxy service using Caddy.

Radiant uses a datastore to store server info. By default, there is a simple in-memory datastore. You can implement whatever you want to integrate with external systems.

Building

Uses dep for dependencies.

  • make

To just build binaries:

  • make binaries

Usage

To start the server, run:

$> radiant

Or via code:

// create configcfg:=&radiant.Config{
GRPCAddr: "unix:///run/radiant.sock",
HTTPPort: 80,
HTTPSPort: 443,
Debug: true,
}
// instantiate a datastorememDs:=memory.NewMemory()
// create the serversrv, _:=server.NewServer(cfg, memDs)
// run the server_=srv.Run()

This will start both the proxy and GRPC servers.

There is a Go client available to assist in usage:

client, _:=radiant.NewClient("unix:///run/radiant.sock")
timeout:=time.Second*30upstreams:= []string{
"http://1.2.3.4",
"http://5.6.7.8",
}
opts:= []radiant.AddOpts{
radiant.WithUpstreams(upstreams...),
radiant.WithTimeouts(timeout),
radiant.WithTLS,
}
// add the server_=client.AddServer(host, opts...)
// reload the proxy to take effect_=client.Reload()
// remove the server_=client.RemoveServer(host)
// reload to take effect_=client.Reload()

It is safe to reload as often as you wish. There is zero downtime for the reload operation.

There is also a CLI that can be used directly or as reference.

About

Programmable layer 7 proxy service built on GRPC and powered by Caddy

Resources

Stars

92 stars

Watchers

2 watching

Forks

Releases

Packages

Used by

Contributors

Languages