{"id":932,"date":"2023-04-12T03:16:22","date_gmt":"2023-04-12T03:16:22","guid":{"rendered":"https:\/\/imesh.ai\/blog\/?p=932"},"modified":"2024-02-14T05:42:22","modified_gmt":"2024-02-14T05:42:22","slug":"how-to-implement-istio-in-multicloud-and-multicluster","status":"publish","type":"post","link":"https:\/\/imesh.ai\/blog\/how-to-implement-istio-in-multicloud-and-multicluster\/","title":{"rendered":"How to Implement Istio in Multicloud and Multicluster (GKE\/AKS)"},"content":{"rendered":"\n<p>Today every application has microservices architecture where individual services are spread across public clouds and multiple Kubernetes clusters. Since all the communication of messages among services happens over the internet, it is very important to ensure the security of your data. You don\u2019t want any malicious guy to read and record the data-in-transit (known as packet sniffing), or intervene in between the communication as someone you trust (IP spoofing), or perform a DoS attack such as bandwidth flooding or connection flooding, etc.<\/p>\n\n\n\n<p>The idea is security should always be developed in a layered approach to build defense in depth. When software engineers are developing containerised applications they need to think about security at Code, Container, Cluster, Cloud levels (read <a href=\"https:\/\/kubernetes.io\/docs\/concepts\/security\/overview\/#:~:text=The%204C's%20of%20Cloud%20Native%20security%20are%20Cloud%2C%20Clusters%2C%20Containers,practice%20for%20securing%20software%20systems.\">4 C\u2019s of container security<\/a>).&nbsp;<\/p>\n\n\n\n<p>So in this article, we will explain how you can avoid all the security vulnerabilities by securing the communication of microservices in multi-cloud and multicluster using open-source <a href=\"https:\/\/imesh.ai\/blog\/what-is-istio\/\">Istio service mesh<\/a>. We have considered two different Kubernetes clusters- GKE and AKS- where we will implement two applications and ensure they talk to each other using secure channels. If you want to know more, read about <a href=\"https:\/\/imesh.ai\/blog\/what-is-mtls-and-how-to-implement-it-with-istio\/\">mTLS and certificate rotation with Istio<\/a>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Prerequisite<\/h2>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Ready-to-use GKE (primary cluster) and AKS (remote\/secondary cluster)<\/li>\n\n\n\n<li>Configure the environment variables<\/li>\n\n\n\n<li>Terminal to access primary and remote\/secondary cluster through kubectl.<\/li>\n\n\n\n<li>Refer all the files in <a href=\"https:\/\/github.com\/IMESHinc\/webinar\/tree\/main\/Secure%20multi-cloud%20microservices%20with%20Istio%20Part%202\">IMESH Github repo&nbsp;<\/a><\/li>\n<\/ol>\n\n\n\n<h2 class=\"wp-block-heading\">Watch the video for implementing Istio in multicluster Kubernetes &nbsp;<\/h2>\n\n\n\n<p>If you are comfortable to watch and refer the video to implement the security of multicluster apps using Istio, then watch the following video:<\/p>\n\n\n\n<p><iframe width=\"560\" height=\"315\" src=\"https:\/\/www.youtube.com\/embed\/ZBuIafWj9y4\" title=\"YouTube video player\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" allowfullscreen=\"\"><\/iframe><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Steps<\/h2>\n\n\n\n<p>There are 6 important steps you need to follow to try to implement Istio in multicloud, deploy services and then implement mTLS, L4 and L7 authorization.&nbsp;<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><a href=\"#istio-gke\">Install and configure Istio in GKE<\/a><\/li>\n\n\n\n<li><a href=\"#remote-cluster\">Configure the remote cluster- AKS<\/a><\/li>\n\n\n\n<li><a href=\"#allow-gke\">Allow Istio in GKE to access the remote cluster<\/a><\/li>\n\n\n\n<li><a href=\"#deploy-application\">Deploy applications in each cluster and validate mTLS<\/a><\/li>\n\n\n\n<li><a href=\"#apply-l4\">Implement L4 authorization policy using Istio<\/a><\/li>\n\n\n\n<li><a href=\"#apply-l7\">Implement L7 authorization policy using Istio<\/a><\/li>\n<\/ol>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"istio-gke\">Step 1: Install and Configure Istio in the primary cluster (GKE)&nbsp;<\/h2>\n\n\n\n<p>The idea from step-1 to step-3 is to configure Istio in the clusters- <a href=\"https:\/\/imesh.ai\/blog\/how-to-implement-istio-ambient-mesh-in-gke-or-aks\/\">GKE and AKS<\/a> so that apps in each cluster can talk to each other using an east-west ingress gateway. Please refer to the image of the Istio configuration that we are trying to achieve.&nbsp;<\/p>\n\n\n\n<figure class=\"wp-block-image size-full is-resized\"><img fetchpriority=\"high\" decoding=\"async\" width=\"700\" height=\"650\" src=\"https:\/\/imesh.ai\/blog\/wp-content\/uploads\/2023\/04\/High-level-Istio-configuration-for-multicluster.png\" alt=\"High level Istio configuration for multicluster\" class=\"wp-image-933\" style=\"width:668px;height:620px\" srcset=\"https:\/\/imesh.ai\/blog\/wp-content\/uploads\/2023\/04\/High-level-Istio-configuration-for-multicluster.png 700w, https:\/\/imesh.ai\/blog\/wp-content\/uploads\/2023\/04\/High-level-Istio-configuration-for-multicluster-300x279.png 300w, https:\/\/imesh.ai\/blog\/wp-content\/uploads\/2023\/04\/High-level-Istio-configuration-for-multicluster-400x371.png 400w\" sizes=\"(max-width: 700px) 100vw, 700px\" \/><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">Step1.1: Configure Istio operator<\/h3>\n\n\n\n<p>We will use the following IstioOperator yaml to define the desired state of Istio components. We will treat GKE as the primary cluster and the name of the whole service mesh is \u2018Mesh1\u2019 and call the primary cluster GKE datacenter network as \u2018network1\u2019.&nbsp;<\/p>\n\n\n\n<p>Refer the yaml file below, you can also download the file from <a href=\"https:\/\/github.com\/IMESHinc\/webinar\/blob\/main\/Secure%20multi-cloud%20microservices%20with%20Istio%20Part%202\/cluster-gke-primary.yaml\">Git<\/a>.<\/p>\n\n\n\n<pre class=\"wp-block-code has-white-color has-black-background-color has-text-color has-background\"><code>apiVersion: install.istio.io\/v1alpha1\nkind: IstioOperator\nspec:\n  values:\n    pilot:\n      env:\n        EXTERNAL_ISTIOD: true\n    global:\n      meshID: mesh1\n      multiCluster:\n        clusterName: cluster-gke\n      network: network1\n      proxy:\n        privileged: true<\/code><\/pre>\n\n\n\n<p>In the above file, we have done two things:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Set the flag <strong>EXTERNAL_ISTIOD <\/strong>as \u2018true\u2019 to allow Istio control plane to handle remote clusters<\/li>\n\n\n\n<li>Set the flag proxy-&gt;privilege as \u2018true\u2019 to get root access to the proxy container. (Note, this is NOT ideal for production implementation. You can reach out to <a href=\"https:\/\/imesh.ai\/enterprise-istio-support.html\">IMESH Istio support<\/a> for production support)&nbsp;<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Step 1.2: Install Istio using Istio Operator<\/h3>\n\n\n\n<p>Execute the command to install Istio<\/p>\n\n\n\n<pre class=\"wp-block-code has-white-color has-black-background-color has-text-color has-background\"><code>istioctl install $env:GKE -f &lt;&lt;Istio Operator file name&gt;&gt;<\/code><\/pre>\n\n\n\n<p>You will observe that the Istio core, Istiod and Ingress gateways are installed.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Step 1.3: Install Istio east-west gateway&nbsp;<\/h3>\n\n\n\n<p>We will use the Istio operator to install an ingress gateway in GKE that can handle traffic from outside the cluster- from AKS. We have given the name of the ingress as <strong>istio-eastwestgateway.&nbsp;<\/strong><\/p>\n\n\n\n<p class=\"has-black-color has-text-color\"><strong>Note: Using the Istio operator we are installing an east-west ingress controller ( which is slightly different from normal ingress controller-act as an API). Once we install the east-west ingress controller, we will create a gateway resource to link with eastwest gateway and later on create virtual services to make sure the gateway resource in GKE listens to ASK in certain ports.&nbsp;&nbsp;<\/strong><\/p>\n\n\n\n<p>You can refer to the east-west-gateway-cluster-gke.yaml file in the <a href=\"https:\/\/github.com\/IMESHinc\/webinar\/blob\/main\/Secure%20multi-cloud%20microservices%20with%20Istio%20Part%202\/east-west-gateway-cluster-gke.yaml\">Git <\/a>or refer the code below:<\/p>\n\n\n\n<pre class=\"wp-block-code has-white-color has-black-background-color has-text-color has-background\"><code>apiVersion: install.istio.io\/v1alpha1\nkind: IstioOperator\nmetadata:\n  name: eastwest\nspec:\n  revision: \"\"\n  profile: empty\n  components:\n    ingressGateways:\n      - name: istio-eastwestgateway\n        label:\n          istio: eastwestgateway\n          app: istio-eastwestgateway\n          topology.istio.io\/network: network1\n        enabled: true\n        k8s:\n          env:\n            # traffic through this gateway should be routed inside the network\n            - name: ISTIO_META_REQUESTED_NETWORK_VIEW\n              value: network1\n          service:\n            ports:\n              - name: status-port\n                port: 15021\n                targetPort: 15021\n              - name: tls\n                port: 15443\n                targetPort: 15443\n              - name: tls-istiod\n                port: 15012\n                targetPort: 15012\n              - name: tls-webhook\n                port: 15017\n                targetPort: 15017\n  values:\n    gateways:\n      istio-ingressgateway:\n        injectionTemplate: gateway\n    global:\n      network: network1\n<\/code><\/pre>\n\n\n\n<p>Note: east-west gateway file could be create using below command as well:<\/p>\n\n\n\n<pre class=\"wp-block-code has-black-color has-white-background-color has-text-color has-background\"><code>samples\/multicluster\/gen-eastwest-gateway.sh --network network1<\/code><\/pre>\n\n\n\n<p>Install the ingress gateway using the following command:<\/p>\n\n\n\n<pre class=\"wp-block-code has-white-color has-black-background-color has-text-color has-background\"><code>istioctl install $env:GKE -f &lt;&lt;ingress gateway file name&gt;&gt;<\/code><\/pre>\n\n\n\n<p>Ingress <strong>istio-eastwestgateway<\/strong> will be active now.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Step 1.4: Setup east-west gateway to allow the remote cluster (AKS) to access GKE&nbsp;<\/h3>\n\n\n\n<p>Execute the following command to find out the IP of the ingress gateway <strong>istio-eastwestgateway. <\/strong>Copy it and we will use it in step-3 while configuring the Istio in remote cluster.&nbsp;<\/p>\n\n\n\n<pre class=\"wp-block-code has-white-color has-black-background-color has-text-color has-background\"><code>Kubectl get svc -n istio-system $env:GKE<\/code><\/pre>\n\n\n\n<p>We will then create a port to receive the external traffic from AKS into GKS through the gateway.<\/p>\n\n\n\n<p><strong>Note<\/strong>: Since the eastwest IP is public, for production implementation, we suggest to consider security measures to secure the IP such as HTTPS, firewall, certificates, etc.&nbsp;<\/p>\n\n\n\n<p>Create two yaml files of Gateway kind to expose Istiod and the services in GKE to the AKS.&nbsp;<\/p>\n\n\n\n<p>Please apply the expose-istiod.yaml and expose-services yaml files in the istio-system namespace.&nbsp;<\/p>\n\n\n\n<p>Declaration of expose-istiod.yaml file below:<\/p>\n\n\n\n<pre class=\"wp-block-code has-white-color has-black-background-color has-text-color has-background\"><code>apiVersion: networking.istio.io\/v1alpha3\nkind: Gateway\nmetadata:\n  name: istiod-gateway\n  namespace: istio-system\nspec:\n  selector:\n    istio: eastwestgateway\n  servers:\n    - port:\n        name: tls-istiod\n        number: 15012\n        protocol: tls\n      tls:\n        mode: PASSTHROUGH       \n      hosts:\n        - \"*\"\n    - port:\n        name: tls-istiodwebhook\n        number: 15017\n        protocol: tls\n      tls:\n        mode: PASSTHROUGH         \n      hosts:\n        - \"*\"\n---\napiVersion: networking.istio.io\/v1alpha3\nkind: VirtualService\nmetadata:\n  name: istiod-vs\n  namespace: istio-system\nspec:\n  hosts:\n  - \"*\"\n  gateways:\n  - istiod-gateway\n  tls:\n  - match:\n    - port: 15012\n      sniHosts:\n      - \"*\"\n    route:\n    - destination:\n        host: istiod.istio-system.svc.cluster.local\n        port:\n          number: 15012\n  - match:\n    - port: 15017\n      sniHosts:\n      - \"*\"\n    route:\n    - destination:\n        host: istiod.istio-system.svc.cluster.local\n        port:\n          number: 443<\/code><\/pre>\n\n\n\n<p>Declaration of expose-services.yaml file below:<\/p>\n\n\n\n<pre class=\"wp-block-code has-white-color has-black-background-color has-text-color has-background\"><code>apiVersion: networking.istio.io\/v1alpha3\nkind: Gateway\nmetadata:\n&nbsp; name: cross-network-gateway\n&nbsp; namespace: istio-system\nspec:\n&nbsp; selector:\n&nbsp; &nbsp; istio: eastwestgateway\n&nbsp; servers:\n&nbsp; &nbsp; - port:\n&nbsp; &nbsp; &nbsp; &nbsp; number: 15443\n&nbsp; &nbsp; &nbsp; &nbsp; name: tls\n&nbsp; &nbsp; &nbsp; &nbsp; protocol: TLS\n&nbsp; &nbsp; &nbsp; tls:\n&nbsp; &nbsp; &nbsp; &nbsp; mode: AUTO_PASSTHROUGH\n&nbsp; &nbsp; &nbsp; hosts:\n&nbsp; &nbsp; &nbsp; &nbsp; - \"*.local\"<\/code><\/pre>\n\n\n\n<p>Apply the following commands to deploy these two files and to allow cross-cluster communication:<\/p>\n\n\n\n<pre class=\"wp-block-code has-white-color has-black-background-color has-text-color has-background\"><code>kubectl apply $env:GKE -f .\\expose-istiod.yaml <\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code has-white-color has-black-background-color has-text-color has-background\"><code>kubectl apply $env:GKE -f .\\expose-services.yaml<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"remote-cluster\">Step 2: Configure the remote cluster (AKS)<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Step 2.1: Label and annotate the istio-system namespace in the AKS<\/h3>\n\n\n\n<p>You need to label and annotate istio-system namespace to let istiod know that the control plane of istio is <strong>\u2018cluster-gke<\/strong>\u2019- the primary cluster, when remote cluster is attached to it. You can do so by applying the below namespace. (I have given the name as <a href=\"https:\/\/github.com\/IMESHinc\/webinar\/blob\/main\/Secure%20multi-cloud%20microservices%20with%20Istio%20Part%202\/cluster-aks-remote-namespace-prep.yaml\"><strong>cluster-aks-remote-namespace-prep.yaml<\/strong><\/a>).<\/p>\n\n\n\n<pre class=\"wp-block-code has-white-color has-black-background-color has-text-color has-background\"><code>apiVersion: v1\nkind: Namespace\nmetadata:\n&nbsp; name: istio-system\n&nbsp; labels:\n&nbsp; &nbsp; topology.istio.io\/network: network2\n&nbsp; annotations:\n&nbsp; &nbsp; topology.istio.io\/controlPlaneClusters: cluster-gke<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Step 2.2: Use the east-west gateway of GKE while configuring Istio in AKS<\/h3>\n\n\n\n<p>I have used cluster-aks-remote yaml in AKS to set up Istio. Use the IP of the east-west gateway of GKE cluster as the value under <strong>remotePilotAddress <\/strong>in the yaml file.<\/p>\n\n\n\n<pre class=\"wp-block-code has-white-color has-black-background-color has-text-color has-background\"><code>apiVersion: install.istio.io\/v1alpha1\nkind: IstioOperator\nspec:\n&nbsp; profile: remote\n&nbsp; values:\n&nbsp; &nbsp; istiodRemote:\n&nbsp; &nbsp; &nbsp; injectionPath: \/inject\/cluster\/cluster-aks\/net\/network2\n&nbsp; &nbsp; global:\n&nbsp; &nbsp; &nbsp; remotePilotAddress: &lt;replace with ip of east-west gateway of primary cluster&gt;\n&nbsp; &nbsp; &nbsp; proxy:\n&nbsp; &nbsp; &nbsp; &nbsp; privileged: true<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Step 2.3: Install Istio using the Istio operator in AKS<\/h3>\n\n\n\n<p>Use the command to install cluster-aks-remote.yaml<\/p>\n\n\n\n<pre class=\"wp-block-code has-white-color has-black-background-color has-text-color has-background\"><code>istioctl install $env:AKS -f .\\cluster-aks-remote.yaml<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"allow-gke\">Step 3: Allow Istio in GKE to access the API server of AKS<\/h2>\n\n\n\n<p>This step is crucial to allow the Istio control plane to access the API server of AKS to be able to perform its core activities such as service discovery, patch the webhooks, etc. The idea is to create a remote secret and apply the remote secret in the primary cluster GKE.&nbsp;<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Step 3.1: Create remote cluster secrets&nbsp;<\/h3>\n\n\n\n<p>Use the following command to generate the remote secret of remote cluster (AKS) and store it in a secret yaml file.&nbsp;<\/p>\n\n\n\n<pre class=\"wp-block-code has-white-color has-black-background-color has-text-color has-background\"><code>istioctl x create-remote-secret $env:AKS --name=cluster-aks &gt; apiserver-creds-aks.yaml<\/code><\/pre>\n\n\n\n<p>The output file apiserver-creds-aks.yaml will look something like below:<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" width=\"1024\" height=\"517\" src=\"https:\/\/imesh.ai\/blog\/wp-content\/uploads\/2023\/04\/remote-cluster-yaml-for-cluster-to-cluster-communication-1024x517.png\" alt=\"\" class=\"wp-image-949\" srcset=\"https:\/\/imesh.ai\/blog\/wp-content\/uploads\/2023\/04\/remote-cluster-yaml-for-cluster-to-cluster-communication-1024x517.png 1024w, https:\/\/imesh.ai\/blog\/wp-content\/uploads\/2023\/04\/remote-cluster-yaml-for-cluster-to-cluster-communication-300x152.png 300w, https:\/\/imesh.ai\/blog\/wp-content\/uploads\/2023\/04\/remote-cluster-yaml-for-cluster-to-cluster-communication-768x388.png 768w, https:\/\/imesh.ai\/blog\/wp-content\/uploads\/2023\/04\/remote-cluster-yaml-for-cluster-to-cluster-communication-1536x776.png 1536w, https:\/\/imesh.ai\/blog\/wp-content\/uploads\/2023\/04\/remote-cluster-yaml-for-cluster-to-cluster-communication-2048x1035.png 2048w, https:\/\/imesh.ai\/blog\/wp-content\/uploads\/2023\/04\/remote-cluster-yaml-for-cluster-to-cluster-communication-400x202.png 400w, https:\/\/imesh.ai\/blog\/wp-content\/uploads\/2023\/04\/remote-cluster-yaml-for-cluster-to-cluster-communication-800x404.png 800w, https:\/\/imesh.ai\/blog\/wp-content\/uploads\/2023\/04\/remote-cluster-yaml-for-cluster-to-cluster-communication-1160x586.png 1160w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">Step 3.2: Apply the remote cluster secrets in primary cluster (GKE)<\/h3>\n\n\n\n<p>Use the following command to implement the secrets in GKE so that it can access the API server of AKS.&nbsp;<\/p>\n\n\n\n<pre class=\"wp-block-code has-white-color has-black-background-color has-text-color has-background\"><code>kubectl apply $env:GKE -f .\\apiserver-creds-aks.yaml<\/code><\/pre>\n\n\n\n<p>Note: Apply the remote credentials first to connect both the cluster and then create east-west gateway, expose the services in the remote cluster, otherwise there will be errors.&nbsp;<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Step 3.3: Install east-west ingress gateway in remote cluster AKS<\/h3>\n\n\n\n<p>Use the command to install east-west ingress gateway controllers in AKS.<\/p>\n\n\n\n<pre class=\"wp-block-code has-white-color has-black-background-color has-text-color has-background\"><code>istioctl install $env:AKS -f east-west-gateway-cluster-aks.yaml<\/code><\/pre>\n\n\n\n<p>After the controller is installed we will create gateway resource to link with east-west gateway in the remote cluster by applying the following commands:<\/p>\n\n\n\n<pre class=\"wp-block-code has-white-color has-black-background-color has-text-color has-background\"><code>kubectl apply $env:AKS -f .\\expose-services.yaml&nbsp;<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"deploy-application\">Step 4:&nbsp; Deploy application into primary and remote Kubernetes clusters in Istio service mesh<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Step 4.1: Deploy service and deployment into each cluster- GKE and AKS.&nbsp;<\/h3>\n\n\n\n<p>We will deploy service in each cluster and then deploy the Deployment file with version 1 and version 2 of hello world for GKE and AKS respectively. The idea is to see how two services in different clusters communicate with each other through the gateway.&nbsp;<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" width=\"700\" height=\"650\" src=\"https:\/\/imesh.ai\/blog\/wp-content\/uploads\/2023\/04\/Deploy-service-and-deployment-into-each-cluster.png\" alt=\"\" class=\"wp-image-944\" srcset=\"https:\/\/imesh.ai\/blog\/wp-content\/uploads\/2023\/04\/Deploy-service-and-deployment-into-each-cluster.png 700w, https:\/\/imesh.ai\/blog\/wp-content\/uploads\/2023\/04\/Deploy-service-and-deployment-into-each-cluster-300x279.png 300w, https:\/\/imesh.ai\/blog\/wp-content\/uploads\/2023\/04\/Deploy-service-and-deployment-into-each-cluster-400x371.png 400w\" sizes=\"(max-width: 700px) 100vw, 700px\" \/><\/figure>\n\n\n\n<p>Link to <a href=\"https:\/\/github.com\/IMESHinc\/webinar\/blob\/main\/Secure%20multi-cloud%20microservices%20with%20Istio%20Part%202\/demo-service.yaml\">demo-service.yaml<\/a>, <a href=\"https:\/\/github.com\/IMESHinc\/webinar\/blob\/main\/Secure%20multi-cloud%20microservices%20with%20Istio%20Part%202\/demo-deployment-v1.yaml\">demo-deployment-v1.yaml<\/a> and <a href=\"https:\/\/github.com\/IMESHinc\/webinar\/blob\/main\/Secure%20multi-cloud%20microservices%20with%20Istio%20Part%202\/demo-deployment-v2.yaml\">demo-deployment-2.yaml<\/a>.<\/p>\n\n\n\n<p>Use the following commands to deploy services and deployments into each cluster.<\/p>\n\n\n\n<pre class=\"wp-block-code has-white-color has-black-background-color has-text-color has-background\"><code>kubectl apply $env:GKE -f .\\demo-service.yaml\n\nkubectl apply $env:AKS -f .\\demo-service.yaml\n\nkubectl apply $env:GKE -f .\\demo-deployment-v1.yaml\n\nkubectl apply $env:AKS -f .\\demo-deployment-v2.yaml<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Step 4.2: Deploy a another service to request to hello service in GKE and AKS&nbsp;<\/h3>\n\n\n\n<p>Git Link to <a href=\"https:\/\/github.com\/IMESHinc\/webinar\/blob\/main\/Secure%20multi-cloud%20microservices%20with%20Istio%20Part%202\/sleep-deployment-cluster-gke.yaml\">sleep-deployment-cluster-gke.yaml <\/a>&nbsp;and <a href=\"https:\/\/github.com\/IMESHinc\/webinar\/blob\/main\/Secure%20multi-cloud%20microservices%20with%20Istio%20Part%202\/sleep-deployment-cluster-aks.yaml\">sleep-deployment-cluster-aks.yaml<\/a><\/p>\n\n\n\n<pre class=\"wp-block-code has-white-color has-black-background-color has-text-color has-background\"><code>kubectl apply $env:GKE -f .\\sleep-deployment-cluster-gke.yaml\n\nkubectl apply $env:AKS -f .\\sleep-deployment-cluster-aks.yaml<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Step 4.3: Get into one of \u2018sleep\u2019 service pods and request the hello service<\/h3>\n\n\n\n<p>Give the command to enter into one the pods of \u2018sleep\u2019 services<\/p>\n\n\n\n<pre class=\"wp-block-code has-white-color has-black-background-color has-text-color has-background\"><code>kubectl exec -it &lt;&lt;sleep service pod name in gke&gt;&gt; $env:GKE -n multi-cluster -- sh<\/code><\/pre>\n\n\n\n<p>Request the hello service from the pod.&nbsp;<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>curl helloworld\/hello<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"301\" src=\"https:\/\/imesh.ai\/blog\/wp-content\/uploads\/2023\/04\/multicluster-service-to-service-communication-with-Istio-1024x301.png\" alt=\"multicluster service to service communication with Istio\" class=\"wp-image-956\" srcset=\"https:\/\/imesh.ai\/blog\/wp-content\/uploads\/2023\/04\/multicluster-service-to-service-communication-with-Istio-1024x301.png 1024w, https:\/\/imesh.ai\/blog\/wp-content\/uploads\/2023\/04\/multicluster-service-to-service-communication-with-Istio-300x88.png 300w, https:\/\/imesh.ai\/blog\/wp-content\/uploads\/2023\/04\/multicluster-service-to-service-communication-with-Istio-768x226.png 768w, https:\/\/imesh.ai\/blog\/wp-content\/uploads\/2023\/04\/multicluster-service-to-service-communication-with-Istio-1536x451.png 1536w, https:\/\/imesh.ai\/blog\/wp-content\/uploads\/2023\/04\/multicluster-service-to-service-communication-with-Istio-2048x602.png 2048w, https:\/\/imesh.ai\/blog\/wp-content\/uploads\/2023\/04\/multicluster-service-to-service-communication-with-Istio-400x118.png 400w, https:\/\/imesh.ai\/blog\/wp-content\/uploads\/2023\/04\/multicluster-service-to-service-communication-with-Istio-800x235.png 800w, https:\/\/imesh.ai\/blog\/wp-content\/uploads\/2023\/04\/multicluster-service-to-service-communication-with-Istio-1160x341.png 1160w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>Similarly, you can also verify the communication by entering into the pod of \u2018sleep\u2019 service in AKS.&nbsp;<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Step 4.4: Verify if communications are secured with mTLS&nbsp;<\/h3>\n\n\n\n<p>You can verify the communication between services in the multicluster by dumping TCP\/IP packets on the Envoy proxy container. Use the below command to enter into envoy proxy container.&nbsp;<\/p>\n\n\n\n<pre class=\"wp-block-code has-white-color has-black-background-color has-text-color has-background\"><code>kubectl exec -it &lt;&lt;helloworld deployment-v1-pod name&gt;&gt; -c istio-proxy -n &lt;&lt;namespace&gt;&gt; -- sh<\/code><\/pre>\n\n\n\n<p>Run the following command to dump TCP\/IP packets.<\/p>\n\n\n\n<pre class=\"wp-block-code has-white-color has-black-background-color has-text-color has-background\"><code>sudo tcpdump -nA port 5000<\/code><\/pre>\n\n\n\n<p>You would see an output like the below:<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"475\" src=\"https:\/\/imesh.ai\/blog\/wp-content\/uploads\/2023\/04\/tcp-dump-of-Envoy-proxy-logs-1024x475.png\" alt=\"tcp dump of Envoy proxy logs\" class=\"wp-image-955\" srcset=\"https:\/\/imesh.ai\/blog\/wp-content\/uploads\/2023\/04\/tcp-dump-of-Envoy-proxy-logs-1024x475.png 1024w, https:\/\/imesh.ai\/blog\/wp-content\/uploads\/2023\/04\/tcp-dump-of-Envoy-proxy-logs-300x139.png 300w, https:\/\/imesh.ai\/blog\/wp-content\/uploads\/2023\/04\/tcp-dump-of-Envoy-proxy-logs-768x357.png 768w, https:\/\/imesh.ai\/blog\/wp-content\/uploads\/2023\/04\/tcp-dump-of-Envoy-proxy-logs-400x186.png 400w, https:\/\/imesh.ai\/blog\/wp-content\/uploads\/2023\/04\/tcp-dump-of-Envoy-proxy-logs-800x371.png 800w, https:\/\/imesh.ai\/blog\/wp-content\/uploads\/2023\/04\/tcp-dump-of-Envoy-proxy-logs.png 1051w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>You can see all the packets exchanged between two services across clusters are encrypted with mTLS encryption.&nbsp;<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"apply-l4\">Step 5:&nbsp; Apply L4 authorization policies to multicluster communication with Istio<\/h2>\n\n\n\n<p>To apply granular policies such as restricting a service from getting accessed by a certain service, you can use Istio authorization policies.&nbsp;<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Step 5.1: Create and deploy an Istio L4 authorization policy&nbsp;<\/h3>\n\n\n\n<p>You can refer to the following <strong>helloworld-policy<\/strong> to create your authorization policy or check out <a href=\"https:\/\/github.com\/IMESHinc\/webinar\/blob\/main\/Secure%20multi-cloud%20microservices%20with%20Istio%20Part%202\/demo-authorization.yaml\">Git<\/a>. The objective of the policy is:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Allow deployment-1 to be accessed from sleep service in the <strong>remote cluster<\/strong> only ( i.e. from AKS). If we send a request from the sleep service pod in AKS to hello-world service, we should get response from both deployment-1 and deployment-2.&nbsp;<\/li>\n\n\n\n<li>Don\u2019t allow deployment-1 to be accessed from any other services in the mesh. If a pod from GKE requests hello-world services, the response should come from only deployment-2 pods.&nbsp;<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code has-white-color has-black-background-color has-text-color has-background\"><code>apiVersion: security.istio.io\/v1beta1\nkind: AuthorizationPolicy\nmetadata:\n&nbsp; name: helloworld-policy\n&nbsp; namespace: multi-cluster\nspec:\n&nbsp; selector:\n&nbsp; &nbsp; matchLabels:\n&nbsp; &nbsp; &nbsp; version: v1\n&nbsp; action: ALLOW\n&nbsp; rules:\n&nbsp; - from:\n&nbsp; &nbsp; - source:\n&nbsp; &nbsp; &nbsp; &nbsp; principals: &#091;\"cluster.local\/ns\/multi-cluster\/sa\/sleep-aks\"]<\/code><\/pre>\n\n\n\n<p>Deploy the the authorization policy with the below command:<\/p>\n\n\n\n<pre class=\"wp-block-code has-white-color has-black-background-color has-text-color has-background\"><code>Kubectl apply -f .\\demo-authorization.yaml<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Step 5.2 Verify L4 authorization policy implementation<\/h3>\n\n\n\n<p>After you apply the L4 policy, to verify if the policy is applicable, enter into the \u2018sleep\u2019 service pods of GKE and AKS respectively and try to curl <strong>helloworld <\/strong>service. You will realize you can access deployment-1 from sleep-service AKS only, and access from GKE will through RBAC denied error.&nbsp; Refer to the screenshots below.&nbsp;<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"604\" src=\"https:\/\/imesh.ai\/blog\/wp-content\/uploads\/2023\/04\/Istio-L4-authorization-policy-verification-logs-part-1-1024x604.png\" alt=\"Istio L4 authorization policy verification logs part-1\" class=\"wp-image-954\" srcset=\"https:\/\/imesh.ai\/blog\/wp-content\/uploads\/2023\/04\/Istio-L4-authorization-policy-verification-logs-part-1-1024x604.png 1024w, https:\/\/imesh.ai\/blog\/wp-content\/uploads\/2023\/04\/Istio-L4-authorization-policy-verification-logs-part-1-300x177.png 300w, https:\/\/imesh.ai\/blog\/wp-content\/uploads\/2023\/04\/Istio-L4-authorization-policy-verification-logs-part-1-768x453.png 768w, https:\/\/imesh.ai\/blog\/wp-content\/uploads\/2023\/04\/Istio-L4-authorization-policy-verification-logs-part-1-1536x906.png 1536w, https:\/\/imesh.ai\/blog\/wp-content\/uploads\/2023\/04\/Istio-L4-authorization-policy-verification-logs-part-1-2048x1208.png 2048w, https:\/\/imesh.ai\/blog\/wp-content\/uploads\/2023\/04\/Istio-L4-authorization-policy-verification-logs-part-1-400x236.png 400w, https:\/\/imesh.ai\/blog\/wp-content\/uploads\/2023\/04\/Istio-L4-authorization-policy-verification-logs-part-1-800x472.png 800w, https:\/\/imesh.ai\/blog\/wp-content\/uploads\/2023\/04\/Istio-L4-authorization-policy-verification-logs-part-1-1160x684.png 1160w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>Access from GKE will throw an error.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"465\" src=\"https:\/\/imesh.ai\/blog\/wp-content\/uploads\/2023\/04\/Istio-L4-authorization-policy-verification-logs-part-2-1024x465.png\" alt=\"Istio L4 authorization policy verification logs part-2\" class=\"wp-image-953\" srcset=\"https:\/\/imesh.ai\/blog\/wp-content\/uploads\/2023\/04\/Istio-L4-authorization-policy-verification-logs-part-2-1024x465.png 1024w, https:\/\/imesh.ai\/blog\/wp-content\/uploads\/2023\/04\/Istio-L4-authorization-policy-verification-logs-part-2-300x136.png 300w, https:\/\/imesh.ai\/blog\/wp-content\/uploads\/2023\/04\/Istio-L4-authorization-policy-verification-logs-part-2-768x349.png 768w, https:\/\/imesh.ai\/blog\/wp-content\/uploads\/2023\/04\/Istio-L4-authorization-policy-verification-logs-part-2-1536x698.png 1536w, https:\/\/imesh.ai\/blog\/wp-content\/uploads\/2023\/04\/Istio-L4-authorization-policy-verification-logs-part-2-2048x930.png 2048w, https:\/\/imesh.ai\/blog\/wp-content\/uploads\/2023\/04\/Istio-L4-authorization-policy-verification-logs-part-2-400x182.png 400w, https:\/\/imesh.ai\/blog\/wp-content\/uploads\/2023\/04\/Istio-L4-authorization-policy-verification-logs-part-2-800x363.png 800w, https:\/\/imesh.ai\/blog\/wp-content\/uploads\/2023\/04\/Istio-L4-authorization-policy-verification-logs-part-2-1160x527.png 1160w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"apply-l7\">Step 6:&nbsp; Apply L7 authorization policies to multicluster communication with Istio<\/h2>\n\n\n\n<p>Now you can apply L7 authorization policies to create rules on HTTP traffic. Below is the example of the L7 auth policy used to allow only HEAD and block all kinds of API access. The idea here is to allow traffic requests to deployment-v1 from sleep service in AKS, provided the HTTP request is placed using HEAD method.<\/p>\n\n\n\n<pre class=\"wp-block-code has-white-color has-black-background-color has-text-color has-background\"><code>apiVersion: security.istio.io\/v1beta1\nkind: AuthorizationPolicy\nmetadata:\n&nbsp; name: helloworld-policy\n&nbsp; namespace: multi-cluster\nspec:\n&nbsp; selector:\n&nbsp; &nbsp; matchLabels:\n&nbsp; &nbsp; &nbsp; version: v1\n&nbsp; action: ALLOW\n&nbsp; rules:\n&nbsp; - from:\n&nbsp; &nbsp; - source:\n&nbsp; &nbsp; &nbsp; &nbsp; principals: &#091;\"cluster.local\/ns\/multi-cluster\/sa\/sleep-aks\"]\n&nbsp; &nbsp; to:\n&nbsp; &nbsp; - operation:\n&nbsp; &nbsp; &nbsp; &nbsp; methods: &#091;\"HEAD\"]<\/code><\/pre>\n\n\n\n<p>Once you apply the L7 policy you can validate the traffic using logs which would look something like the below screenshot. Note, if you try to access the deployment-v1 service from AKS using direct curl (GET request) then it would fail. But if you use the HEAD method using curl -I helloworld\/hello , then we will get a response HTTP\/1.1 200 OK.&nbsp;<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"692\" src=\"https:\/\/imesh.ai\/blog\/wp-content\/uploads\/2023\/04\/Istio-L7-authorization-policy-verification-logs-1024x692.png\" alt=\"Istio L7 authorization policy verification logs\" class=\"wp-image-951\" srcset=\"https:\/\/imesh.ai\/blog\/wp-content\/uploads\/2023\/04\/Istio-L7-authorization-policy-verification-logs-1024x692.png 1024w, https:\/\/imesh.ai\/blog\/wp-content\/uploads\/2023\/04\/Istio-L7-authorization-policy-verification-logs-300x203.png 300w, https:\/\/imesh.ai\/blog\/wp-content\/uploads\/2023\/04\/Istio-L7-authorization-policy-verification-logs-768x519.png 768w, https:\/\/imesh.ai\/blog\/wp-content\/uploads\/2023\/04\/Istio-L7-authorization-policy-verification-logs-1536x1038.png 1536w, https:\/\/imesh.ai\/blog\/wp-content\/uploads\/2023\/04\/Istio-L7-authorization-policy-verification-logs-2048x1384.png 2048w, https:\/\/imesh.ai\/blog\/wp-content\/uploads\/2023\/04\/Istio-L7-authorization-policy-verification-logs-400x270.png 400w, https:\/\/imesh.ai\/blog\/wp-content\/uploads\/2023\/04\/Istio-L7-authorization-policy-verification-logs-800x541.png 800w, https:\/\/imesh.ai\/blog\/wp-content\/uploads\/2023\/04\/Istio-L7-authorization-policy-verification-logs-1160x784.png 1160w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>That\u2019s the end of the securing multicloud and multicluster application using Istio.<\/p>\n\n\n<!-- Ad space powered by WP AdCenter v2.5.7 - https:\/\/wpadcenter.com\/ --><div class=\"wpadcenter-ad-container\" ><div id=\"wpadcenter-ad-1448\" class=\" ad-placement  wpadcenter-alignnone alignnone\"><div class=\"wpadcenter-ad-inner\" ><a id=\"wpadcenter_ad\" data-value=1448 data-placement=\"\" href=\"https:\/\/24115860.fs1.hubspotusercontent-na1.net\/hubfs\/24115860\/IMESH%20Enterprise%20Istio%20Support%20.pdf\" target=\"_self\" class=\"wpadcenter-ad-inner__item\" ><img loading=\"lazy\" decoding=\"async\" width=\"641\" height=\"124\" src=\"https:\/\/imesh.ai\/blog\/wp-content\/uploads\/2023\/07\/IMESH-for-enterprise-Istio.png\" class=\"attachment-post-thumbnail size-post-thumbnail wp-post-image\" alt=\"IMESH for enterprise Istio\" srcset=\"https:\/\/imesh.ai\/blog\/wp-content\/uploads\/2023\/07\/IMESH-for-enterprise-Istio.png 641w, https:\/\/imesh.ai\/blog\/wp-content\/uploads\/2023\/07\/IMESH-for-enterprise-Istio-300x58.png 300w, https:\/\/imesh.ai\/blog\/wp-content\/uploads\/2023\/07\/IMESH-for-enterprise-Istio-400x77.png 400w\" sizes=\"(max-width: 641px) 100vw, 641px\" \/><\/a><\/div><\/div><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">Conclusion<\/h2>\n\n\n\n<p>If you want to implement Istio in large enterprises with numerous microservices across public or private cloud or VMs, then IMESH can help you. We ensure Istio performs optimally with guaranteed SLAs.&nbsp;<\/p>\n\n\n\n<p><a href=\"https:\/\/imesh.ai\/contact-us.html\">Contact us<\/a> for enterprise Istio support today.&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Today every application has microservices architecture where individual services are spread across<span class=\"excerpt-more\"><\/span><\/p>\n","protected":false},"author":7,"featured_media":959,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[62],"tags":[99,98,78,97,90],"class_list":["post-932","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-istio-operations","tag-aks","tag-gke","tag-istio-operations","tag-multicloud","tag-multicluster"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v26.7 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>How to Implement Istio in Multicloud and Multicluster<\/title>\n<meta name=\"description\" content=\"Learn how to set up Istio in multicloud GKE and AKS clusters. Find out how to use L4 and L7 authorization policies in Istio to secure cloud-native apps.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/imesh.ai\/blog\/how-to-implement-istio-in-multicloud-and-multicluster\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"How to Implement Istio in Multicloud and Multicluster\" \/>\n<meta property=\"og:description\" content=\"Learn how to set up Istio in multicloud GKE and AKS clusters. Find out how to use L4 and L7 authorization policies in Istio to secure cloud-native apps.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/imesh.ai\/blog\/how-to-implement-istio-in-multicloud-and-multicluster\/\" \/>\n<meta property=\"og:site_name\" content=\"IMESH\" \/>\n<meta property=\"article:published_time\" content=\"2023-04-12T03:16:22+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-02-14T05:42:22+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/imesh.ai\/blog\/wp-content\/uploads\/2023\/04\/Multicloud-and-Multicluster-security-with-Istio.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1280\" \/>\n\t<meta property=\"og:image:height\" content=\"720\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Ravi Verma\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Ravi Verma\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"10 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/imesh.ai\/blog\/how-to-implement-istio-in-multicloud-and-multicluster\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/imesh.ai\/blog\/how-to-implement-istio-in-multicloud-and-multicluster\/\"},\"author\":{\"name\":\"Ravi Verma\",\"@id\":\"https:\/\/imesh.ai\/blog\/#\/schema\/person\/de71147e8308a9de3e6e329890ba3fb8\"},\"headline\":\"How to Implement Istio in Multicloud and Multicluster (GKE\/AKS)\",\"datePublished\":\"2023-04-12T03:16:22+00:00\",\"dateModified\":\"2024-02-14T05:42:22+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/imesh.ai\/blog\/how-to-implement-istio-in-multicloud-and-multicluster\/\"},\"wordCount\":1818,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/imesh.ai\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/imesh.ai\/blog\/how-to-implement-istio-in-multicloud-and-multicluster\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/imesh.ai\/blog\/wp-content\/uploads\/2023\/04\/Multicloud-and-Multicluster-security-with-Istio.jpg\",\"keywords\":[\"aks\",\"gke\",\"Istio Operations\",\"multicloud\",\"multicluster\"],\"articleSection\":[\"Istio Operations\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/imesh.ai\/blog\/how-to-implement-istio-in-multicloud-and-multicluster\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/imesh.ai\/blog\/how-to-implement-istio-in-multicloud-and-multicluster\/\",\"url\":\"https:\/\/imesh.ai\/blog\/how-to-implement-istio-in-multicloud-and-multicluster\/\",\"name\":\"How to Implement Istio in Multicloud and Multicluster\",\"isPartOf\":{\"@id\":\"https:\/\/imesh.ai\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/imesh.ai\/blog\/how-to-implement-istio-in-multicloud-and-multicluster\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/imesh.ai\/blog\/how-to-implement-istio-in-multicloud-and-multicluster\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/imesh.ai\/blog\/wp-content\/uploads\/2023\/04\/Multicloud-and-Multicluster-security-with-Istio.jpg\",\"datePublished\":\"2023-04-12T03:16:22+00:00\",\"dateModified\":\"2024-02-14T05:42:22+00:00\",\"description\":\"Learn how to set up Istio in multicloud GKE and AKS clusters. Find out how to use L4 and L7 authorization policies in Istio to secure cloud-native apps.\",\"breadcrumb\":{\"@id\":\"https:\/\/imesh.ai\/blog\/how-to-implement-istio-in-multicloud-and-multicluster\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/imesh.ai\/blog\/how-to-implement-istio-in-multicloud-and-multicluster\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/imesh.ai\/blog\/how-to-implement-istio-in-multicloud-and-multicluster\/#primaryimage\",\"url\":\"https:\/\/imesh.ai\/blog\/wp-content\/uploads\/2023\/04\/Multicloud-and-Multicluster-security-with-Istio.jpg\",\"contentUrl\":\"https:\/\/imesh.ai\/blog\/wp-content\/uploads\/2023\/04\/Multicloud-and-Multicluster-security-with-Istio.jpg\",\"width\":1280,\"height\":720,\"caption\":\"Multicloud and Multicluster security with Istio\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/imesh.ai\/blog\/how-to-implement-istio-in-multicloud-and-multicluster\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/imesh.ai\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"How to Implement Istio in Multicloud and Multicluster (GKE\/AKS)\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/imesh.ai\/blog\/#website\",\"url\":\"https:\/\/imesh.ai\/blog\/\",\"name\":\"IMESH Blog\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\/\/imesh.ai\/blog\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/imesh.ai\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/imesh.ai\/blog\/#organization\",\"name\":\"IMESH\",\"url\":\"https:\/\/imesh.ai\/blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/imesh.ai\/blog\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/imesh.ai\/blog\/wp-content\/uploads\/2023\/03\/IMESH-LOGO-scaled.jpg\",\"contentUrl\":\"https:\/\/imesh.ai\/blog\/wp-content\/uploads\/2023\/03\/IMESH-LOGO-scaled.jpg\",\"width\":2560,\"height\":1665,\"caption\":\"IMESH\"},\"image\":{\"@id\":\"https:\/\/imesh.ai\/blog\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.linkedin.com\/company\/imeshai\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/imesh.ai\/blog\/#\/schema\/person\/de71147e8308a9de3e6e329890ba3fb8\",\"name\":\"Ravi Verma\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/imesh.ai\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/imesh.ai\/blog\/wp-content\/uploads\/2023\/03\/Ravi-Color-e1679567181569-142x150.jpg\",\"contentUrl\":\"https:\/\/imesh.ai\/blog\/wp-content\/uploads\/2023\/03\/Ravi-Color-e1679567181569-142x150.jpg\",\"caption\":\"Ravi Verma\"},\"description\":\"Ravi is the CTO of IMESH. Ravi, a technology visionary, brings 12+ years of experience in software development and cloud architecture in enterprise software. He has led R&amp;D divisions at Samsung and GE Healthcare and architected high-performance, secure and scalable systems for Baxter and Aricent. \u200bHis passion and interest lie in network and security. Ravi frequently discusses open-source technologies such as Kubernetes, Istio, and Envoy Proxy from the CNCF landscape.\",\"sameAs\":[\"https:\/\/imesh.ai\"],\"url\":\"https:\/\/imesh.ai\/blog\/author\/raviimesh-ai\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"How to Implement Istio in Multicloud and Multicluster","description":"Learn how to set up Istio in multicloud GKE and AKS clusters. Find out how to use L4 and L7 authorization policies in Istio to secure cloud-native apps.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/imesh.ai\/blog\/how-to-implement-istio-in-multicloud-and-multicluster\/","og_locale":"en_US","og_type":"article","og_title":"How to Implement Istio in Multicloud and Multicluster","og_description":"Learn how to set up Istio in multicloud GKE and AKS clusters. Find out how to use L4 and L7 authorization policies in Istio to secure cloud-native apps.","og_url":"https:\/\/imesh.ai\/blog\/how-to-implement-istio-in-multicloud-and-multicluster\/","og_site_name":"IMESH","article_published_time":"2023-04-12T03:16:22+00:00","article_modified_time":"2024-02-14T05:42:22+00:00","og_image":[{"width":1280,"height":720,"url":"https:\/\/imesh.ai\/blog\/wp-content\/uploads\/2023\/04\/Multicloud-and-Multicluster-security-with-Istio.jpg","type":"image\/jpeg"}],"author":"Ravi Verma","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Ravi Verma","Est. reading time":"10 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/imesh.ai\/blog\/how-to-implement-istio-in-multicloud-and-multicluster\/#article","isPartOf":{"@id":"https:\/\/imesh.ai\/blog\/how-to-implement-istio-in-multicloud-and-multicluster\/"},"author":{"name":"Ravi Verma","@id":"https:\/\/imesh.ai\/blog\/#\/schema\/person\/de71147e8308a9de3e6e329890ba3fb8"},"headline":"How to Implement Istio in Multicloud and Multicluster (GKE\/AKS)","datePublished":"2023-04-12T03:16:22+00:00","dateModified":"2024-02-14T05:42:22+00:00","mainEntityOfPage":{"@id":"https:\/\/imesh.ai\/blog\/how-to-implement-istio-in-multicloud-and-multicluster\/"},"wordCount":1818,"commentCount":0,"publisher":{"@id":"https:\/\/imesh.ai\/blog\/#organization"},"image":{"@id":"https:\/\/imesh.ai\/blog\/how-to-implement-istio-in-multicloud-and-multicluster\/#primaryimage"},"thumbnailUrl":"https:\/\/imesh.ai\/blog\/wp-content\/uploads\/2023\/04\/Multicloud-and-Multicluster-security-with-Istio.jpg","keywords":["aks","gke","Istio Operations","multicloud","multicluster"],"articleSection":["Istio Operations"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/imesh.ai\/blog\/how-to-implement-istio-in-multicloud-and-multicluster\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/imesh.ai\/blog\/how-to-implement-istio-in-multicloud-and-multicluster\/","url":"https:\/\/imesh.ai\/blog\/how-to-implement-istio-in-multicloud-and-multicluster\/","name":"How to Implement Istio in Multicloud and Multicluster","isPartOf":{"@id":"https:\/\/imesh.ai\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/imesh.ai\/blog\/how-to-implement-istio-in-multicloud-and-multicluster\/#primaryimage"},"image":{"@id":"https:\/\/imesh.ai\/blog\/how-to-implement-istio-in-multicloud-and-multicluster\/#primaryimage"},"thumbnailUrl":"https:\/\/imesh.ai\/blog\/wp-content\/uploads\/2023\/04\/Multicloud-and-Multicluster-security-with-Istio.jpg","datePublished":"2023-04-12T03:16:22+00:00","dateModified":"2024-02-14T05:42:22+00:00","description":"Learn how to set up Istio in multicloud GKE and AKS clusters. Find out how to use L4 and L7 authorization policies in Istio to secure cloud-native apps.","breadcrumb":{"@id":"https:\/\/imesh.ai\/blog\/how-to-implement-istio-in-multicloud-and-multicluster\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/imesh.ai\/blog\/how-to-implement-istio-in-multicloud-and-multicluster\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/imesh.ai\/blog\/how-to-implement-istio-in-multicloud-and-multicluster\/#primaryimage","url":"https:\/\/imesh.ai\/blog\/wp-content\/uploads\/2023\/04\/Multicloud-and-Multicluster-security-with-Istio.jpg","contentUrl":"https:\/\/imesh.ai\/blog\/wp-content\/uploads\/2023\/04\/Multicloud-and-Multicluster-security-with-Istio.jpg","width":1280,"height":720,"caption":"Multicloud and Multicluster security with Istio"},{"@type":"BreadcrumbList","@id":"https:\/\/imesh.ai\/blog\/how-to-implement-istio-in-multicloud-and-multicluster\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/imesh.ai\/blog\/"},{"@type":"ListItem","position":2,"name":"How to Implement Istio in Multicloud and Multicluster (GKE\/AKS)"}]},{"@type":"WebSite","@id":"https:\/\/imesh.ai\/blog\/#website","url":"https:\/\/imesh.ai\/blog\/","name":"IMESH Blog","description":"","publisher":{"@id":"https:\/\/imesh.ai\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/imesh.ai\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/imesh.ai\/blog\/#organization","name":"IMESH","url":"https:\/\/imesh.ai\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/imesh.ai\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/imesh.ai\/blog\/wp-content\/uploads\/2023\/03\/IMESH-LOGO-scaled.jpg","contentUrl":"https:\/\/imesh.ai\/blog\/wp-content\/uploads\/2023\/03\/IMESH-LOGO-scaled.jpg","width":2560,"height":1665,"caption":"IMESH"},"image":{"@id":"https:\/\/imesh.ai\/blog\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.linkedin.com\/company\/imeshai"]},{"@type":"Person","@id":"https:\/\/imesh.ai\/blog\/#\/schema\/person\/de71147e8308a9de3e6e329890ba3fb8","name":"Ravi Verma","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/imesh.ai\/blog\/#\/schema\/person\/image\/","url":"https:\/\/imesh.ai\/blog\/wp-content\/uploads\/2023\/03\/Ravi-Color-e1679567181569-142x150.jpg","contentUrl":"https:\/\/imesh.ai\/blog\/wp-content\/uploads\/2023\/03\/Ravi-Color-e1679567181569-142x150.jpg","caption":"Ravi Verma"},"description":"Ravi is the CTO of IMESH. Ravi, a technology visionary, brings 12+ years of experience in software development and cloud architecture in enterprise software. He has led R&amp;D divisions at Samsung and GE Healthcare and architected high-performance, secure and scalable systems for Baxter and Aricent. \u200bHis passion and interest lie in network and security. Ravi frequently discusses open-source technologies such as Kubernetes, Istio, and Envoy Proxy from the CNCF landscape.","sameAs":["https:\/\/imesh.ai"],"url":"https:\/\/imesh.ai\/blog\/author\/raviimesh-ai\/"}]}},"jetpack_featured_media_url":"https:\/\/imesh.ai\/blog\/wp-content\/uploads\/2023\/04\/Multicloud-and-Multicluster-security-with-Istio.jpg","_links":{"self":[{"href":"https:\/\/imesh.ai\/blog\/wp-json\/wp\/v2\/posts\/932","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/imesh.ai\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/imesh.ai\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/imesh.ai\/blog\/wp-json\/wp\/v2\/users\/7"}],"replies":[{"embeddable":true,"href":"https:\/\/imesh.ai\/blog\/wp-json\/wp\/v2\/comments?post=932"}],"version-history":[{"count":32,"href":"https:\/\/imesh.ai\/blog\/wp-json\/wp\/v2\/posts\/932\/revisions"}],"predecessor-version":[{"id":1918,"href":"https:\/\/imesh.ai\/blog\/wp-json\/wp\/v2\/posts\/932\/revisions\/1918"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/imesh.ai\/blog\/wp-json\/wp\/v2\/media\/959"}],"wp:attachment":[{"href":"https:\/\/imesh.ai\/blog\/wp-json\/wp\/v2\/media?parent=932"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/imesh.ai\/blog\/wp-json\/wp\/v2\/categories?post=932"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/imesh.ai\/blog\/wp-json\/wp\/v2\/tags?post=932"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}