<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Surendra Kumar</title>
    <description>The latest articles on DEV Community by Surendra Kumar (@dearcomrade).</description>
    <link>https://dev.to/dearcomrade</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3370075%2F6550339f-cbab-40d1-9f03-decf739494b2.png</url>
      <title>DEV Community: Surendra Kumar</title>
      <link>https://dev.to/dearcomrade</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/dearcomrade"/>
    <language>en</language>
    <item>
      <title>The On-Premise Kubernetes Challenge: A Tale of Two Traffics</title>
      <dc:creator>Surendra Kumar</dc:creator>
      <pubDate>Sun, 20 Jul 2025 03:40:27 +0000</pubDate>
      <link>https://dev.to/dearcomrade/the-on-premise-kubernetes-challenge-a-tale-of-two-traffics-2m6e</link>
      <guid>https://dev.to/dearcomrade/the-on-premise-kubernetes-challenge-a-tale-of-two-traffics-2m6e</guid>
      <description>&lt;h2&gt;
  
  
  Service Mesh: Solving On-Premises Kubernetes Networking
&lt;/h2&gt;

&lt;p&gt;When you're managing your own Kubernetes cluster on-premises, you have unmatched control—but also full responsibility for everything, especially networking. In modern microservices architectures, this responsibility is magnified by the sheer volume and complexity of service-to-service communication.&lt;/p&gt;

&lt;h3&gt;
  
  
  Two Types of Kubernetes Traffic
&lt;/h3&gt;

&lt;p&gt;Kubernetes networking is commonly divided into:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;North-South Traffic:&lt;/strong&gt; Flows between the outside world and your cluster. Managed by Ingress Controllers.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;East-West Traffic:&lt;/strong&gt; Internal service-to-service communication within the cluster. This is where service meshes excel.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Distribution between these traffic types in a typical microservices setup emphasizes just how critical managing east-west traffic is:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Firbhhgi0c8yctv9d4i1w.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Firbhhgi0c8yctv9d4i1w.png" alt="Distribution of Kubernetes Traffic: North-South vs East-West" width="800" height="533"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Distribution of Kubernetes Traffic: North-South vs East-West&lt;/p&gt;

&lt;h2&gt;
  
  
  The On-Premise Struggle Without a Service Mesh
&lt;/h2&gt;

&lt;p&gt;As your application scales, internal communication patterns get intricate. Without a service mesh, developers and operators are left to handle east-west traffic management manually, introducing several challenges:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Complex and Inconsistent Traffic Management:&lt;/strong&gt; Strategies like canary releases, retries, or circuit breaking must be painstakingly hand-coded for each service.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Security Vulnerabilities:&lt;/strong&gt; Each internal connection requires manual TLS setup and policy enforcement, leading to “soft target” vulnerabilities.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Opaque Observability:&lt;/strong&gt; Debugging and monitoring require jumping between siloed logs—tracing a request becomes guesswork.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Developer Overload:&lt;/strong&gt; Teams waste time implementing infrastructure features rather than business logic.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The impact of these challenges can be visualized as follows:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fj6vkxo0gys86q8fc84iz.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fj6vkxo0gys86q8fc84iz.png" alt="Challenges of Managing East-West Traffic Without a Service Mesh" width="800" height="533"&gt;&lt;/a&gt;&lt;br&gt;
Challenges of Managing East-West Traffic Without a Service Mesh&lt;/p&gt;

&lt;h2&gt;
  
  
  Enter the Service Mesh
&lt;/h2&gt;

&lt;p&gt;A &lt;strong&gt;service mesh&lt;/strong&gt; is an infrastructure layer designed to manage east-west traffic through sidecar proxies—tiny, transparent network helpers injected alongside each service. The mesh handles critical concerns centrally and consistently, freeing developers and operators from networking boilerplate.&lt;/p&gt;

&lt;h3&gt;
  
  
  How a Service Mesh Helps
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Feature&lt;/th&gt;
&lt;th&gt;Practical Benefit&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Advanced Traffic Control&lt;/td&gt;
&lt;td&gt;Fine-tuned routing, canary deployments, intelligent load balancing, circuit breaking, and more&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Zero-Trust Security&lt;/td&gt;
&lt;td&gt;Automatic mutual TLS, identity-driven access policies, consistent enforcement across services&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Deep Observability&lt;/td&gt;
&lt;td&gt;End-to-end tracing, real-time metrics (latency, errors, traffic), and topology visualization&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Developer Empowerment&lt;/td&gt;
&lt;td&gt;Reduced boilerplate lets devs focus on features, not infrastructure tools&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  Visualizing Service Mesh Effectiveness
&lt;/h2&gt;

&lt;p&gt;A service mesh isn’t just a technical luxury—it radically improves cluster resilience, security, and developer happiness for all but the simplest deployments.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fb5f9ub0xftujxy4bwope.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fb5f9ub0xftujxy4bwope.png" alt="Effectiveness of Service Mesh Features in Addressing On-Premises Kubernetes Challenges" width="800" height="533"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Effectiveness of Service Mesh Features in Addressing On-Premises Kubernetes Challenges&lt;/p&gt;

&lt;h2&gt;
  
  
  Verdict: When Do You Need a Service Mesh?
&lt;/h2&gt;

