Skip to content

Instantly share code, notes, and snippets.

@bretton
Last active August 11, 2024 15:20
Show Gist options
  • Save bretton/495707160c046eb29d0d4b447e5a5758 to your computer and use it in GitHub Desktop.
Save bretton/495707160c046eb29d0d4b447e5a5758 to your computer and use it in GitHub Desktop.
Why is Envoy Proxy broken on FreeBSD?

Why is Envoy broken on FreeBSD?

Docker-style containers are live on FreeBSD via FreeBSD Container Images by Doug Rabson, also available at container registry quay.io/dougrabson

If you want to see how several containers work together, get started with the micropod-sampler playbook to setup a small consul, nomad, traefik, minio and nginx environment using FreeBSD containers on FreeBSD

When you see it working, it makes sense to expand the micropod-sampler environment to include Envoy Proxy.

There is a tutorial Envoy Consul Service Discovery Service which covers the basic concept using consul and nomad and envoy. You can also review the Hashicorp tutorial Understanding Consul Connect.

This seems promising at first, as envoy is in ports at freshports envoy, however it is marked as broken build and has been for some time.

freshports envoy screenshot

There are some bug reports which mention the issue, such as 1 and 2, however the basic problems come down to a few things:

Envoy won't build with Openssl, needs BoringSSL

This appears to be a problem with the FreeBSD build process. While it might possible to hack your way around to building envoy with BoringSSL, it's not production-ready.

There is also the envoy-openssl fork, however this relies on Docker containers to do the building, and might need adaptation to do similar with FreeBSD containers. This is not yet in ports. Patches are sought.

Upstream dependency devel/libopentracing expired 2024-02-29

There is an upstream package dependency on devel/libopentracing which has no maintainer and expired on 2024-02-29.

Envoy port will expire 2024-08-31

Freshports notes EXPIRATION DATE: 2024-08-31

(WIP)

@bretton
Copy link
Author

bretton commented Aug 11, 2024

A work-around is to use nginx as reverse proxy, as sidecar, for example in k8s: Nginx Sidecar for TLS/SSL Termination on Kubernetes

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment