Istio helps you manage cloud-based deployments by providing an open-source service mesh to connect, secure, control, and observe microservices.
This tutorial demonstrates how to expose an application running on the Konvoy cluster using the LoadBalancer (layer-4) service type.
Before you begin
Before starting this tutorial, you should verify the following:
-
You must have access to a Linux, macOS, or Windows computer with a supported operating system version.
-
You must have a properly deployed and running cluster. For information about deploying Kubernetes with default settings, see the Quick start.
-
You must have
cert-manager
enabled and deployed through yourcluster.yaml
addon configuration.
Deploy Istio using Konvoy
Istio can be deployed through konvoy
by adding it to the list of configured addons for your cluster.
-
Look for a line like the following in your
cluster.yaml
:addons: - configRepository: https://github.com/mesosphere/kubernetes-base-addons addonsList: - name: istio # is currently in Experimental status. More information: https://docs.d2iq.com/dkp/konvoy/latest/version-policy/#experimental-status enabled: false
-
Create an entry if it does not exist.
-
Set
enabled: true
for the Istio addon. -
Run the following command to deploy Istio to your cluster:
konvoy deploy addons
Download the Istio command line utility
-
Store a local environment variable containing the current Istio version running in your cluster:
export KONVOY_ISTIO_VERSION="$(kubectl get clusteraddons istio -o go-template='{{ .spec.chartReference.version }}')"
-
Pull a copy of the corresponding Istio command line to your system:
curl -L https://istio.io/downloadIstio | ISTIO_VERSION=${KONVOY_ISTIO_VERSION} sh -
-
Change to the Istio directory and set your PATH environment variable by running the following commands:
cd istio* export PATH=$PWD/bin:$PATH
-
You should now be able to run the following commands and see output like this:
$ istioctl version client version: <your istio version here> control plane version: <your istio version here> data plane version: <your istio version here> (1 proxies)
Deploy a sample application on Istio
The Istio BookInfo sample application is composed of four separate microservices that demonstrate various Istio features.
-
Deploy the sample
bookinfo
application on the Kubernetes cluster by running the following commands:kubectl apply -f <(istioctl kube-inject -f samples/bookinfo/platform/kube/bookinfo.yaml) kubectl apply -f samples/bookinfo/networking/bookinfo-gateway.yaml
-
Get the URL of the load balancer created on AWS for this service by running the following command:
kubectl get svc istio-ingressgateway -n istio-system
The command displays output similar to the following:
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE istio-ingressgateway LoadBalancer 10.0.29.241 a682d13086ccf11e982140acb7ee21b7-2083182676.us-west-2.elb.amazonaws.com 15020:30380/TCP,80:31380/TCP,443:31390/TCP,31400:31400/TCP,15029:30756/TCP,15030:31420/TCP,15031:31948/TCP,15032:32061/TCP,15443:31232/TCP 110s
-
Open a web browser and navigate to the external IP address for the load balancer to access the application.
For example, the external IP address in the sample output is
a682d13086ccf11e982140acb7ee21b7-2083182676.us-west-2.elb.amazonaws.com
, enabling you to access the application using the following URL:http://a682d13086ccf11e982140acb7ee21b7-2083182676.us-west-2.elb.amazonaws.com/productpage
-
Follow the steps in the Istio BookInfo Application documentation to understand the different Istio features.