- A Kubernetes cluster (start from a clean cluster to follow this demo).
- kubectl configured to talk to the cluster.
- Helm installed on the control plane or a machine with cluster access.
- istio/base — installs CustomResourceDefinitions (CRDs) and base resources.
- istio/istiod — the control plane (istiod replaces older Pilot/Galley components).
- istio/gateway — the ingress gateway (can be installed into istio-system or a separate namespace).
Steps
- Install the Istio base chart (creates
istio-systemand installs CRDs)

The base chart is required because it installs the Istio CustomResourceDefinitions (CRDs). Without these CRDs you cannot create many Istio resources.
Always install the
istio/base chart before istiod or gateway. Installing the control plane without CRDs can cause resources to be invalid or fail to create.- Install the control plane (istiod)
- Install the ingress gateway
istio-system or a separate namespace (e.g., istio-ingress). Here we install into istio-system:
- Enable automatic sidecar injection
default namespace.
Check existing labels:
- Deploy a sample workload (Redis) to validate sidecar injection

- Inspect and customize Helm chart values
istiod.yaml or gateway.yaml to change settings such as image tags, resources, or gateway configuration. Example snippet from a values file:
- Istio Helm charts: https://istio.io/latest/docs/setup/install/helm/
- Helm documentation: https://helm.sh/docs/
- Kubernetes documentation: https://kubernetes.io/docs/
- istioctl analyze: https://istio.io/latest/docs/ops/diagnostic-tools/istioctl-analyze/