&lt;p&gt;For small, simple apps, manual traffic management might suffice. But as complexity grows, so does risk. A service mesh offers a robust, production-proven solution, trading a modest increase in stack complexity for vastly improved reliability, visibility, and security.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Bottom Line:&lt;/strong&gt; In on-premise Kubernetes, a service mesh transforms internal networking from a source of struggle to a foundation for sustainable innovation.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;⁂&lt;/p&gt;

</description>
      <category>kubernetes</category>
      <category>servicemesh</category>
      <category>ingres</category>
      <category>egress</category>
    </item>
    <item>
      <title>CentOS 7 (Worker Node)</title>
      <dc:creator>Surendra Kumar</dc:creator>
      <pubDate>Sun, 20 Jul 2025 03:28:19 +0000</pubDate>
      <link>https://dev.to/dearcomrade/centos-7-worker-node-eca</link>
      <guid>https://dev.to/dearcomrade/centos-7-worker-node-eca</guid>
      <description>&lt;h2&gt;
  
  
  CentOS 7 Kubernetes Worker Node Setup - Validation &amp;amp; Corrections
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. Repository Configuration
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Backup existing repo files&lt;/span&gt;
&lt;span class="nb"&gt;sudo cp&lt;/span&gt; &lt;span class="nt"&gt;-r&lt;/span&gt; /etc/yum.repos.d /etc/yum.repos.d.backup

&lt;span class="c"&gt;# Update all CentOS repo files to use vault&lt;/span&gt;
&lt;span class="nb"&gt;sudo sed&lt;/span&gt; &lt;span class="nt"&gt;-i&lt;/span&gt; &lt;span class="s1"&gt;'s/mirrorlist/#mirrorlist/g'&lt;/span&gt; /etc/yum.repos.d/CentOS-&lt;span class="k"&gt;*&lt;/span&gt;
&lt;span class="nb"&gt;sudo sed&lt;/span&gt; &lt;span class="nt"&gt;-i&lt;/span&gt; &lt;span class="s1"&gt;'s|#baseurl=http://mirror.centos.org|baseurl=http://vault.centos.org|g'&lt;/span&gt; /etc/yum.repos.d/CentOS-&lt;span class="k"&gt;*&lt;/span&gt;

&lt;span class="c"&gt;# Clean yum cache&lt;/span&gt;
&lt;span class="nb"&gt;sudo &lt;/span&gt;yum clean all
&lt;span class="nb"&gt;sudo &lt;/span&gt;yum makecache
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Status&lt;/strong&gt;: - CentOS 7 is EOL, so vault repositories are necessary.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. System Package Installation
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Install required system packages&lt;/span&gt;
&lt;span class="nb"&gt;sudo &lt;/span&gt;yum &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;-y&lt;/span&gt; yum-utils device-mapper-persistent-data lvm2
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Status&lt;/strong&gt;: - These are required for container runtime.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Kubernetes Repository Setup
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;cat&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span class="no"&gt;EOF&lt;/span&gt;&lt;span class="sh"&gt; | sudo tee /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://pkgs.k8s.io/core:/stable:/v1.32/rpm/
enabled=1
gpgcheck=1
gpgkey=https://pkgs.k8s.io/core:/stable:/v1.32/rpm/repodata/repomd.xml.key
exclude=kubelet kubeadm kubectl cri-tools kubernetes-cni
&lt;/span&gt;&lt;span class="no"&gt;EOF
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Status&lt;/strong&gt;: - Uses the new Kubernetes repository format.&lt;/p&gt;

&lt;h2&gt;
  
  
  ⚠️ Issues Found &amp;amp; Corrections
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. Container Runtime Configuration
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Issue&lt;/strong&gt;: Script installs &lt;code&gt;containerd.io&lt;/code&gt; but doesn't configure it properly for Kubernetes.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Correction&lt;/strong&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Install containerd&lt;/span&gt;
&lt;span class="nb"&gt;sudo &lt;/span&gt;yum &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;-y&lt;/span&gt; containerd.io

&lt;span class="c"&gt;# Configure containerd for Kubernetes&lt;/span&gt;
&lt;span class="nb"&gt;sudo mkdir&lt;/span&gt; &lt;span class="nt"&gt;-p&lt;/span&gt; /etc/containerd
containerd config default | &lt;span class="nb"&gt;sudo tee&lt;/span&gt; /etc/containerd/config.toml

&lt;span class="c"&gt;# Enable SystemdCgroup (CRITICAL for Kubernetes)&lt;/span&gt;
&lt;span class="nb"&gt;sudo sed&lt;/span&gt; &lt;span class="nt"&gt;-i&lt;/span&gt; &lt;span class="s1"&gt;'s/SystemdCgroup = false/SystemdCgroup = true/'&lt;/span&gt; /etc/containerd/config.toml

&lt;span class="c"&gt;# Restart and enable containerd&lt;/span&gt;
&lt;span class="nb"&gt;sudo &lt;/span&gt;systemctl restart containerd
&lt;span class="nb"&gt;sudo &lt;/span&gt;systemctl &lt;span class="nb"&gt;enable &lt;/span&gt;containerd
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  2. Kubernetes Package Installation
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Issue&lt;/strong&gt;: Version pinning may cause issues if exact version isn't available.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Correction&lt;/strong&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Install Kubernetes components (use --nogpgcheck if GPG issues occur)&lt;/span&gt;
&lt;span class="nb"&gt;sudo &lt;/span&gt;yum &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;-y&lt;/span&gt; kubelet kubeadm kubectl &lt;span class="nt"&gt;--disableexcludes&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;kubernetes

