Prerequisites
- A running Kubernetes cluster (cloud or local). Examples: AWS EKS, GKE, or local
kind. - Plan for additional cluster resources: Istio control plane and proxies consume CPU, memory, and network bandwidth.
kubectlandistioctl(or Helm) installed on your local machine for management and troubleshooting.
Installation methods
Choose the installation method based on how you manage cluster configuration (interactive installs vs GitOps).
If you use Helm in GitOps (for example with Argo CD), you typically deploy three charts:
baseistiodingress/gateway(optional if you do not accept external traffic)
If you are using Helm as part of a GitOps workflow, you will commonly deploy the
base, istiod, and the ingress/gateway chart. Use istioctl for ad-hoc installs or interactive setups.Sidecar injection and namespace management
Istio does not modify namespaces by default. To enable automatic sidecar injection for workloads, label namespaces or perform manual injection.
Examples:
- After labeling a namespace, existing pods must be restarted so that new sidecars get injected.
- Revision-based labels map namespaces to a specific control plane revision and enable running multiple control planes concurrently.
Ambient mode (sidecarless) and Waypoint proxies
Ambient mode is Istio’s option for sidecarless security and traffic management:- In Ambient mode a
ztunnelruns as a DaemonSet (oneztunnelper node) to enforce mTLS and network-level policies without per-pod sidecars. - If you require Layer 7 features (L7 routing, application-level proxies) at namespace granularity rather than per-workload sidecars, consider deploying Waypoint proxies which provide namespace-level application proxy functionality.
- Sidecar mode gives per-workload L7 capabilities and fine-grained routing.
- Ambient mode reduces injection overhead and simplifies some operational aspects at the cost of some L7 control patterns.
Istio Operator and customization
The Istio Operator (theIstioOperator CR) is the canonical way to declaratively customize the control plane.
Workflow:
- Create or edit an
IstioOperatorresource or Helm values file to express desired control plane configuration. - Apply changes with
istioctlor Helm; the operator reconciles and updates the control plane accordingly.
- Use the operator to manage profiles, component enablement, and resource sizing.
- Keep your
IstioOperatoror Helm values in source control for reproducibility (ideal for GitOps).
The Istio Operator and revision-based installation workflow are frequently covered in certification exams. Be comfortable with configuring via IstioOperator, updating values, and applying changes with
istioctl or Helm.Canary (revision) upgrades for the Istio control plane
Canary upgrades let you run a new control plane revision in parallel with the old one, migrate workloads, and then remove the old revision once validated. Typical steps:- Install the new control plane with a revision label:
- Label target namespaces to use the new revision:
- Restart workloads (or let rolling updates occur) so pods are recreated and injected with the new proxy. Examples:
- Validate application behavior and traffic routing with tests and telemetry (logs, metrics, traces).
- When stable, uninstall the old control plane revision:
- Confirm namespace labels target the intended revision.
- Verify sidecar proxies in pods match the new revision.
- Run integration and traffic-shift tests before decommissioning old revisions.
Quick commands reference
Final reminders
- Always verify namespace labels before expecting automatic sidecar injection.
- Know when to use sidecar vs ambient mode and how
ztunneland Waypoint proxies differ. - Use the Istio operator (IstioOperator CR) or Helm values for repeatable configuration; store these artifacts in version control.
- Practice the canary revision upgrade flow: install revision, migrate namespaces, validate traffic, then remove the old revision.
Links and references
- Istio official docs: https://istio.io/
- GitOps with Argo CD
- Istio Certified Associate course (exam prep)