---
title: "Canary Deployment With Istio | CloudGuys Blog"
description: "Istio service mesh is great for many things ie. Security, Multicluster and hybrid deployment, Circuit breaking, rate limiting, retries, service-to-service authentication/authorization, cluster-wide mTLS, and many more. But this demo will focus on the Canary deployment with Kubernetes Gateway API and Istio."
url: "https://cloudguys.io/blog/canary-deployment-with-istio"
language: "en"
image: "https://cloudguys.io/_astro/cover.BM9W2AsZ.webp"
published: "2026-07-17T00:00:00.000Z"
modified: "2026-07-17T00:00:00.000Z"
---

ENGINEERING NOTES / DEVOPS

# Canary Deployment With Istio

Istio service mesh is great for many things ie. Security, Multicluster and hybrid deployment, Circuit breaking, rate limiting, retries, service-to-service authentication/authorization, cluster-wide mTLS, and many more. But this demo will focus on the Canary deployment with Kubernetes Gateway API and Istio.

Agrohi Team · · · July 17, 2026

![Canary Deployment With Istio](https://cloudguys.io/_astro/cover.BM9W2AsZ_1DjDaL.webp)

Istio service mesh is great for many things ie. Security, Multicluster and hybrid deployment, Circuit breaking, rate limiting, retries, service-to-service authentication/authorization, cluster-wide mTLS, and many more. But this demo will focus on the Canary deployment with Kubernetes Gateway API and Istio.

![](https://cloudguys.io/_astro/img-1.Y5aBDvD5_Z1dmpsf.webp)

Canary Deployment Flow

## Clone The Repo

## [GitHub - by-sabbir/canary-with-istio: Canary/ Blue-Green Deployment demo with Istio service mesh…](https://github.com/by-sabbir/canary-with-istio?source=post_page-----aa40cacf22b4---------------------------------------)

### [Canary/ Blue-Green Deployment demo with Istio service mesh for kubernetes - GitHub - by-sabbir/canary-with-istio…](https://github.com/by-sabbir/canary-with-istio?source=post_page-----aa40cacf22b4---------------------------------------)

[github.com](http://github.com/)

Directory Structure

```plaintext
.
├── egcom                   # Helm Chart: full microservice stack
│   └── applications
│       ├── charts
│       └── templates
└── k8s-config              # Backing Services (Mongo ReplicaSet and RMQ)       
│    ├── mongodb
│    └── rmq
├── kind-cluster.yaml       # Cluster config
└── metallb-conf.yaml       # BareMetal Load Balancer
```

## System Architecture

The purpose of this demo is to simulate a simple e-commerce event-driven microservice architecture.

Press enter or click to view image in full size

![](https://cloudguys.io/_astro/img-2.eujQsp7B_21lR2f.webp)

High-Level Diagram for the demo

## Kind cluster initiation

If you don’t already have Kind installed, follow the [link](https://kind.sigs.k8s.io/docs/user/quick-start/)

```plaintext
kind create cluster --config=kind-cluster.yaml
```

This will create a kuberntes cluster with 1 `control-plane` and 2`nodes`

## Install Istio Ingress Gateway CRD

```plaintext
kubectl get crd gateways.gateway.networking.k8s.io &> /dev/null || \
  { kubectl kustomize "github.com/kubernetes-sigs/gateway-api/config/crd?ref=v0.8.0" | kubectl apply -f -; }
```

## Istio Initializing

```plaintext
curl -L https://istio.io/downloadIstio | sh -
# export the istio path
istioctl install --set profile=demo -y
```

## Install and Configure MetalLB

```plaintext
kubectl apply -f https://raw.githubusercontent.com/metallb/metallb/v0.13.7/config/manifests/metallb-native.yaml
```

-   Setup address pool for LB

```plaintext
docker network inspect -f '{{ (index .IPAM.Config 0).Gateway }}' kind 
```

then configure `metallb-conf.yaml` accordingly and run `k apply`

## Install RabbitMQ CRDs

```plaintext
kubectl apply -f "https://github.com/rabbitmq/cluster-operator/releases/latest/download/cluster-operator.yml"
```

### Configure RMQ

Drop to RabbitMQ Pod shell and run

```plaintext
k exec -it rabbitmq-server-0 -- bash
```

```plaintext
rabbitmqctl add_user admin adminrabbitmqctl set_permissions --vhost / admin '.*' '.*' '.*'rabbitmqctl set_user_tags admin administrator
```

This will create an admin user Or get the default password from Cli

```plaintext
# Get Username
kubectl get secret rabbitmq-default-user -o jsonpath="{.data.username}" | base64 --decode
# Get Password
kubectl get secret rabbitmq-default-user -o jsonpath="{.data.password}" | base64 --decode
```

## Install Mongo

```plaintext
k apply -f -r k8s-config/mongod
```

### Configure Mongo ReplicaSet

-   Drop to Mongo shell `k exec -it mongo-0 -- mongosh`

```plaintext
rs.initiate()
var cfg = rs.conf()
```

```plaintext
cfg.members[0].host="mongo-0.mongo.default.svc.cluster.local:27017"
rs.reconfig(cfg)
rs.add("mongo-1.mongo.default.svc.cluster.local:27017")
rs.add("mongo-2.mongo.default.svc.cluster.local:27017")
```

-   Check the replication status `rs.status()`

## Installing the application via helm

Update `egcom/applications/templates/egcom-cm.yaml` ConfigMap values with the MongoDB and RMQ creds.

```plaintext
k create ns egcom
```

```plaintext
k label namespace default istio-injection=enabledhelm install egcom ./applications -n egcom
```

#Istio · #kuberntes · #Zero Downtime

A FRESH PERSPECTIVE ON YOUR CLOUD

## Great engineering starts  
with a good conversation.

Let’s talk about what’s working, what’s slowing you down, and what comes next.

[Talk to an engineer ↗](mailto:hello@agrohi.com?subject=CloudGuys%20assessment%20enquiry)

## Structured data

```json
[
  {
    "@context": "https://schema.org",
    "@type": "Organization",
    "@id": "https://cloudguys.io/#organization",
    "name": "CloudGuys",
    "url": "https://cloudguys.io/",
    "logo": {
      "@type": "ImageObject",
      "url": "https://cloudguys.io/assets/logo.png",
      "width": 512,
      "height": 512
    },
    "image": "https://cloudguys.io/assets/og-image.png",
    "description": "Security assessments, cloud architecture reviews, and practical remediation across AWS, Google Cloud, Azure, Kubernetes, and infrastructure as code.",
    "email": "hello@agrohi.com",
    "slogan": "Know your risks. Build a stronger cloud.",
    "areaServed": "Worldwide",
    "knowsAbout": [
      "DevOps",
      "Kubernetes",
      "Terraform",
      "Cloud migration",
      "Cloud cost optimization",
      "GitOps",
      "Site reliability engineering",
      "Kubernetes dashboard",
      "AI SRE",
      "Kubernetes troubleshooting",
      "AWS",
      "Google Cloud",
      "Azure"
    ],
    "contactPoint": {
      "@type": "ContactPoint",
      "contactType": "sales",
      "email": "hello@agrohi.com",
      "availableLanguage": [
        "English"
      ],
      "areaServed": "Worldwide"
    },
    "sameAs": [
      "https://www.linkedin.com/company/agrohitech",
      "https://berth.agrohi.com"
    ],
    "owns": {
      "@type": "SoftwareApplication",
      "@id": "https://berth.agrohi.com/#software",
      "name": "Berth",
      "applicationCategory": "DeveloperApplication",
      "operatingSystem": "Kubernetes",
      "url": "https://berth.agrohi.com",
      "description": "Berth is a self-hosted Kubernetes dashboard with a read-only AI SRE: endpoint health, capacity planning, guided app exposure, and evidence-based troubleshooting, run in your own cluster."
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebSite",
    "@id": "https://cloudguys.io/#website",
    "url": "https://cloudguys.io/",
    "name": "CloudGuys",
    "description": "Security and cloud consultancy helping organizations assess risks, improve architecture, and verify remediation.",
    "publisher": {
      "@id": "https://cloudguys.io/#organization"
    },
    "inLanguage": "en"
  },
  {
    "@context": "https://schema.org",
    "@type": "BlogPosting",
    "@id": "https://cloudguys.io/blog/canary-deployment-with-istio#article",
    "headline": "Canary Deployment With Istio",
    "description": "Istio service mesh is great for many things ie. Security, Multicluster and hybrid deployment, Circuit breaking, rate limiting, retries, service-to-service authentication/authorization, cluster-wide mTLS, and many more. But this demo will focus on the Canary deployment with Kubernetes Gateway API and Istio.",
    "image": "https://cloudguys.io/_astro/cover.BM9W2AsZ.webp",
    "datePublished": "2026-07-17T00:00:00.000Z",
    "dateModified": "2026-07-17T00:00:00.000Z",
    "author": {
      "@type": "Organization",
      "name": "Agrohi Team",
      "url": "https://cloudguys.io/"
    },
    "publisher": {
      "@id": "https://cloudguys.io/#organization"
    },
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://cloudguys.io/blog/canary-deployment-with-istio"
    },
    "articleSection": "DevOps",
    "keywords": "Istio, kuberntes, Zero Downtime",
    "inLanguage": "en"
  },
  {
    "@context": "https://schema.org",
    "@type": "BreadcrumbList",
    "itemListElement": [
      {
        "@type": "ListItem",
        "position": 1,
        "name": "Home",
        "item": "https://cloudguys.io/"
      },
      {
        "@type": "ListItem",
        "position": 2,
        "name": "Blog",
        "item": "https://cloudguys.io/blog"
      },
      {
        "@type": "ListItem",
        "position": 3,
        "name": "Canary Deployment With Istio",
        "item": "https://cloudguys.io/blog/canary-deployment-with-istio"
      }
    ]
  }
]
```
