This document introduces Istio and provides information for potential contributors. It outlines the key components of Istio's architecture including Istiod, Proxy, Pilot, Citadel, and Galley. It describes Istio's pull request process and encourages contributions in areas like documentation, testing, and resolving issues. Suggested focus areas include helping with the upcoming 1.8 release testing and adding tests for documentation pages. Links are provided for setting up a development environment and finding more information.
2. Overview
Brian Avery is software engineer at
Red Hat, a lead of the product
security work group, and a lead of
the test and release work group.
Twitter: @briansvgs
Slack: Brian Avery
Neeraj Poddar is Co-founder & Chief
Architect at Aspen Mesh, a member of
the Istio Technical Oversight
Committee, and Steering Committee
Twitter: @nrjpoddar
Slack: Neeraj Poddar
3. Table of Contents
Deploying Istio
High Level Architecture
Developing Locally
Istio’s Pull Request Process
Potential Focus Areas
Links
4. Deploying Istio
To deploy Istio follow the docs here: https://istio.io/latest/docs/setup/getting-started/
We recommend Minikube or Kind for local development
5. High Level Architecture
More details here: https://istio.io/latest/docs/ops/deployment/architecture/
● Istiod (a combination of Pilot/Citadel/Galley)
● Proxy (Envoy + additions)
In previous versions, Istiod was broken up into individual components. The code still
follows this model.
● Pilot -- https://github.com/istio/istio/tree/master/pilot
● Citadel -- https://github.com/istio/istio/tree/master/security
● Galley -- https://github.com/istio/istio/tree/master/galley
● Proxy -- https://github.com/istio/proxy
● Envoy -- https://github.com/istio/envoy
All components except for Envoy are written in Go. Envoy is written in C++. WASM
supports Rust, C++, and Assembly Script although C++ is the most mature.
6. Istio’s Pull Request Process -- Getting Ready
● Sign the Istio CLA:
https://github.com/istio/community/blob/master/CONTRIBUTING.md#contribu
tor-license-agreements
● Fork the repository containing the code to modify:
https://docs.github.com/en/free-pro-team@latest/github/getting-started-with-
github/fork-a-repo
● Clone the forked repository using `git clone`
7. Istio’s Pull Request Process -- Making a
Change
● Create a branch for your changes based off of the `master` branch
● Run `make test` to run local tests. For docs changes, run `make lint` as well.
● If there are any user facing changes, add a release note:
https://github.com/istio/istio/tree/master/releasenotes
● Once the changes are ready, open a pull request. Depending on the area of the
code change, the appropriate workgroup will be selected as a reviewer from the
CODEOWNERS file
● Once this is complete, the Istio infrastructure will run a set of tests appropriate
for your pull request .
○ If you’re not a member of the community, an Istio member will have to give an `ok-to-
test`
● If all of your tests pass and your pull request gets approved, it will be
automatically merged.
8. Contributions
Istio welcomes contributions in various forms:
● Documentation
● Writing features/tests
● Answering questions on discuss: https://discuss.istio.io/ & slack
● Release testing
● Finding/Filing bugs
● Resolving issues
9. Looking for ideas? What about:
● An issue from with our help wanted label:
https://github.com/istio/istio/labels/community%2Fhelp%20wa
nted
● Our 1.8 release testing will be the week of October 21 and 28:
https://github.com/istio/istio/wiki/Istio-Release-1.8. Watch for
an announcement on discuss!
10. Or… Documentation tests
Info on writing tests can be found here: https://github.com/istio/istio.io/tree/master/tests
Documentation missing tests can be identified via the gray x next to “Page Test”:
11. Congrats on your first contribution &
Welcome to the Istio community!
12. Links
Setting up a development environment
● Mac: https://github.com/istio/istio/wiki/Preparing-for-Development-
Mac
● Linux: https://github.com/istio/istio/wiki/Preparing-for-Development
● Istio Contributor Guide:
https://github.com/istio/community/blob/master/CONTRIBUTING.m
d
● Development conventions:
https://github.com/istio/istio/wiki/Development-Conventions
● Documentation conventions: https://istio.io/latest/about/contribute/
● Istio Slack: https://slack.istio.io/
● Istio team drive access: https://groups.google.com/g/istio-team-
drive-access