&lt;span class="c"&gt;# Enable kubelet (don't start yet - will fail until joined)&lt;/span&gt;
&lt;span class="nb"&gt;sudo &lt;/span&gt;systemctl &lt;span class="nb"&gt;enable &lt;/span&gt;kubelet
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  3. System Configuration Issues
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Issue&lt;/strong&gt;: Several sysctl parameters are duplicated and kernel modules aren't properly configured.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Correction&lt;/strong&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Load required kernel modules&lt;/span&gt;
&lt;span class="nb"&gt;sudo &lt;/span&gt;modprobe overlay
&lt;span class="nb"&gt;sudo &lt;/span&gt;modprobe br_netfilter

&lt;span class="c"&gt;# Make modules persistent&lt;/span&gt;
&lt;span class="nb"&gt;cat&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span class="no"&gt;EOF&lt;/span&gt;&lt;span class="sh"&gt; | sudo tee /etc/modules-load.d/k8s.conf
overlay
br_netfilter
&lt;/span&gt;&lt;span class="no"&gt;EOF

&lt;/span&gt;&lt;span class="c"&gt;# Set sysctl parameters&lt;/span&gt;
&lt;span class="nb"&gt;cat&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span class="no"&gt;EOF&lt;/span&gt;&lt;span class="sh"&gt; | sudo tee /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-iptables = 1
net.bridge.bridge-nf-call-ip6tables = 1
net.ipv4.ip_forward = 1
&lt;/span&gt;&lt;span class="no"&gt;EOF

&lt;/span&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;sysctl &lt;span class="nt"&gt;--system&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  4. CNI Configuration Issues
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Issue&lt;/strong&gt;: CNI version might be outdated, and worker nodes don't need manual CNI configuration.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Correction&lt;/strong&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# CNI will be configured automatically by the CNI plugin (Flannel/Calico)&lt;/span&gt;
&lt;span class="c"&gt;# Only ensure CNI directories exist&lt;/span&gt;
&lt;span class="nb"&gt;sudo mkdir&lt;/span&gt; &lt;span class="nt"&gt;-p&lt;/span&gt; /etc/cni/net.d
&lt;span class="nb"&gt;sudo mkdir&lt;/span&gt; &lt;span class="nt"&gt;-p&lt;/span&gt; /opt/cni/bin
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  5. Kubelet Configuration
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Issue&lt;/strong&gt;: Manual kubelet configuration is unnecessary and potentially problematic.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Correction&lt;/strong&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Remove manual kubelet configuration - kubeadm will handle this&lt;/span&gt;
&lt;span class="c"&gt;# The kubelet will be configured automatically during join&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  🔧 Recommended Complete Setup Script
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;#!/bin/bash&lt;/span&gt;

&lt;span class="c"&gt;# 1. Configure CentOS 7 repositories (EOL)&lt;/span&gt;
&lt;span class="nb"&gt;sudo cp&lt;/span&gt; &lt;span class="nt"&gt;-r&lt;/span&gt; /etc/yum.repos.d /etc/yum.repos.d.backup
&lt;span class="nb"&gt;sudo sed&lt;/span&gt; &lt;span class="nt"&gt;-i&lt;/span&gt; &lt;span class="s1"&gt;'s/mirrorlist/#mirrorlist/g'&lt;/span&gt; /etc/yum.repos.d/CentOS-&lt;span class="k"&gt;*&lt;/span&gt;
&lt;span class="nb"&gt;sudo sed&lt;/span&gt; &lt;span class="nt"&gt;-i&lt;/span&gt; &lt;span class="s1"&gt;'s|#baseurl=http://mirror.centos.org|baseurl=http://vault.centos.org|g'&lt;/span&gt; /etc/yum.repos.d/CentOS-&lt;span class="k"&gt;*&lt;/span&gt;
&lt;span class="nb"&gt;sudo &lt;/span&gt;yum clean all &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="nb"&gt;sudo &lt;/span&gt;yum makecache

&lt;span class="c"&gt;# 2. Install required packages&lt;/span&gt;
&lt;span class="nb"&gt;sudo &lt;/span&gt;yum &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;-y&lt;/span&gt; yum-utils device-mapper-persistent-data lvm2

&lt;span class="c"&gt;# 3. Install container runtime&lt;/span&gt;
&lt;span class="nb"&gt;sudo &lt;/span&gt;yum &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;-y&lt;/span&gt; containerd.io

&lt;span class="c"&gt;# 4. Configure containerd&lt;/span&gt;
&lt;span class="nb"&gt;sudo mkdir&lt;/span&gt; &lt;span class="nt"&gt;-p&lt;/span&gt; /etc/containerd
containerd config default | &lt;span class="nb"&gt;sudo tee&lt;/span&gt; /etc/containerd/config.toml
&lt;span class="nb"&gt;sudo sed&lt;/span&gt; &lt;span class="nt"&gt;-i&lt;/span&gt; &lt;span class="s1"&gt;'s/SystemdCgroup = false/SystemdCgroup = true/'&lt;/span&gt; /etc/containerd/config.toml
&lt;span class="nb"&gt;sudo &lt;/span&gt;systemctl restart containerd
&lt;span class="nb"&gt;sudo &lt;/span&gt;systemctl &lt;span class="nb"&gt;enable &lt;/span&gt;containerd

