Getting Started without the Gateway API
This guide lets you quickly evaluate Istio, using only its legacy APIs. If you want to use the Kubernetes Gateway API, please see that example5. If you are already familiar with Istio or interested in installing other configuration profiles or advanced deployment models6, refer to our which Istio installation method should I use? FAQ page.
These steps require you to have a cluster running a
supported version of Kubernetes (1.28, 1.29, 1.30, 1.31). You can use any supported platform, for example Minikube7 or others specified by the platform-specific setup instructions8.Follow these steps to get started with Istio:
- Download and install Istio
- Deploy the sample application
- Open the application to outside traffic
- View the dashboard
Download Istio
Go to the Istio release9 page to download the installation file for your OS, or download and extract the latest release automatically (Linux or macOS):
Move to the Istio package directory. For example, if the package is
istio-1.24.3
:The installation directory contains:
- Sample applications in
samples/
- The
istioctl
10 client binary in thebin/
directory.
- Sample applications in
Add the
istioctl
client to your path (Linux or macOS):
Install Istio
For this installation, we use the
demo
configuration profile11. It’s selected to have a good set of defaults for testing, but there are other profiles for production or performance testing.Add a namespace label to instruct Istio to automatically inject Envoy sidecar proxies when you deploy your application later:
Deploy the sample application
Deploy the
Bookinfo
sample application12:The application will start. As each pod becomes ready, the Istio sidecar will be deployed along with it.
and
Verify everything is working correctly up to this point. Run this command to see if the app is running inside the cluster and serving HTML pages by checking for the page title in the response:
Open the application to outside traffic
The Bookinfo application is deployed but not accessible from the outside. To make it accessible, you need to create an Istio Ingress Gateway, which maps a path to a route at the edge of your mesh.
Associate this application with the Istio gateway:
Ensure that there are no issues with the configuration:
Determining the ingress IP and ports
Follow these instructions to set the INGRESS_HOST
and INGRESS_PORT
variables
for accessing the gateway. Use the tabs to choose the instructions for your
chosen platform:
Run this command in a new terminal window to start a Minikube tunnel that
sends traffic to your Istio Ingress Gateway. This will provide an external
load balancer, EXTERNAL-IP
, for service/istio-ingressgateway
.
Set the ingress host and ports:
Ensure an IP address and ports were successfully assigned to each environment variable:
Execute the following command to determine if your Kubernetes cluster is running in an environment that supports external load balancers:
If the EXTERNAL-IP
value is set, your environment has an external load balancer that you can use for the ingress gateway.
If the EXTERNAL-IP
value is <none>
(or perpetually <pending>
), your environment does not provide an external load balancer for the ingress gateway.
In this case, you can access the gateway using the service’s node port.
Choose the instructions corresponding to your environment:
Follow these instructions if you have determined that your environment has an external load balancer.
Set the ingress IP and ports:
Follow these instructions if your environment does not have an external load balancer and choose a node port instead.
Set the ingress ports:
GKE:
You need to create firewall rules to allow the TCP traffic to the ingressgateway
service’s ports.
Run the following commands to allow the traffic for the HTTP port, the secure port (HTTPS) or both:
IBM Cloud Kubernetes Service:
Docker For Desktop:
Other environments:
Set
GATEWAY_URL
:Ensure an IP address and port were successfully assigned to the environment variable:
Verify external access
Confirm that the Bookinfo application is accessible from outside by viewing the Bookinfo product page using a browser.
Run the following command to retrieve the external address of the Bookinfo application.
Paste the output from the previous command into your web browser and confirm that the Bookinfo product page is displayed.
View the dashboard
Istio integrates with several15 different telemetry applications. These can help you gain an understanding of the structure of your service mesh, display the topology of the mesh, and analyze the health of your mesh.
Use the following instructions to deploy the Kiali16 dashboard, along with Prometheus17, Grafana18, and Jaeger19.
Install Kiali and the other addons20 and wait for them to be deployed.
Access the Kiali dashboard.
In the left navigation menu, select Graph and in the Namespace drop down, select default.
The Kiali dashboard shows an overview of your mesh with the relationships between the services in the
Bookinfo
sample application. It also provides filters to visualize the traffic flow.Kiali Dashboard
Next steps
Congratulations on completing the evaluation installation!
These tasks are a great place for beginners to further evaluate Istio’s
features using this demo
installation:
- Request routing22
- Fault injection23
- Traffic shifting24
- Querying metrics25
- Visualizing metrics26
- Accessing external services27
- Visualizing your mesh28
Before you customize Istio for production use, see these resources:
Join the Istio community
We welcome you to ask questions and give us feedback by joining the Istio community31.
Uninstall
To delete the Bookinfo
sample application and its configuration, see
Bookinfo
cleanup.
The Istio uninstall deletes the RBAC permissions and all resources hierarchically
under the istio-system
namespace. It is safe to ignore errors for non-existent
resources because they may have been deleted hierarchically.
The istio-system
namespace is not removed by default.
If no longer needed, use the following command to remove it:
The label to instruct Istio to automatically inject Envoy sidecar proxies is not removed by default. If no longer needed, use the following command to remove it: