Skip to content

Getting Started ​

Follows the official getting started guide. Commands assume a running Kubernetes cluster and a configured kubectl.

Prerequisites ​

  • A Kubernetes cluster (a local one such as kind or minikube is fine).
  • kubectl pointed at that cluster.
  • istioctl on your PATH (the download script below installs it).

Install ​

Download Istio and add istioctl to your PATH.

bash
curl -L https://istio.io/downloadIstio | sh -
cd istio-*
export PATH=$PWD/bin:$PATH

Install the control plane with the demo profile, which turns on enough features to follow the examples.

bash
istioctl install --set profile=demo -y

A first working setup ​

  1. Label a namespace so new pods get an Envoy sidecar injected automatically.

    bash
    kubectl label namespace default istio-injection=enabled
  2. Deploy a workload into that namespace. Any pod created from now on in default gets a sidecar.

    bash
    kubectl apply -f samples/bookinfo/platform/kube/bookinfo.yaml
  3. Confirm each pod has two containers, the app and the injected istio-proxy.

    bash
    kubectl get pods

Each pod should report 2/2 in the READY column once started.

Verify it works ​

Check that the control plane and proxies agree on config.

bash
istioctl proxy-status

Every listed proxy should show SYNCED for CDS (Cluster Discovery Service), LDS (Listener Discovery Service), EDS (Endpoint Discovery Service), and RDS (Route Discovery Service), the xDS sub-protocols. A STALE entry means a push has not been acknowledged. You can also run istioctl analyze to surface configuration problems before they bite.

Where to go next ​

For production, see the official docs on the ambient data plane, control-plane high availability, certificate management and external CA integration, and scaling guidance. Use a production install profile rather than demo, which is tuned for trying features rather than running them.