&lt;span class="c"&gt;# 5. Add Kubernetes repository&lt;/span&gt;
&lt;span class="nb"&gt;cat&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span class="no"&gt;EOF&lt;/span&gt;&lt;span class="sh"&gt; | sudo tee /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://pkgs.k8s.io/core:/stable:/v1.32/rpm/
enabled=1
gpgcheck=1
gpgkey=https://pkgs.k8s.io/core:/stable:/v1.32/rpm/repodata/repomd.xml.key
exclude=kubelet kubeadm kubectl cri-tools kubernetes-cni
&lt;/span&gt;&lt;span class="no"&gt;EOF

&lt;/span&gt;&lt;span class="c"&gt;# 6. Install Kubernetes components&lt;/span&gt;
&lt;span class="nb"&gt;sudo &lt;/span&gt;yum &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;-y&lt;/span&gt; kubelet kubeadm kubectl &lt;span class="nt"&gt;--disableexcludes&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;kubernetes
&lt;span class="nb"&gt;sudo &lt;/span&gt;systemctl &lt;span class="nb"&gt;enable &lt;/span&gt;kubelet

&lt;span class="c"&gt;# 7. Configure system&lt;/span&gt;
&lt;span class="nb"&gt;sudo &lt;/span&gt;swapoff &lt;span class="nt"&gt;-a&lt;/span&gt;
&lt;span class="nb"&gt;sudo sed&lt;/span&gt; &lt;span class="nt"&gt;-i&lt;/span&gt; &lt;span class="s1"&gt;'/ swap / s/^\(.*\)$/#\1/g'&lt;/span&gt; /etc/fstab

&lt;span class="c"&gt;# 8. Load kernel modules&lt;/span&gt;
&lt;span class="nb"&gt;sudo &lt;/span&gt;modprobe overlay
&lt;span class="nb"&gt;sudo &lt;/span&gt;modprobe br_netfilter

&lt;span class="nb"&gt;cat&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span class="no"&gt;EOF&lt;/span&gt;&lt;span class="sh"&gt; | sudo tee /etc/modules-load.d/k8s.conf
overlay
br_netfilter
&lt;/span&gt;&lt;span class="no"&gt;EOF

&lt;/span&gt;&lt;span class="c"&gt;# 9. Configure sysctl&lt;/span&gt;
&lt;span class="nb"&gt;cat&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span class="no"&gt;EOF&lt;/span&gt;&lt;span class="sh"&gt; | sudo tee /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-iptables = 1
net.bridge.bridge-nf-call-ip6tables = 1
net.ipv4.ip_forward = 1
&lt;/span&gt;&lt;span class="no"&gt;EOF

&lt;/span&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;sysctl &lt;span class="nt"&gt;--system&lt;/span&gt;

&lt;span class="c"&gt;# 10. Configure firewall&lt;/span&gt;
&lt;span class="nb"&gt;sudo &lt;/span&gt;systemctl stop firewalld
&lt;span class="nb"&gt;sudo &lt;/span&gt;systemctl disable firewalld

&lt;span class="c"&gt;# 11. Create CNI directories&lt;/span&gt;
&lt;span class="nb"&gt;sudo mkdir&lt;/span&gt; &lt;span class="nt"&gt;-p&lt;/span&gt; /etc/cni/net.d
&lt;span class="nb"&gt;sudo mkdir&lt;/span&gt; &lt;span class="nt"&gt;-p&lt;/span&gt; /opt/cni/bin

&lt;span class="c"&gt;# 12. Join the cluster (replace with your actual join command)&lt;/span&gt;
&lt;span class="c"&gt;# sudo kubeadm join &amp;lt;master-ip&amp;gt;:6443 --token &amp;lt;token&amp;gt; --discovery-token-ca-cert-hash sha256:&amp;lt;hash&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  🚨 Critical Points
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Don't start kubelet before joining&lt;/strong&gt; - It will fail until the node joins the cluster&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;SystemdCgroup = true&lt;/strong&gt; is essential for containerd with Kubernetes&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Firewall must be disabled&lt;/strong&gt; or properly configured for Kubernetes ports&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Swap must be disabled&lt;/strong&gt; completely&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Use exact join command&lt;/strong&gt; from your master node&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Verify containerd is running&lt;/strong&gt; before attempting to join&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  🔍 Verification Steps
&lt;/h2&gt;

&lt;p&gt;After setup, verify before joining:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Check containerd status&lt;/span&gt;
&lt;span class="nb"&gt;sudo &lt;/span&gt;systemctl status containerd

&lt;span class="c"&gt;# Check kubelet status (should be inactive until joined)&lt;/span&gt;
&lt;span class="nb"&gt;sudo &lt;/span&gt;systemctl status kubelet

&lt;span class="c"&gt;# Verify swap is disabled&lt;/span&gt;
free &lt;span class="nt"&gt;-h&lt;/span&gt;

&lt;span class="c"&gt;# Check if required kernel modules are loaded&lt;/span&gt;
lsmod | &lt;span class="nb"&gt;grep &lt;/span&gt;br_netfilter
lsmod | &lt;span class="nb"&gt;grep &lt;/span&gt;overlay
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



