Containerd recently added support for TTRPC plugins: containerd/containerd@a8a805c
This should allow us to replace the GRPC FCControl plugin with a TTRPC-based plugin, which in turn would allow us to no longer generate service definitions for both GRPC and TTRPC, instead using purely TTRPC. There may also be some performance benefits to the switch.
At the moment, the TTRPC support doesn't appear to be in tagged release and has a few rough edges, but a quick trial of switching the FCControl plugin to use TTRPC showed it to basically work.
Some of the rough edges we'd probably want to be addressed (perhaps through upstream contributions) before doing this switch:
- The TTRPC address appears to be hardcoded in containerd code to be
<containerd grpc address>.ttrpc. Ideally, this should be something clients can be told about rather than require them to also hardcode +".ttrpc".
- You can create a GRPC client by just doing
containerd.New(containerdAddress), but there doesn't appear to be an equivalent method for TTRPC, so you have to do the net.Dial yourself. Ideally, there should be a containerd.NewTTRPC(address) or something.
Containerd recently added support for TTRPC plugins: containerd/containerd@a8a805c
This should allow us to replace the GRPC FCControl plugin with a TTRPC-based plugin, which in turn would allow us to no longer generate service definitions for both GRPC and TTRPC, instead using purely TTRPC. There may also be some performance benefits to the switch.
At the moment, the TTRPC support doesn't appear to be in tagged release and has a few rough edges, but a quick trial of switching the FCControl plugin to use TTRPC showed it to basically work.
Some of the rough edges we'd probably want to be addressed (perhaps through upstream contributions) before doing this switch:
<containerd grpc address>.ttrpc. Ideally, this should be something clients can be told about rather than require them to also hardcode+".ttrpc".containerd.New(containerdAddress), but there doesn't appear to be an equivalent method for TTRPC, so you have to do thenet.Dialyourself. Ideally, there should be acontainerd.NewTTRPC(address)or something.