Related to #25
We should also generate the Envoy Gateway CRDs to load the desired extensions, instead of just raw Envoy config.
In order to implement this, we may need to add support for more extensions to the EnvoyExtensionPolicy because right now it only supports lua, wasm and extProc.
We should also debate if this should be in this project or we could even add such a feature to the Envoy Gateway project. Its CLI could actually embed the built-on-envoy CLI to provide a low-friction experience to current EG users.
Another option would be to have our custom CRDs in this project and the corresponding controller that could be installed on top of EG (like we do in EAIGW). The CRD could be something like:
apiVersion: extension.tetratelabs.io/v1alpha1
kind: RemoteExtension
metadata:
name: my-custom-extension
namespace: default
spec:
name: my-custom-extension
version: 1.0.0
priority: 1
config: |
(...)
targetRef:
group: gateway.networking.k8s.io
kind: Gateway
name: eg
namespace: default
The controller could read this CRD, download the extension as needed, and configure the gateways to execute it. It could take care of mutating the pods if files need to be mounted, etc, etc. Ideally, we should not be using the Extension Server, as EAIGW already uses it, and EG can have only 1 defined, so we need to figure out if it is feasible for the controller to, for example, generate EnvoyPatchPolicies based on these CRDS (I believe it should be feasible?).
We can have this CRD and controller live on this repository, and contribute to EG upstream later, as it is not feasible to have this merged in EG for the launch date.
Related to #25
We should also generate the Envoy Gateway CRDs to load the desired extensions, instead of just raw Envoy config.
In order to implement this, we may need to add support for more extensions to the EnvoyExtensionPolicy because right now it only supports
lua,wasmandextProc.We should also debate if this should be in this project or we could even add such a feature to the Envoy Gateway project. Its CLI could actually embed the
built-on-envoyCLI to provide a low-friction experience to current EG users.Another option would be to have our custom CRDs in this project and the corresponding controller that could be installed on top of EG (like we do in EAIGW). The CRD could be something like:
The controller could read this CRD, download the extension as needed, and configure the gateways to execute it. It could take care of mutating the pods if files need to be mounted, etc, etc. Ideally, we should not be using the Extension Server, as EAIGW already uses it, and EG can have only 1 defined, so we need to figure out if it is feasible for the controller to, for example, generate
EnvoyPatchPoliciesbased on these CRDS (I believe it should be feasible?).We can have this CRD and controller live on this repository, and contribute to EG upstream later, as it is not feasible to have this merged in EG for the launch date.