</description>
      <category>kubernetes</category>
    </item>
    <item>
      <title>Service Mesh</title>
      <dc:creator>Surendra Kumar</dc:creator>
      <pubDate>Sat, 19 Jul 2025 14:04:01 +0000</pubDate>
      <link>https://dev.to/dearcomrade/service-mesh-34ka</link>
      <guid>https://dev.to/dearcomrade/service-mesh-34ka</guid>
      <description>&lt;p&gt;Imagine you are an engineer at a fast-growing &lt;strong&gt;e-commerce company&lt;/strong&gt; like &lt;strong&gt;Amazon&lt;/strong&gt;. Your team started with a &lt;strong&gt;monolithic application&lt;/strong&gt;—a single, large codebase handling user requests, inventory, and payments. As the company grew, you migrated to a micro-services architecture with separate services for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;User Service&lt;/strong&gt; (handles user accounts)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Order Service&lt;/strong&gt; (processes orders)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Inventory Service&lt;/strong&gt; (tracks stock)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Payment Service&lt;/strong&gt; (handles payments)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;At first, everything ran smoothly. However, as complexity increased, several problems emerged:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;🔴 &lt;strong&gt;Problem #0: Authentication &amp;amp; Authorization&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Each micro-service must handle &lt;strong&gt;logins &amp;amp; permissions separately&lt;/strong&gt;, resulting in duplicated and inconsistent security logic.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;🔴 &lt;strong&gt;Problem #1: Hard-to-Debug Failures&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;PopCustomers report orders failing randomly. Logs indicate errors in the Payment Service, but it’s unclear whether these issues are from network glitches, load spikes, or faulty service updates.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;🔴 &lt;strong&gt;Problem #2: Security Risks&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Sensitive data, like payment details, is transmitted between services &lt;strong&gt;unencrypted&lt;/strong&gt;. Without proper encryption, interception becomes a major risk.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;🔴 &lt;strong&gt;Problem #3: Load Balancing Issues&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The Order Service is overwhelmed while the Inventory Service remains underutilized. Efficient traffic distribution is missing.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;🔴 &lt;strong&gt;Problem #4: Slow Rollouts &amp;amp; Deployments&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Introducing a new version of the Payment Service poses a risk. Testing it on only 10% of users is ideal, but gradual rollouts without downtime are challenging.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This growing complexity makes managing your microservices &lt;strong&gt;painful&lt;/strong&gt;. This is where a &lt;strong&gt;Service Mesh&lt;/strong&gt; comes in! 🚀&lt;/p&gt;




&lt;h2&gt;
  
  
  1. Why Do You Need a Service Mesh?
&lt;/h2&gt;

&lt;p&gt;Before service meshes, organizations manually managed service-to-service communication using:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Custom code in each micro-service&lt;/li&gt;
&lt;li&gt;Reverse proxies (e.g., NGINX, HAProxy)&lt;/li&gt;
&lt;li&gt;Load balancers&lt;/li&gt;
&lt;li&gt;API gateways&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;While this approach worked, it had serious limitations:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;No standardized way&lt;/strong&gt; to handle retries, timeouts, and failures.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Security risks&lt;/strong&gt; due to unencrypted communication.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Limited observability&lt;/strong&gt; making it hard to trace requests across multiple services.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Real-World Example: Netflix
&lt;/h3&gt;

&lt;p&gt;Netflix’s microservices faced issues like:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Slow response times&lt;/strong&gt; because of ineffective traffic control.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;DDoS threats&lt;/strong&gt; due to the absence of a central security layer.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Authentication issues&lt;/strong&gt; from each microservice handling its own login logic.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fo7a0lqxj61hyxsh1kr7s.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fo7a0lqxj61hyxsh1kr7s.png" alt="Netflix Implementation" width="800" height="420"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://netflixtechblog.com/zero-configuration-service-mesh-with-on-demand-cluster-discovery-ac6483b52a51" rel="noopener noreferrer"&gt;https://netflixtechblog.com/zero-configuration-service-mesh-with-on-demand-cluster-discovery-ac6483b52a51&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  2. How Service Mesh Helps
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F80pic7k529otkpm8033w.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F80pic7k529otkpm8033w.png" alt="Internal Working of Service Mesh" width="800" height="332"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;A &lt;strong&gt;Service Mesh&lt;/strong&gt; is an infrastructure layer that manages service-to-service communication within a distributed micro-services architecture. It &lt;strong&gt;abstracts away networking concerns&lt;/strong&gt;, thereby enhancing:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Security:&lt;/strong&gt; Through secure, encrypted communication (mTLS).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Traffic Management:&lt;/strong&gt; Via intelligent routing, load balancing, and retries.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Observability:&lt;/strong&gt; With integrated logging, tracing, and monitoring.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Resilience:&lt;/strong&gt; By using circuit breakers and fault injection.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Key benefits include decoupling networking logic from application code and centralizing security policies.&lt;/p&gt;




&lt;h2&gt;
  
  
  3. Service Mesh Architecture
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7l7t33x8551cqzkorztj.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7l7t33x8551cqzkorztj.png" alt="Service Mesh Architecture" width="800" height="433"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;A service mesh consists of two primary components:&lt;/p&gt;

&lt;h3&gt;
  
  
  3.1 Data Plane (Sidecar Proxies)
&lt;/h3&gt;

