Getting Started
This guide is intended for users who are new to Istio and lets you quickly evaluate Istio by installing the
demo
configuration profile.
If you are already familiar with Istio or interested in installing other configuration profiles or a more advanced deployment model, follow the installing with istioctl instructions instead.
- Set up your platform
- Download the release
- Install Istio
- Enable automatic sidecar injection
- Deploy the Bookinfo sample application
Set up your platform
Before you can install Istio, you need a cluster running a compatible version of Kubernetes. Istio 1.5 has been tested with Kubernetes releases 1.14, 1.15, 1.16.
Create a cluster by selecting the appropriate platform-specific setup instructions.
Some platforms provide a managed control plane which you can use instead of installing Istio manually. If this is the case with your selected platform, and you choose to use it, you will be finished installing Istio after creating the cluster, so you can skip the following instructions. For more information, see your platform service provider’s documentation.
Download and install Istio
Download the Istio release which includes installation files, samples, and the istioctl command line utility.
Go to the Istio release page to download the installation file corresponding to your OS. Alternatively, on a macOS or Linux system, you can run the following command to download and extract the latest release automatically:
$ curl -L https://istio.io/downloadIstio | sh -
Move to the Istio package directory. For example, if the package is
istio-1.5.0
:$ cd istio-1.5.0
The installation directory contains:
- Installation YAML files for Kubernetes in
install/kubernetes
- Sample applications in
samples/
- The
istioctl
client binary in thebin/
directory.istioctl
is used when manually injecting Envoy as a sidecar proxy.
- Installation YAML files for Kubernetes in
Add the
istioctl
client to your path, on a macOS or Linux system:$ export PATH=$PWD/bin:$PATH
You can optionally enable the auto-completion option when working with a bash or ZSH console.
Install Istio
Follow these steps to install Istio using the demo
configuration profile on your chosen platform.
Install the
demo
profile$ istioctl manifest apply --set profile=demo
Verify the installation by ensuring the following Kubernetes services are deployed and verify they all have an appropriate
CLUSTER-IP
except thejaeger-agent
andjaeger-collector-headless
services:$ kubectl get svc -n istio-system NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE grafana ClusterIP 172.21.175.168 <none> 3000/TCP 13s istio-egressgateway ClusterIP 172.21.97.171 <none> 80/TCP,443/TCP,15443/TCP 17s istio-ingressgateway LoadBalancer 172.21.176.181 169.45.251.236 15020:30598/TCP,80:32145/TCP,443:30492/TCP,15029:31754/TCP,15030:31106/TCP,15031:32379/TCP,15032:31237/TCP,15443:31060/TCP 17s istio-pilot ClusterIP 172.21.161.83 <none> 15010/TCP,15011/TCP,15012/TCP,8080/TCP,15014/TCP,443/TCP 28s istiod ClusterIP 172.21.137.226 <none> 15012/TCP,443/TCP 28s jaeger-agent ClusterIP None <none> 5775/UDP,6831/UDP,6832/UDP 12s jaeger-collector ClusterIP 172.21.227.125 <none> 14267/TCP,14268/TCP,14250/TCP 12s jaeger-collector-headless ClusterIP None <none> 14250/TCP 12s jaeger-query ClusterIP 172.21.94.208 <none> 16686/TCP 12s kiali ClusterIP 172.21.192.82 <none> 20001/TCP 11s prometheus ClusterIP 172.21.30.218 <none> 9090/TCP 11s tracing ClusterIP 172.21.126.166 <none> 80/TCP 11s zipkin ClusterIP 172.21.122.59 <none> 9411/TCP 11s
Also ensure corresponding Kubernetes pods are deployed and have a
STATUS
ofRunning
:$ kubectl get pods -n istio-system NAME READY STATUS RESTARTS AGE grafana-5cc7f86765-lqdzk 1/1 Running 0 2m25s istio-egressgateway-97445fd58-vx9s9 1/1 Running 0 2m29s istio-ingressgateway-565b5cd49f-9knzt 1/1 Running 0 2m29s istio-tracing-8584b4d7f9-ft88q 1/1 Running 0 2m25s istiod-6476b4cb9b-8gfj2 1/1 Running 0 2m41s kiali-8559969566-wm62d 1/1 Running 0 2m24s prometheus-965cff5ff-pprnh 2/2 Running 0 2m24s
Enable automatic sidecar injection
A benefit of Istio is automatic sidecar injection, which allows your applications to work in the service mesh without modification. To take advantage of this feature, enable sidecar injection by adding the istio-injection=enabled
label to the Kubernetes namespaces in which you plan to deploy your applications. For more information, see Istio sidecar injector.
$ kubectl label namespace <namespace> istio-injection=enabled
Alternatively, you can manually inject Envoy containers in your application pods before deploying them, using
istioctl kube-inject
:
$ istioctl kube-inject -f <your-app-spec>.yaml | kubectl apply -f -
Deploy an application or the Bookinfo sample
If you have an application ready to go, deploy it:
$ kubectl create -n <namespace> -f <your-app-spec>.yaml
Alternatively, deploy the Bookinfo sample to evaluate Istio’s features for traffic routing, fault injection, rate limiting, etc. Then, explore the various Istio tasks that interest you.
Next evaluation steps
After installing Istio and deploying an application, see the following topics to explore more Istio features:
- Request routing
- Fault injection
- Traffic shifting
- Querying metrics
- Visualizing metrics
- Collecting logs
- Rate limiting
- Ingress gateways
- Accessing external services
- Visualizing your mesh
Prepare for production deployment
Before you install and customize Istio for production use, see the following topics:
Engage with the community
We invite you to join our community and share your feedback and suggestions to improve Istio.
Uninstall Istio
The uninstall deletes the istio-system
namespace and the resources in it,
including any associated RBAC permissions. The uninstall command might generate errors
about non-existent resources, which you can ignore:
$ istioctl manifest generate --set profile=demo | kubectl delete -f -