| Virtlet        | Allows to run VMs                             | [configure-virtlet.yml][4]        | Tested |
 | Multus         | Provides Multiple Network support in a pod    | [configure-multus.yml][5]         | Tested |
 | NFD            | Node feature discovery                        | [configure-nfd.yml][7]            | Tested |
+| Istio          | Service Mesh platform                         | [configure-istio.yml][8]          | Tested |
 
 ## Deployment
 
 [5]: playbooks/configure-multus.yml
 [6]: https://www.vagrantup.com/
 [7]: playbooks/configure-nfd.yml
+[8]: playbooks/configure-istio.yml
 
   version: v2.1.10
 - src: andrewrothstein.kubectl
   version: v1.1.12
+- src: andrewrothstein.kubernetes-helm
+  version: v1.2.9
 - src: geerlingguy.docker
   version: 2.5.1
 
 kube_version: v1.11.3
 
 # Helm deployment
-# NOTE(electrocuracha): This value might be changed for the istio implementation
-helm_enabled: false
+helm_enabled: true
 
 # Kube-proxy proxyMode configuration.
 # NOTE: Ipvs is based on netfilter hook function, but uses hash table as the underlying data structure and
 
--- /dev/null
+---
+# SPDX-license-identifier: Apache-2.0
+##############################################################################
+# Copyright (c) 2018
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Apache License, Version 2.0
+# which accompanies this distribution, and is available at
+# http://www.apache.org/licenses/LICENSE-2.0
+##############################################################################
+
+- hosts: localhost
+  become: yes
+  pre_tasks:
+    - name: Load krd variables
+      include_vars:
+        file: krd-vars.yml
+  roles:
+    - andrewrothstein.kubectl
+    - role: andrewrothstein.kubernetes-helm
+      kubernetes_helm_ver: v2.9.1
+  tasks:
+    - name: create istio folder
+      file:
+        state: directory
+        path: "{{ istio_dest }}"
+    - name: getting istio CRDs
+      block:
+      - name: download istio tarball
+        get_url:
+          url: "{{ istio_url }}"
+          dest: "/tmp/istio.tar.gz"
+      - name: extract istio source code
+        unarchive:
+          src: "/tmp/istio.tar.gz"
+          dest: "{{ istio_dest }}"
+          remote_src: yes
+      - name: copy istioctl binary to usr/local/bin folder
+        command: "mv {{ istio_dest }}/istio-{{ istio_version }}/bin/istioctl /usr/local/bin/"
+      when: istio_source_type == "tarball"
+    - name: create network objects
+      shell: "/usr/local/bin/kubectl apply -f {{ istio_dest }}/istio-{{ istio_version }}/install/kubernetes/helm/istio/templates/crds.yaml"
+    - name: render istio's core components
+      shell: "/usr/local/bin/helm template {{ istio_dest }}/istio-{{ istio_version }}/install/kubernetes/helm/istio --name istio --namespace istio-system > /tmp/istio.yaml"
+    - name: create istio manifest
+      shell: "/usr/local/bin/kubectl create namespace istio-system"
+      ignore_errors: True
+    - name: install the components via the manifest
+      shell: "/usr/local/bin/kubectl apply -f /tmp/istio.yaml"
+      ignore_errors: True
 
 nfd_version: 175305b1ad73be7301ac94add475cec6fef797a9
 nfd_url: "https://github.com/kubernetes-incubator/node-feature-discovery"
 
+istio_dest: "{{ base_dest }}/istio"
+istio_source_type: "tarball"
+istio_version: 1.0.3
+istio_url: "https://github.com/istio/istio/releases/download/{{ istio_version }}/istio-{{ istio_version }}-linux.tar.gz"
+
 go_version: 1.11.1
 kubespray_version: 2.7.0
 
     echo "This funtional test requires kubectl client"
     exit 1
 fi
+test_folder=$(pwd)
 
--- /dev/null
+#!/bin/bash
+# SPDX-license-identifier: Apache-2.0
+##############################################################################
+# Copyright (c) 2018
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Apache License, Version 2.0
+# which accompanies this distribution, and is available at
+# http://www.apache.org/licenses/LICENSE-2.0
+##############################################################################
+
+set -o errexit
+set -o nounset
+set -o pipefail
+
+source _functions.sh
+
+csar_id=ac39959e-e82c-11e8-9133-525400912638
+
+base_dest=$(grep "base_dest:" $test_folder/../playbooks/krd-vars.yml | awk -F ': ' '{print $2}')
+istio_dest=$(grep "istio_dest:" $test_folder/../playbooks/krd-vars.yml | awk -F ': ' '{print $2}' | sed "s|{{ base_dest }}|$base_dest|g;s|\"||g")
+istio_version=$(grep "istio_version:" $test_folder/../playbooks/krd-vars.yml | awk -F ': ' '{print $2}')
+
+if ! $(istioctl version &>/dev/null); then
+    echo "This funtional test requires istioctl client"
+    exit 1
+fi
+
+_checks_args $csar_id
+pushd ${CSAR_DIR}/${csar_id}
+istioctl kube-inject -f $istio_dest/istio-$istio_version/samples/bookinfo/platform/kube/bookinfo.yaml > bookinfo-inject.yml
+kubectl apply -f bookinfo-inject.yml
+kubectl apply -f $istio_dest/istio-$istio_version/samples/bookinfo/networking/bookinfo-gateway.yaml
+
+for deployment in details-v1 productpage-v1 ratings-v1 reviews-v1 reviews-v2 reviews-v3; do
+    wait_deployment $deployment
+done
+INGRESS_PORT=$(kubectl -n istio-system get service istio-ingressgateway -o jsonpath='{.spec.ports[?(@.name=="http2")].nodePort}')
+INGRESS_HOST=$(kubectl get po -l istio=ingressgateway -n istio-system -o 'jsonpath={.items[0].status.hostIP}')
+curl -o /dev/null -s -w "%{http_code}\n" http://$INGRESS_HOST:$INGRESS_PORT/productpage
+popd