&lt;p&gt;Each micro-service runs alongside a &lt;strong&gt;sidecar proxy&lt;/strong&gt; that intercepts all incoming and outgoing traffic.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Example: Envoy Proxy&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Responsibilities:&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Service Discovery &amp;amp; Load Balancing:&lt;/strong&gt; Efficiently routes traffic among service instances.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Retries &amp;amp; Circuit Breaking:&lt;/strong&gt; Enhances resilience by managing failures.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Security Enforcement:&lt;/strong&gt; Uses mTLS for zero-trust security.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Telemetry Collection:&lt;/strong&gt; Gathers metrics, logs, and traces.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;h3&gt;
  
  
  3.2 Control Plane
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Responsibilities:&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;Manages and configures the sidecar proxies.&lt;/li&gt;
&lt;li&gt;Applies traffic rules, security policies, and observability settings.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;p&gt;These components work together to enforce consistent communication policies across your micro-services.&lt;/p&gt;

&lt;h3&gt;
  
  
  How It Works: Without vs. With Service Mesh
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Without Service Mesh:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Service A → Service B(Custom retry logic, security, and logging embedded in application code)&lt;/li&gt;
&lt;li&gt;Service B → Database(Direct connection without security enforcement)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;With Service Mesh:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Service A → &lt;strong&gt;Envoy Proxy&lt;/strong&gt; (handles retries, security, monitoring) → Service B&lt;/li&gt;
&lt;li&gt;Service B → &lt;strong&gt;Envoy Proxy&lt;/strong&gt; → Database(All communications are secured and monitored)&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  4. Popular Service Mesh Implementations
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fy3mbfekf8m4qczb509rp.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fy3mbfekf8m4qczb509rp.png" alt="Popular Service Mesh Implementations" width="800" height="328"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Service Mesh&lt;/th&gt;
&lt;th&gt;Proxy Used&lt;/th&gt;
&lt;th&gt;Best For&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Istio&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Envoy&lt;/td&gt;
&lt;td&gt;Kubernetes-native applications&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Linkerd&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Linkerd-proxy&lt;/td&gt;
&lt;td&gt;Simplicity and lightweight setups&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Consul&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Envoy&lt;/td&gt;
&lt;td&gt;Multi-cloud and hybrid environments&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;AWS App Mesh&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Envoy&lt;/td&gt;
&lt;td&gt;AWS-native applications&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;For more details, see the &lt;a href="https://servicemesh.es/" rel="noopener noreferrer"&gt;Comparison of Service Meshes&lt;/a&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  5. Benefits of Service Mesh
&lt;/h2&gt;

&lt;h3&gt;
  
  
  5.1 Security: Encrypted &amp;amp; Secure Communication (mTLS)
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Problem:&lt;/strong&gt; Unencrypted traffic is vulnerable to interception.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Example:&lt;/strong&gt; A banking app transmitting user passwords in plain text.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Solution:&lt;/strong&gt; Enforce &lt;strong&gt;mTLS&lt;/strong&gt; to ensure all communication is secure and authenticated.
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="s"&gt;kubectl apply -f - &amp;lt;&amp;lt;EOF&lt;/span&gt;
&lt;span class="na"&gt;apiVersion&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;security.istio.io/v1beta1&lt;/span&gt;
&lt;span class="na"&gt;kind&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;PeerAuthentication&lt;/span&gt;
&lt;span class="na"&gt;metadata&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;default&lt;/span&gt;
  &lt;span class="na"&gt;namespace&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;default&lt;/span&gt;
&lt;span class="na"&gt;spec&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;mtls&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;mode&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;STRICT&lt;/span&gt;
&lt;span class="s"&gt;EOF&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  5.2  &lt;strong&gt;Traffic Control&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;💡 &lt;strong&gt;Benefit&lt;/strong&gt;: Manage how traffic flows between services, allowing canary deployments, fault injection, and load balancing.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;🔀 A/B Testing with Traffic Splitting&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;📌 &lt;strong&gt;Route 80% of traffic to &lt;code&gt;v1&lt;/code&gt; and 20% to &lt;code&gt;v2&lt;/code&gt; of the &lt;code&gt;reviews&lt;/code&gt; service&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;
&lt;span class="s"&gt;kubectl apply -f - &amp;lt;&amp;lt;EOF&lt;/span&gt;
&lt;span class="na"&gt;apiVersion&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;networking.istio.io/v1beta1&lt;/span&gt;
&lt;span class="na"&gt;kind&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;VirtualService&lt;/span&gt;
&lt;span class="na"&gt;metadata&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;reviews&lt;/span&gt;
  &lt;span class="na"&gt;namespace&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;default&lt;/span&gt;
&lt;span class="na"&gt;spec&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;hosts&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;reviews&lt;/span&gt;
  &lt;span class="na"&gt;http&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;route&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;destination&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
        &lt;span class="na"&gt;host&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;reviews&lt;/span&gt;
        &lt;span class="na"&gt;subset&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;v1&lt;/span&gt;
      &lt;span class="na"&gt;weight&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="m"&gt;80&lt;/span&gt;
    &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;destination&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
        &lt;span class="na"&gt;host&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;reviews&lt;/span&gt;
        &lt;span class="na"&gt;subset&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;v2&lt;/span&gt;
      &lt;span class="na"&gt;weight&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="m"&gt;20&lt;/span&gt;
