Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Question: Possible to run Cilium proxy as standard Envoy proxy with Go extension? #47

Open
chris-giblin opened this issue May 18, 2021 · 2 comments

Comments

@chris-giblin
Copy link

Hi,
I am interested in using Go to extend Envoy. Envoy TinyGo/WASM would be nice but TinyGo is limited for our purposes.
Cilium proxy however supports extensions in real Go. We don't need BPF.

Can the Cilium proxy be run as a "normal" Envoy proxy, proxying TCP connections, with the Go extension?

@chris-giblin chris-giblin changed the title Question: Possible to run Cilium proxy as standard Envoy with Go extension Question: Possible to run Cilium proxy as standard Envoy proxy with Go extension? May 18, 2021
@aanm
Copy link
Member

aanm commented May 28, 2021

cc @jrajahalme

@jrajahalme
Copy link
Member

This answer is pretty late, but here we go: In short it is very difficult to run Cilium Go extensions for Envoy without Cilium. Cilium Go extensions for Envoy are designed to run as controlled by the Cilium Agent. Cilium agent ships a policy to the Go extensions that those extensions use to implement e.g., policy enforcement. Also the mapping of traffic on specific ports to specific parsers in the Go extensions is managed via this network policy controlled by Cilium agent. This means that in order to use the Cilium Go extensions you'd need to:

  • use the Cilium build of Envoy, including the CIlium filters and Go extensions interface
  • add your Go code to the proxylib directory in the Cilium repo
  • build Cilium, which will build a version of the proxylib shared library containing your Go code
  • use Cilium Agent to configure a network policy applicable to direct some ports to the go extensions
  • the network policy then redirects some traffic sent from a container (egress) or to a container (ingress) to your Go extension as configured

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants