Building Istio with Custom Envoy Image

Hi everyone,

We are having some difficulties building a custom images with envoy proxy for istio for a research project.
I’m having some difficulties with building and deploying istio with a customized version of envoy.
How exactly does one configure the sidecar-injector and proxy images to use a custom envoy binary?

Thanks in advance.

3 Likes

Hello,
After a bit of work, I was able to do this by:

  1. editing the istio proxy repo to include the envoy filter I wanted to add.*
  2. Building the repo inside the envoyproxy/envoy docker image.
  3. Copying the resulting envoy binary out, and dropping it into the /usr/local/bin/envoy of the istio proxyv2 image, found at this dockerfile: https://github.com/istio/istio/blob/085e01c8e4dfd165fce77af8df3e56882f69210b/pilot/docker/Dockerfile.proxyv2

To deploy the istio bookinfo app with your custom envoy:

  1. Turn off auto sidecar injection.
  2. Run istioctl kube-inject samples/bookinfo/platform/kube/bookinfo.yaml > out.yaml
  3. Edit out.yaml by replacing every occurrence of docker.io/istio/proxyv2:X.X.X with the name of the image you created in the previous section. Also, replace imagePullPolicy: Always to imagePullPolicy: IfNotPresent throughout the file.
  4. Run kubectl apply -f out.yaml

You should now have your filter running.

* you need to specifically edit the istio-proxy repo because istio has written some custom filters without which istio doesn’t work.