&lt;span class="s"&gt;EOF&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;🔹 Now, when you access &lt;code&gt;productpage&lt;/code&gt;, &lt;strong&gt;most users will see v1, while 20% get v2.&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Example:&lt;/strong&gt; Netflix gradually releases a new video recommendation algorithm.\&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  5.3 Observability: Debugging Made Easy
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Problem:&lt;/strong&gt; Locating the root cause of failures across multiple services is challenging.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Example:&lt;/strong&gt; Uber’s thousands of microservices made debugging nearly impossible.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Solution:&lt;/strong&gt; Integrate with &lt;strong&gt;Jaeger&lt;/strong&gt; and &lt;strong&gt;Kiali&lt;/strong&gt; for distributed tracing and visualization.
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;
istioctl dashboard kiali  &lt;span class="c"&gt;# Open the Kiali dashboard for service mesh visualization&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  5.4 Load Balancing: Efficient Traffic Distribution
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Problem:&lt;/strong&gt; Imbalanced traffic can overwhelm some services while underutilizing others.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Example:&lt;/strong&gt; Amazon’s checkout service receives millions of requests per minute.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Solution:&lt;/strong&gt; Dynamically distribute requests using advanced load balancing algorithms.
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;
&lt;span class="na"&gt;apiVersion&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;networking.istio.io/v1alpha3&lt;/span&gt;
&lt;span class="na"&gt;kind&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;DestinationRule&lt;/span&gt;
&lt;span class="na"&gt;metadata&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;checkout-service&lt;/span&gt;
&lt;span class="na"&gt;spec&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;host&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;checkout-service&lt;/span&gt;
  &lt;span class="na"&gt;trafficPolicy&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;loadBalancer&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
      &lt;span class="na"&gt;simple&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;LEAST_CONN&lt;/span&gt;  &lt;span class="c1"&gt;# Directs traffic to the least busy instance&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Additional Capabilities
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Traffic Management:&lt;/strong&gt; Intelligent routing, load balancing, retries, and failover.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Security Enhancements:&lt;/strong&gt; mTLS, role-based access control (RBAC), and centralised authentication/authorization.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Observability &amp;amp; Monitoring:&lt;/strong&gt; Distributed tracing (Jaeger, Zipkin), logging/metrics collection (Prometheus, Grafana, Kiali), and dynamic service discovery.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Resilience &amp;amp; Fault Tolerance:&lt;/strong&gt; Circuit breaking, rate limiting, and fault injection for chaos engineering.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  7. When to Use a Service Mesh?
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;strong&gt;Scenario&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;Use Service Mesh?&lt;/strong&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Small app with fewer than 5 services&lt;/td&gt;
&lt;td&gt;❌ No (Overhead is too high)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;10+ microservices&lt;/td&gt;
&lt;td&gt;✅ Yes (Provides standardized communication)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Multi-cloud or hybrid deployments&lt;/td&gt;
&lt;td&gt;✅ Yes (Simplifies cross-cloud networking)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;High-security environments (banking, healthcare)&lt;/td&gt;
&lt;td&gt;✅ Yes (Enforces mTLS and centralized authentication)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h2&gt;
  
  
  8. Real-World Benefits &amp;amp; Use Cases
&lt;/h2&gt;

&lt;h3&gt;
  
  
  ✅ Case Study #1: Airbnb – Scaling Microservices
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Problem:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Airbnb had thousands of microservices, making debugging nearly impossible due to scattered logs.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Solution:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;They implemented Istio (Service Mesh) along with Jaeger for distributed tracing.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Outcome:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Engineers could trace failures in seconds, reducing incident response time by 70%.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  ✅ Case Study #2: Stripe – Secure Payment Transactions
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Problem:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Stripe processes millions of financial transactions and required end-to-end encryption between microservices.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Solution:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;They deployed a Service Mesh with mTLS to encrypt all service-to-service communication automatically.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Outcome:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Zero unencrypted transactions&lt;/li&gt;
&lt;li&gt;Full compliance with banking security standards&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;




&lt;h3&gt;
  
  
  ✅ Case Study #3: Netflix – Canary Deployments
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Problem:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Netflix needed to test new versions of its recommendation engine on a small subset of users to avoid downtime.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Solution:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;They used Istio’s traffic splitting feature to direct 10% of traffic to the new version while maintaining 90% on the stable version.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Outcome:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Safer rollouts&lt;/li&gt;
&lt;li&gt;No downtime during updates&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;




&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;A &lt;strong&gt;Service Mesh&lt;/strong&gt;—using tools like &lt;strong&gt;Istio, Linkerd, or Consul&lt;/strong&gt;—streamlines inter-service communication in a microservices architecture by abstracting networking, security, and observability away from application code. This approach lets developers focus on core business logic while ensuring robust, secure, and resilient interactions between services.&lt;/p&gt;

&lt;p&gt;Feel free to reach out if you need further clarification or want to explore a live demo of these concepts in your environment!&lt;/p&gt;

&lt;p&gt;References: &lt;br&gt;
&lt;a href="https://www.alibabacloud.com/blog/getting-started-with-service-mesh-origin-development-and-current-status_597241" rel="noopener noreferrer"&gt;https://www.alibabacloud.com/blog/getting-started-with-service-mesh-origin-development-and-current-status_597241&lt;/a&gt;&lt;/p&gt;




&lt;h3&gt;
  
  
  &lt;strong&gt;Istio Config for path based service redirection&lt;/strong&gt;
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;apiVersion&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;networking.istio.io/v1&lt;/span&gt;
&lt;span class="na"&gt;kind&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;Gateway&lt;/span&gt;
&lt;span class="na"&gt;metadata&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;core-gateway&lt;/span&gt;
  &lt;span class="na"&gt;namespace&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;istio-system&lt;/span&gt;
