How does someone modify the yaml that is baked into istioctl?

Hey Istio Folks,

This is likely my inexperience with go, but I’m having a heck of a time figuring out where to make edits to yaml so that I see my edits in a copy of istioctl that I built locally. I followed, and can now $ make istioctl-all and get an istioctl-linux build in out/linux_amd64/release. That’s all great.

Now, suppose I want to tackle a bug I reported: . Presumably I need to edit yaml somewhere and add a

accessLogFormat: {{ }}

line, but I have no idea where that somewhere is. Do I need a local copy of checked out? If so, where do I put that checkout, and how do I cause my local istioctl builder to build against my istio/installer checkout? Maybe I’m on an entirely wrong track?

Sorry for the n00b questions; I appreciate any help in advance!


Hi Taylor,
The easiest way to try out your change is to use the -f flag to point to an IstioControlPlane manifest that has installPackagePath set to the local file path to the charts where you’re making changes (
Then, when your changes are good, create a PR in istio/installer and they will eventually make it into istioctl when SHAs are updated.
We’re in the process of merging the installer and operator repos into istio/istio so the syncing process will be simplified soon.

Hey @ostromart - thanks for pointing me in the right direction. I ended up checking out istio/operator, istio/installer and istio/istio, testing changes in istio/operator, and then making a commit to istio/installer. Setup took a while, but when I got everything working it went well. Simplification of the dev process would definitely be nice. I appreciate the help!

For anyone else looking for an answer to this, here’s what I ended up doing:

  • Get go set up as you normally would.
  • Clone istio/istio, istio/installer, and istio/operator into $GOPATH/src/
  • Make whatever edits you need to
  • Set environment variable $INSTALLER_DIR to your checkout directory
  • Run
  • cd into and run go generate to generate a new assets.gen.go
  • Force your checkout to reference your local checkout by adding replace => ../operator to
  • Within run make clean && make istioctl-all. The resulting istioctl* binaries in out/linux_amd64/release/ will contain your YAML changes that you made to istio/installer. When deploying via istioctl, you may need to throw a --set or whatever onto your istioctl invocation to pull down images that actually exist.