Skip to content

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

License

Notifications You must be signed in to change notification settings

stellarproject/radiant

Folders and files

NameName
Last commit message
Last commit date
Dec 5, 2018
Sep 20, 2018
Sep 14, 2018
Sep 20, 2018
Dec 5, 2018
Sep 16, 2018
Sep 20, 2018
Sep 14, 2018
Sep 20, 2018
Sep 20, 2018
Sep 14, 2018
Sep 20, 2018
Sep 14, 2018
Sep 20, 2018
Sep 20, 2018
Sep 20, 2018
Sep 20, 2018
Sep 23, 2018
Sep 23, 2018
Sep 20, 2018

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 config
cfg := &radiant.Config{
	GRPCAddr:  "unix:///run/radiant.sock",
	HTTPPort:  80,
	HTTPSPort: 443,
	Debug:     true,
}
// instantiate a datastore
memDs := memory.NewMemory()

// create the server
srv, _ := 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 * 30
upstreams := []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

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published