Skip to main content
This guide walks you through installing the Istio client (istioctl) and preparing a local Minikube cluster that supports the ingress addon. It preserves key troubleshooting output and step-by-step commands so you can reproduce the process and verify your environment. Prerequisites:
  • Minikube installed locally. See Minikube docs: https://minikube.sigs.k8s.io/docs/.
  • kubectl configured to use your Minikube cluster.
  • Docker is optional — you may use a VM-based driver instead.

1) Start Minikube (driver selection)

When you run minikube start without specifying a driver, Minikube automatically selects a default driver. If Docker is running it may choose the Docker driver and run the cluster inside a Docker container. On macOS, the Docker driver has a networking limitation: the Minikube ingress addon is not supported for the Docker driver on Darwin (macOS). An example session that demonstrates this limitation:
istiotraining@local ~ $ minikube start
😄  minikube v1.16.0 on Darwin 10.15.7
  Automatically selected the docker driver. Other choices: hyperkit, virtualbox
👍  Starting control plane node minikube in cluster minikube
🛟  Creating docker container (CPUs=2, Memory=1987MB) ...
🐳  Preparing Kubernetes v1.20.0 on Docker 20.10.0 ...
 Generating certificates and keys ...
 Booting up control plane ...
 Configuring RBAC rules ...
 Verifying Kubernetes components...
 Enabled addons: storage-provisioner, default-storageclass
🎉  Done! kubectl is now configured to use "minikube" cluster and "default" namespace by default
istiotraining@local ~ $ minikube addons enable ingress

  Exiting due to MK_USAGE: Due to networking limitations of driver docker on darwin, ingress addon is not supported.
Alternatively to use this addon you can use a vm-based driver:

    'minikube start --vm=true'

To track the update on this work in progress feature please check:
https://github.com/kubernetes/minikube/issues/7332
On macOS, if you need the ingress addon, use a VM-based driver (for example, hyperkit) rather than the Docker driver.
If you encounter this limitation, delete the Docker-based Minikube cluster and start Minikube using a VM-based driver (for example, hyperkit). Example: delete the Docker-based cluster and restart with a VM-based driver:
istiotraining@local ~ $ minikube delete
🔥  Deleting "minikube" in docker ...
🔥  Deleting container "minikube" ...
🔥  Removing /Users/istiotraining/.minikube/machines/minikube ...
💀  Removed all traces of the "minikube" cluster.

istiotraining@local ~ $ minikube start --vm=true
😄  minikube v1.16.0 on Darwin 10.15.7
  Automatically selected the hyperkit driver
🔥  Starting control plane node minikube in cluster minikube
⚙️  Creating hyperkit VM (CPUs=2, Memory=4000MB, Disk=20000MB) ...
🚜  Preparing Kubernetes v1.20.0 on Docker 20.10.0 ...
  Generating certificates and keys ...
  Booting up control plane ...
  Configuring RBAC rules ...
  Verifying Kubernetes components...
  Enabled addons: storage-provisioner, default-storageclass
🎉  Done! kubectl is now configured to use "minikube" cluster and "default" namespace by default

istiotraining@local ~ $ minikube addons enable ingress
  Verifying ingress addon...
  The 'ingress' addon is enabled
Switching drivers will recreate the Minikube VM. Delete the existing cluster if you want to change drivers (minikube delete). Back up any local resources you need before deleting.

2) Download the Istio release (installs istioctl)

A convenient way to get the latest Istio release (and the istioctl binary) is to use the official Istio download script. This script downloads a release archive into a directory named istio-<version> in your current folder:
# Download the latest Istio release (this creates a directory like istio-1.10.3)
curl -L https://istio.io/downloadIstio | sh -
Be aware: this downloads the Istio release into your current directory, so run it from a location where you want the release folder to be created. Sample download output and inspection of the folder:
Istio 1.10.3 Download Complete!

Istio has been successfully downloaded into the istio-1.10.3 folder on your system.

Next Steps:
See https://istio.io/latest/docs/setup/install/ to add Istio to your Kubernetes cluster.

To configure the istioctl client tool for your workstation,
add the /Users/istiotraining/istio-1.10.3/bin directory to your environment path variable with:
    export PATH="$PATH:/Users/istiotraining/istio-1.10.3/bin"

Begin the Istio pre-installation check by running:
    istioctl x precheck

Need more information? Visit https://istio.io/latest/docs/setup/install/

istiotraining@local ~ $ cd istio-1.10.3/
istiotraining@local istio-1.10.3 $ ls
LICENSE        README.md        bin        manifest.yaml    manifests    samples    tools

istiotraining@local istio-1.10.3 $ ls bin/
istioctl

istiotraining@local istio-1.10.3 $ ls samples/
README.md    custom-bootstrap    helloworld    multicluster    sleep
addons    extauthz    httpbin    operator    tcp-echo
bookinfo    external    jwt-server    ratelimit    websockets
certs    health-check    kubernetes-blog    security

istiotraining@local istio-1.10.3 $ ls tools/
_istioctl    certs    istioctl.bash

3) Add istioctl to your PATH

Add the release bin directory to your PATH (example for Linux/macOS):
export PATH=$PWD/bin:$PATH
Confirm the istioctl client is available and check its version:
istiotraining@local istio-1.10.3 $ istioctl version
no running Istio pods in "istio-system"
1.10.3
The client reports its version (here 1.10.3) and notes whether it sees any running Istio pods in the cluster.

4) Verify the cluster is ready for Istio

Run verification and preflight checks:
istiotraining@local istio-1.10.3 $ istioctl verify-install
0 Istio control planes detected, checking --revision "default" only
error while fetching revision : the server could not find the requested resource
0 Istio injectors detected
Error: could not load IstioOperator from cluster: the server could not find the requested resource. Use --filename
Explanation:
  • istioctl verify-install attempts to detect an installed control plane and will fail if no control plane manifests have been applied.
  • After download, you should run istioctl x precheck to confirm cluster prerequisites and then install a control plane (for example, using istioctl install or the Istio Operator).

Quick reference table

CommandPurposeNotes / Link
minikube startStart a Minikube cluster (auto-selects a driver)See Minikube docs: https://minikube.sigs.k8s.io/docs/
minikube addons enable ingressEnable the ingress addonOn macOS Docker driver this may fail — use a VM driver
minikube deleteRemove the local Minikube clusterRecreates VM if you restart with a different driver
`curl -L https://istio.io/downloadIstiosh -`Download latest Istio release and istioctlCreates istio-<version> in current directory
export PATH=$PWD/bin:$PATHAdd istioctl to PATHRun from inside the downloaded Istio folder
istioctl x precheckPre-installation checksEnsures cluster meets Istio prerequisites
istioctl install or Istio OperatorInstall Istio control planeSee Istio install docs: https://istio.io/latest/docs/setup/install/
  1. Run istioctl x precheck to ensure your cluster meets prerequisites.
  2. Install an Istio control plane:
    • Use istioctl install for a quick, configurable install, or
    • Use the Istio Operator for lifecycle management.
  3. Follow the official Istio installation guide: https://istio.io/latest/docs/setup/install/
  4. If you ran into a Minikube ingress limitation on macOS, follow the related issue for updates: https://github.com/kubernetes/minikube/issues/7332
Related resources:

Watch Video