&lt;span class="na"&gt;spec&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;selector&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;istio&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;ingressgateway&lt;/span&gt;
  &lt;span class="na"&gt;servers&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;hosts&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s1"&gt;'&lt;/span&gt;&lt;span class="s"&gt;*'&lt;/span&gt;
    &lt;span class="na"&gt;port&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
      &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;http&lt;/span&gt;
      &lt;span class="na"&gt;number&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="m"&gt;80&lt;/span&gt;
      &lt;span class="na"&gt;protocol&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;HTTP&lt;/span&gt;
&lt;span class="nn"&gt;---&lt;/span&gt;
&lt;span class="na"&gt;apiVersion&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;networking.istio.io/v1&lt;/span&gt;
&lt;span class="na"&gt;kind&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;VirtualService&lt;/span&gt;
&lt;span class="na"&gt;metadata&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;core-virtualservice&lt;/span&gt;
  &lt;span class="na"&gt;namespace&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;istio-system&lt;/span&gt;
&lt;span class="na"&gt;spec&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;gateways&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;core-gateway&lt;/span&gt;
  &lt;span class="na"&gt;hosts&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s1"&gt;'&lt;/span&gt;&lt;span class="s"&gt;*'&lt;/span&gt;
  &lt;span class="na"&gt;http&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;match&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;uri&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
        &lt;span class="na"&gt;prefix&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;/cg&lt;/span&gt;
    &lt;span class="na"&gt;route&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;destination&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
        &lt;span class="na"&gt;host&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;stg-content-service-api.all-staging.svc.cluster.local&lt;/span&gt;
        &lt;span class="na"&gt;port&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
          &lt;span class="na"&gt;number&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="m"&gt;8085&lt;/span&gt;
  &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;match&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;uri&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
        &lt;span class="na"&gt;prefix&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;/&lt;/span&gt;
    &lt;span class="na"&gt;route&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;destination&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
        &lt;span class="na"&gt;host&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;stg-go-mobile-api.all-staging.svc.cluster.local&lt;/span&gt;
        &lt;span class="na"&gt;port&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
          &lt;span class="na"&gt;number&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="m"&gt;3333&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  &lt;strong&gt;Istio Config for route based service redirection&lt;/strong&gt;
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;apiVersion&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;networking.istio.io/v1&lt;/span&gt;
&lt;span class="na"&gt;kind&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;Gateway&lt;/span&gt;
&lt;span class="na"&gt;metadata&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;core-gateway&lt;/span&gt;
  &lt;span class="na"&gt;namespace&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;istio-system&lt;/span&gt;
&lt;span class="na"&gt;spec&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;selector&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;istio&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;ingressgateway&lt;/span&gt;
  &lt;span class="na"&gt;servers&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;port&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
      &lt;span class="na"&gt;number&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="m"&gt;30012&lt;/span&gt;
      &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;content-port&lt;/span&gt;
      &lt;span class="na"&gt;protocol&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;HTTP&lt;/span&gt;
    &lt;span class="na"&gt;hosts&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s1"&gt;'&lt;/span&gt;&lt;span class="s"&gt;*'&lt;/span&gt;
  &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;port&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
      &lt;span class="na"&gt;number&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="m"&gt;30013&lt;/span&gt;
      &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;mobile-port&lt;/span&gt;
      &lt;span class="na"&gt;protocol&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;HTTP&lt;/span&gt;
    &lt;span class="na"&gt;hosts&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s1"&gt;'&lt;/span&gt;&lt;span class="s"&gt;*'&lt;/span&gt;
&lt;span class="nn"&gt;---&lt;/span&gt;
&lt;span class="na"&gt;apiVersion&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;networking.istio.io/v1&lt;/span&gt;
&lt;span class="na"&gt;kind&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;VirtualService&lt;/span&gt;
&lt;span class="na"&gt;metadata&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;combined-virtualservice&lt;/span&gt;
  &lt;span class="na"&gt;namespace&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;istio-system&lt;/span&gt;
&lt;span class="na"&gt;spec&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;hosts&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s1"&gt;'&lt;/span&gt;&lt;span class="s"&gt;*'&lt;/span&gt;
  &lt;span class="na"&gt;gateways&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;core-gateway&lt;/span&gt;
  &lt;span class="na"&gt;http&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;match&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;port&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="m"&gt;30012&lt;/span&gt;
    &lt;span class="na"&gt;route&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;destination&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
        &lt;span class="na"&gt;host&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;stg-content-service-api.all-staging.svc.cluster.local&lt;/span&gt;
        &lt;span class="na"&gt;port&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
          &lt;span class="na"&gt;number&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="m"&gt;8085&lt;/span&gt;
  &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;match&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;port&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="m"&gt;30013&lt;/span&gt;
    &lt;span class="na"&gt;route&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;destination&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
        &lt;span class="na"&gt;host&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;stg-go-mobile-api.all-staging.svc.cluster.local&lt;/span&gt;
        &lt;span class="na"&gt;port&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
          &lt;span class="na"&gt;number&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="m"&gt;3333&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



</description>
      <category>kubernetes</category>
      <category>servicemesh</category>
      <category>istio</category>
      <category>devops</category>
    </item>
  </channel>
</rss>
