This lesson recaps the key points for installing and configuring Istio on Kubernetes. It covers prerequisites, installation methods, sidecar injection patterns (including Ambient mode and Waypoint), customization via the Istio Operator and Helm, and safe revision-based (canary) upgrades.Documentation Index
Fetch the complete documentation index at: https://notes.kodekloud.com/llms.txt
Use this file to discover all available pages before exploring further.
Prerequisites
- A working Kubernetes cluster is required. This can be a managed cluster such as AWS EKS or a local development cluster like
kind. - kubectl configured to communicate with your cluster and appropriate RBAC permissions to install cluster components.
Installation methods
Istio can be installed in multiple ways. Choose the approach that matches your operational model:| Method | Use case | Notes |
|---|---|---|
istioctl | Recommended for most users | Simplest path for single control plane installs and for revision-based installs. |
| Helm charts | GitOps / declarative management (e.g., Argo CD) | Manage base, istiod, and gateway charts for fine-grained control. |
| Istio Operator | Enterprise-grade lifecycle management | Useful for recurring customizations and day-2 operations. |
- Istio base (CRDs and cluster-level resources)
- Istiod (control plane)
- Ingress/egress gateway (optional; needed for inbound traffic)
What installation actually deploys
Installing Istio deploys control plane components and supporting resources (CRDs, control plane pods, gateways, etc.). It does not automatically change existing workloads. To get data-plane behavior (sidecars) you must enable sidecar injection for target namespaces or inject the Envoy sidecar manually into pods when they are created.Enabling sidecar injection
There are three primary options to inject data-plane proxies into your workloads:- Automatic injection (namespace label)
- Enable automatic sidecar injection for a namespace:
- For revision-based (canary) control planes, label the namespace with the revision name:
-
Manual injection
- Use
istioctl kube-inject(older pattern) or the injection webhook can be bypassed and the sidecar added to pod specs manually. Manual injection is useful when you cannot or do not want to rely on namespace labels.
- Use
-
Ambient mode (sidecarless)
- Ambient mode runs
ztunnelas a DaemonSet (one tunnel per node) instead of injecting per-workload Envoy sidecars. For L7 control in Ambient mode, deploy waypoint proxies at the namespace level.
- Ambient mode runs
Automatic injection labels and revision labels overwrite existing settings when you pass
--overwrite. Be careful when relabeling production namespaces—workloads may need to be restarted to pick up a different revision or injection behavior.- Ambient mode and Waypoint
- Ambient mode is Istio’s sidecarless option. The Ambient dataplane agent,
ztunnel, runs as a DaemonSet — one tunnel per node. - If you need layer-7 (L7) proxying capabilities in Ambient mode or want per-namespace L7 control, use a waypoint proxy which operates at the namespace level rather than per-workload.
- Ambient mode is Istio’s sidecarless option. The Ambient dataplane agent,

Istio Operator and customization
The Istio Operator provides a declarative, repeatable way to manage Istio lifecycle and configuration. Common workflows:- Edit an Operator CR or Helm values to change component settings.
- Reapply the manifest to update an installation.
Canary revision upgrades (recommended pattern)
Revision-based upgrades let you run multiple Istio control plane revisions side-by-side and migrate namespaces one-by-one. Typical steps:- Install the new control plane with a revision name:
- Label the namespaces you want to migrate:
- Restart or roll the workloads in that namespace so new pods get the updated sidecars:
- Test traffic, validate behavior, then migrate additional namespaces or remove the old revision once you’re satisfied.
Revision-based upgrades, the Istio Operator, namespace labels for injection, and Ambient mode behavior are all topics likely to appear on the ICA exam. Make sure you can perform a canary revision upgrade and know how to enable/disable injection.
Quick reference — common commands
| Action | Command |
|---|---|
| Install Istio (default) | istioctl install -y |
| Install with revision | istioctl install --set revision=canary -y |
| Enable automatic injection (namespace) | kubectl label namespace my-namespace istio-injection=enabled --overwrite |
| Enable revision label for namespace | kubectl label namespace my-namespace istio.io/rev=canary --overwrite |
| Restart workloads to pick up new sidecar | kubectl rollout restart deployment -n my-namespace |
| Upgrade Istiod with Helm | helm upgrade --install istiod istio/istiod -n istio-system -f values.yaml |