<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Networking on marktaguiad.dev</title>
    <link>https://marktaguiad.dev/tags/networking/</link>
    <description>Recent content in Networking on marktaguiad.dev</description>
    <generator>Hugo</generator>
    <language>en-us</language>
    <managingEditor>marktaguiad@marktaguiad.dev (Mark Taguiad)</managingEditor>
    <webMaster>marktaguiad@marktaguiad.dev (Mark Taguiad)</webMaster>
    <copyright>marktaguiad.dev</copyright>
    <lastBuildDate>Tue, 28 Apr 2026 00:00:00 +0000</lastBuildDate>
    <atom:link href="https://marktaguiad.dev/tags/networking/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Cilium Network Policy: CiliumNetworkPolicy</title>
      <link>https://marktaguiad.dev/post/k8s-cilium-policy-dos/</link>
      <pubDate>Tue, 28 Apr 2026 00:00:00 +0000</pubDate><author>marktaguiad@marktaguiad.dev (Mark Taguiad)</author>
      <guid>https://marktaguiad.dev/post/k8s-cilium-policy-dos/</guid>
      <description>&lt;p&gt;&lt;code&gt;CiliumNetworkPolicy&lt;/code&gt; (CNP) is the most commonly used policy type in Cilium.&lt;/p&gt;&#xA;&lt;p&gt;It is namespace-scoped, meaning the policy applies only within the namespace where it is created.&lt;/p&gt;&#xA;&lt;p&gt;This is the policy most teams use for real-world application security because it enables zero-trust controls at Layer 3, Layer 4, and Layer 7.&lt;/p&gt;&#xA;&lt;p&gt;If Kubernetes NetworkPolicy is a basic firewall, CiliumNetworkPolicy is the full application-aware policy engine.&lt;/p&gt;&#xA;&lt;p&gt;What discussed and showed here is similar with &lt;code&gt;CiliumClusterwideNetworkPolicy&lt;/code&gt;, the only difference it the policy is cluster wide. Read more on that topic and how to combine these policies.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Cilium Network Policy: Kubernetes NetworkPolicy</title>
      <link>https://marktaguiad.dev/post/k8s-cilium-policy-uno/</link>
      <pubDate>Sun, 26 Apr 2026 00:00:00 +0000</pubDate><author>marktaguiad@marktaguiad.dev (Mark Taguiad)</author>
      <guid>https://marktaguiad.dev/post/k8s-cilium-policy-uno/</guid>
      <description>&lt;p&gt;When people first start working with Cilium policies, the easiest way to understand them is to group them into two simple ideas:&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;Who can talk to what?&lt;/li&gt;&#xA;&lt;li&gt;What they’re allowed to do once connected?&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;p&gt;That mental model maps directly to how Cilium builds policy enforcement—from basic workload isolation all the way up to application-aware HTTP filtering.&lt;/p&gt;&#xA;&lt;p&gt;If you already think in terms of namespace rules and Layer 7 rules like HTTP GET/POST like we did in &lt;a href=&#34;https://marktaguiad.dev/post/k8s-istio-uno/&#34;&gt;Istio&lt;/a&gt;, you’re already on the right track. Cilium simply expands that model into something much more powerful and much more granular.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Cilium Gateway API</title>
      <link>https://marktaguiad.dev/post/k8s-cilium-gateway/</link>
      <pubDate>Sat, 25 Apr 2026 00:00:00 +0000</pubDate><author>marktaguiad@marktaguiad.dev (Mark Taguiad)</author>
      <guid>https://marktaguiad.dev/post/k8s-cilium-gateway/</guid>
      <description>&lt;p&gt;Cilium Gateway API support is a modern replacement for traditional Kubernetes Ingress controllers.&lt;/p&gt;&#xA;&lt;p&gt;Instead of relying on standalone ingress proxies, Cilium integrates Gateway API directly into the networking stack using &lt;strong&gt;eBPF&lt;/strong&gt; and &lt;strong&gt;Envoy&lt;/strong&gt;, enabling:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;HTTP / HTTPS routing&lt;/li&gt;&#xA;&lt;li&gt;TLS passthrough&lt;/li&gt;&#xA;&lt;li&gt;TLS termination&lt;/li&gt;&#xA;&lt;li&gt;Traffic splitting&lt;/li&gt;&#xA;&lt;li&gt;Header manipulation&lt;/li&gt;&#xA;&lt;li&gt;Standards-based ingress with Kubernetes Gateway API&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Cilium’s operator acts as the Gateway API controller and manages:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;code&gt;GatewayClass&lt;/code&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;code&gt;Gateway&lt;/code&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;code&gt;HTTPRoute&lt;/code&gt;&lt;/li&gt;&#xA;&lt;li&gt;LoadBalancer Services&lt;/li&gt;&#xA;&lt;li&gt;eBPF traffic routing&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;This is similar with Istio Gateway, for our example let&amp;rsquo;s use the same deployments/apps.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Cilium ClusterMesh: Connecting Kubernetes Clusters</title>
      <link>https://marktaguiad.dev/post/k8s-cilium-clustermesh/</link>
      <pubDate>Fri, 24 Apr 2026 00:00:00 +0000</pubDate><author>marktaguiad@marktaguiad.dev (Mark Taguiad)</author>
      <guid>https://marktaguiad.dev/post/k8s-cilium-clustermesh/</guid>
      <description>&lt;p&gt;Cilium is a Kubernetes CNI built on eBPF, replacing the traditional iptables-heavy networking model with kernel-level packet processing. Instead of relying on large iptables chains for routing, filtering, and service load balancing, Cilium injects eBPF programs directly into the Linux kernel datapath for lower latency and better scalability.&lt;/p&gt;&#xA;&lt;p&gt;This would require a whole book in explaining eBPF, so we will not dwell in that. Let&amp;rsquo;s focus first on connecting two Kubernetes Cluster.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Istio: Fault Injection, Retries and Circuit Breaker</title>
      <link>https://marktaguiad.dev/post/k8s-istio-tres/</link>
      <pubDate>Sat, 28 Mar 2026 00:00:00 +0000</pubDate><author>marktaguiad@marktaguiad.dev (Mark Taguiad)</author>
      <guid>https://marktaguiad.dev/post/k8s-istio-tres/</guid>
      <description>&lt;p&gt;Continuation of Kubernetes Istio.&lt;/p&gt;&#xA;&lt;h1 id=&#34;table-of-contents&#34;&gt;Table of Contents&lt;/h1&gt;&#xA;&lt;nav id=&#34;TableOfContents&#34;&gt;&#xA;  &lt;ol&gt;&#xA;    &lt;li&gt;&lt;a href=&#34;#ingress-gateway&#34;&gt;Ingress Gateway&lt;/a&gt;&lt;/li&gt;&#xA;    &lt;li&gt;&lt;a href=&#34;#gateway&#34;&gt;Gateway&lt;/a&gt;&lt;/li&gt;&#xA;    &lt;li&gt;&lt;a href=&#34;#fault-injection&#34;&gt;Fault Injection&lt;/a&gt;&#xA;      &lt;ol&gt;&#xA;        &lt;li&gt;&lt;a href=&#34;#verify&#34;&gt;Verify&lt;/a&gt;&lt;/li&gt;&#xA;      &lt;/ol&gt;&#xA;    &lt;/li&gt;&#xA;    &lt;li&gt;&lt;a href=&#34;#retries&#34;&gt;Retries&lt;/a&gt;&lt;/li&gt;&#xA;    &lt;li&gt;&lt;a href=&#34;#circuit-breaker&#34;&gt;Circuit Breaker&lt;/a&gt;&lt;/li&gt;&#xA;  &lt;/ol&gt;&#xA;&lt;/nav&gt;&#xA;&lt;p&gt;I&amp;rsquo;ve mentioned in this &lt;a href=&#34;https://marktaguiad.dev/post/k8s-istio-uno.md&#34;&gt;post&lt;/a&gt; that will sticking with &lt;code&gt;HTTPRoute&lt;/code&gt;, but feature discussed here only support (for now) Istio API.&lt;/p&gt;&#xA;&lt;h3 id=&#34;ingress-gateway&#34;&gt;Ingress Gateway&lt;/h3&gt;&#xA;&lt;p&gt;Istio deploys a default resource for this, and for this example we are using the default ingress gateway &lt;code&gt;ingressgateway&lt;/code&gt;.&lt;/p&gt;&#xA;&lt;p&gt;If you want to create a custom ingress gateway.&lt;/p&gt;&#xA;&lt;p&gt;&lt;em&gt;istio-gateway.yaml&lt;/em&gt;&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-yaml&#34; data-lang=&#34;yaml&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt; 1&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nt&#34;&gt;apiVersion&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l&#34;&gt;install.istio.io/v1alpha1&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt; 2&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nt&#34;&gt;kind&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l&#34;&gt;IstioOperator&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt; 3&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nt&#34;&gt;metadata&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt; 4&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;  &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;name&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l&#34;&gt;istio-control-plane&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt; 5&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;  &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;namespace&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l&#34;&gt;istio-system&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt; 6&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nt&#34;&gt;spec&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt; 7&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;  &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;components&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt; 8&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;ingressGateways&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt; 9&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;      &lt;/span&gt;- &lt;span class=&#34;nt&#34;&gt;name&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l&#34;&gt;istio-ingressgateway-prod&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;10&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;        &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;namespace&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l&#34;&gt;istio-system&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;11&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;        &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;enabled&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;kc&#34;&gt;true&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;12&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;        &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;label&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;13&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;          &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;istio&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l&#34;&gt;ingressgateway-prod&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;14&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;15&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;      &lt;/span&gt;- &lt;span class=&#34;nt&#34;&gt;name&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l&#34;&gt;istio-ingressgateway-dev&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;16&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;        &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;namespace&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l&#34;&gt;istio-system&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;17&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;        &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;enabled&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;kc&#34;&gt;true&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;18&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;        &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;label&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;19&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;          &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;istio&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l&#34;&gt;ingressgateway-dev&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;This will create two  ingress gateway.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Istio: mTLS and RBAC</title>
      <link>https://marktaguiad.dev/post/k8s-istio-dos/</link>
      <pubDate>Tue, 24 Mar 2026 00:00:00 +0000</pubDate><author>marktaguiad@marktaguiad.dev (Mark Taguiad)</author>
      <guid>https://marktaguiad.dev/post/k8s-istio-dos/</guid>
      <description>&lt;p&gt;Continuation of Kubernetes Istio, this time we&amp;rsquo;ll focus on Security.&lt;/p&gt;&#xA;&lt;h1 id=&#34;table-of-contents&#34;&gt;Table of Contents&lt;/h1&gt;&#xA;&lt;nav id=&#34;TableOfContents&#34;&gt;&#xA;  &lt;ol&gt;&#xA;    &lt;li&gt;&lt;a href=&#34;#security&#34;&gt;Security&lt;/a&gt;&#xA;      &lt;ol&gt;&#xA;        &lt;li&gt;&lt;a href=&#34;#mtls-mutual-tls&#34;&gt;mTLS (Mutual TLS)&lt;/a&gt;&lt;/li&gt;&#xA;        &lt;li&gt;&lt;a href=&#34;#authorizationpolicy-rbac&#34;&gt;AuthorizationPolicy (RBAC)&lt;/a&gt;&lt;/li&gt;&#xA;      &lt;/ol&gt;&#xA;    &lt;/li&gt;&#xA;  &lt;/ol&gt;&#xA;&lt;/nav&gt;&#xA;&lt;h3 id=&#34;security&#34;&gt;Security&lt;/h3&gt;&#xA;&lt;h4 id=&#34;mtls-mutual-tls&#34;&gt;mTLS (Mutual TLS)&lt;/h4&gt;&#xA;&lt;p&gt;This will ensure that service-to-service traffic is encrypted and authenticated.&lt;/p&gt;&#xA;&lt;p&gt;Istio allows you to configure three main modes per namespace, workload, or globally:&lt;/p&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;th&gt;Mode&lt;/th&gt;&#xA;          &lt;th&gt;Behavior&lt;/th&gt;&#xA;          &lt;th&gt;When to Use&lt;/th&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;strong&gt;STRICT&lt;/strong&gt;&lt;/td&gt;&#xA;          &lt;td&gt;Only allows &lt;strong&gt;mTLS-encrypted traffic&lt;/strong&gt;. Plain HTTP connections are rejected.&lt;/td&gt;&#xA;          &lt;td&gt;Best for production when you want &lt;strong&gt;full security&lt;/strong&gt; between services.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;strong&gt;PERMISSIVE&lt;/strong&gt;&lt;/td&gt;&#xA;          &lt;td&gt;Accepts both mTLS-encrypted and plain HTTP traffic.&lt;/td&gt;&#xA;          &lt;td&gt;Useful during &lt;strong&gt;gradual migration&lt;/strong&gt; to mTLS. Old workloads can still communicate without encryption.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;strong&gt;DISABLE&lt;/strong&gt;&lt;/td&gt;&#xA;          &lt;td&gt;Does not use mTLS at all.&lt;/td&gt;&#xA;          &lt;td&gt;For testing, legacy workloads, or non-critical traffic.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;p&gt;You might get confused with the HTTPS traffic, it just mean that all traffic are converted by istio envoy to mTLS. So as long as the request is going through first the sidecar then it is valid.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Istio: Routing</title>
      <link>https://marktaguiad.dev/post/k8s-istio-uno/</link>
      <pubDate>Mon, 23 Mar 2026 00:00:00 +0000</pubDate><author>marktaguiad@marktaguiad.dev (Mark Taguiad)</author>
      <guid>https://marktaguiad.dev/post/k8s-istio-uno/</guid>
      <description>&lt;p&gt;Modern applications are no longer built as single, monolithic systems—they’re composed of many small, interconnected services. Managing how these services communicate can quickly become complex, especially as systems scale. This is where Istio comes in.&lt;/p&gt;&#xA;&lt;p&gt;Istio acts as a powerful service mesh that sits between your services and handles three critical concerns: traffic management, security, and observability.&lt;/p&gt;&#xA;&lt;p&gt;With Istio, you gain fine-grained control over how traffic flows between services—enabling advanced deployment strategies like A/B testing and canary releases with ease. At the same time, it strengthens service-to-service security and provides deep visibility into your system through metrics, logs, and tracing.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Kubernetes Metallb</title>
      <link>https://marktaguiad.dev/post/k8s-metallb/</link>
      <pubDate>Tue, 10 Mar 2026 15:08:20 +0800</pubDate><author>marktaguiad@marktaguiad.dev (Mark Taguiad)</author>
      <guid>https://marktaguiad.dev/post/k8s-metallb/</guid>
      <description>&lt;p&gt;&lt;img&#xA;  class=&#34;theme-image&#34;&#xA;  src=&#34;https://marktaguiad.dev/images/devops/k8s-notes/k8s-metallb-001.png&#34;&#xA;  data-light=&#34;/images/devops/k8s-notes/k8s-metallb-001.png&#34;&#xA;  data-dark=&#34;/images/devops/k8s-notes/k8s-metallb-dark-001.png&#34;&#xA;  alt=&#34;Architecture Diagram&#34;&#xA;&gt;&#xA;&#xA;In cloud environments, Kubernetes provides external load balancing easily using Service type LoadBalancer, which integrates with cloud provider load balancers.&lt;/p&gt;&#xA;&lt;p&gt;However, in bare-metal Kubernetes clusters, there is no built-in implementation for external load balancers. As a result, creating a LoadBalancer service would remain in a pending state.&lt;/p&gt;&#xA;&lt;p&gt;MetalLB solves this problem by providing a network load balancer implementation for bare-metal Kubernetes clusters, allowing services to expose external IP addresses just like in cloud environments.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Kubernetes Networking</title>
      <link>https://marktaguiad.dev/post/k8s-notes-part3/</link>
      <pubDate>Thu, 05 Mar 2026 23:54:49 +0800</pubDate><author>marktaguiad@marktaguiad.dev (Mark Taguiad)</author>
      <guid>https://marktaguiad.dev/post/k8s-notes-part3/</guid>
      <description>&lt;p&gt;For applications running inside Kubernetes to function correctly, they must be able to communicate with each other and with external systems. Kubernetes provides a networking model that enables communication between Pods, Services, and external clients.&lt;/p&gt;&#xA;&lt;h1 id=&#34;table-of-contents&#34;&gt;Table of Contents&lt;/h1&gt;&#xA;&lt;nav id=&#34;TableOfContents&#34;&gt;&#xA;  &lt;ol&gt;&#xA;    &lt;li&gt;&lt;a href=&#34;#pod-internal&#34;&gt;Pod Internal&lt;/a&gt;&lt;/li&gt;&#xA;    &lt;li&gt;&lt;a href=&#34;#services&#34;&gt;Services&lt;/a&gt;&#xA;      &lt;ol&gt;&#xA;        &lt;li&gt;&lt;a href=&#34;#create-using-yaml&#34;&gt;Create Using YAML&lt;/a&gt;&lt;/li&gt;&#xA;        &lt;li&gt;&lt;a href=&#34;#create-using-kubectl&#34;&gt;Create using kubectl&lt;/a&gt;&lt;/li&gt;&#xA;        &lt;li&gt;&lt;a href=&#34;#verify&#34;&gt;Verify&lt;/a&gt;&lt;/li&gt;&#xA;      &lt;/ol&gt;&#xA;    &lt;/li&gt;&#xA;    &lt;li&gt;&lt;a href=&#34;#service-dns&#34;&gt;Service DNS&lt;/a&gt;&#xA;      &lt;ol&gt;&#xA;        &lt;li&gt;&lt;a href=&#34;#same-namespace&#34;&gt;Same Namespace&lt;/a&gt;&lt;/li&gt;&#xA;        &lt;li&gt;&lt;a href=&#34;#cluster-wide&#34;&gt;Cluster Wide&lt;/a&gt;&lt;/li&gt;&#xA;      &lt;/ol&gt;&#xA;    &lt;/li&gt;&#xA;    &lt;li&gt;&lt;a href=&#34;#service-types&#34;&gt;Service Types&lt;/a&gt;&#xA;      &lt;ol&gt;&#xA;        &lt;li&gt;&lt;a href=&#34;#clusterip-default&#34;&gt;ClusterIP (Default)&lt;/a&gt;&lt;/li&gt;&#xA;        &lt;li&gt;&lt;a href=&#34;#nodeport&#34;&gt;NodePort&lt;/a&gt;&lt;/li&gt;&#xA;        &lt;li&gt;&lt;a href=&#34;#loadbalancer&#34;&gt;LoadBalancer&lt;/a&gt;&lt;/li&gt;&#xA;      &lt;/ol&gt;&#xA;    &lt;/li&gt;&#xA;    &lt;li&gt;&lt;a href=&#34;#hostport-and-hostnetwork&#34;&gt;hostPort and hostNetwork&lt;/a&gt;&lt;/li&gt;&#xA;    &lt;li&gt;&lt;a href=&#34;#reverse-proxy&#34;&gt;Reverse Proxy&lt;/a&gt;&lt;/li&gt;&#xA;    &lt;li&gt;&lt;a href=&#34;#ingress-controllers&#34;&gt;Ingress Controllers&lt;/a&gt;&lt;/li&gt;&#xA;    &lt;li&gt;&lt;a href=&#34;#container-network-interface-cni&#34;&gt;Container Network Interface (CNI)&lt;/a&gt;&lt;/li&gt;&#xA;  &lt;/ol&gt;&#xA;&lt;/nav&gt;&#xA;&lt;h3 id=&#34;pod-internal&#34;&gt;Pod Internal&lt;/h3&gt;&#xA;&lt;p&gt;Each Pod receives its own internal IP address inside the Kubernetes cluster. This allows Pods to communicate directly with each other using that IP.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Linux Networking</title>
      <link>https://marktaguiad.dev/post/linux-network/</link>
      <pubDate>Wed, 11 Jun 2025 00:00:00 +0000</pubDate><author>marktaguiad@marktaguiad.dev (Mark Taguiad)</author>
      <guid>https://marktaguiad.dev/post/linux-network/</guid>
      <description>&lt;h1 id=&#34;table-of-contents&#34;&gt;Table of Contents&lt;/h1&gt;&#xA;&lt;nav id=&#34;TableOfContents&#34;&gt;&#xA;  &lt;ol&gt;&#xA;    &lt;li&gt;&lt;a href=&#34;#show-network&#34;&gt;Show network&lt;/a&gt;&lt;/li&gt;&#xA;    &lt;li&gt;&lt;a href=&#34;#setting-your-network&#34;&gt;Setting your network&lt;/a&gt;&#xA;      &lt;ol&gt;&#xA;        &lt;li&gt;&lt;a href=&#34;#native&#34;&gt;Native&lt;/a&gt;&lt;/li&gt;&#xA;        &lt;li&gt;&lt;a href=&#34;#network-manager&#34;&gt;Network Manager&lt;/a&gt;&lt;/li&gt;&#xA;        &lt;li&gt;&lt;a href=&#34;#networkd&#34;&gt;Networkd&lt;/a&gt;&lt;/li&gt;&#xA;        &lt;li&gt;&lt;a href=&#34;#netplan&#34;&gt;Netplan&lt;/a&gt;&lt;/li&gt;&#xA;        &lt;li&gt;&lt;a href=&#34;#other-wireless-solutions&#34;&gt;Other Wireless Solutions&lt;/a&gt;&lt;/li&gt;&#xA;        &lt;li&gt;&lt;a href=&#34;#connman&#34;&gt;Connman&lt;/a&gt;&lt;/li&gt;&#xA;      &lt;/ol&gt;&#xA;    &lt;/li&gt;&#xA;    &lt;li&gt;&lt;a href=&#34;#dns-resolution&#34;&gt;DNS Resolution&lt;/a&gt;&#xA;      &lt;ol&gt;&#xA;        &lt;li&gt;&lt;a href=&#34;#etchosts&#34;&gt;/etc/hosts&lt;/a&gt;&lt;/li&gt;&#xA;        &lt;li&gt;&lt;a href=&#34;#etchostname&#34;&gt;/etc/hostname&lt;/a&gt;&lt;/li&gt;&#xA;        &lt;li&gt;&lt;a href=&#34;#etcresolvconf&#34;&gt;/etc/resolv.conf&lt;/a&gt;&lt;/li&gt;&#xA;      &lt;/ol&gt;&#xA;    &lt;/li&gt;&#xA;    &lt;li&gt;&lt;a href=&#34;#bridges&#34;&gt;Bridges&lt;/a&gt;&#xA;      &lt;ol&gt;&#xA;        &lt;li&gt;&lt;a href=&#34;#using-ip-command-temporary--runtime&#34;&gt;Using ip command (temporary / runtime)&lt;/a&gt;&lt;/li&gt;&#xA;        &lt;li&gt;&lt;a href=&#34;#using-systemd-networkd&#34;&gt;Using systemd-networkd&lt;/a&gt;&lt;/li&gt;&#xA;        &lt;li&gt;&lt;a href=&#34;#using-network-manager&#34;&gt;Using Network Manager&lt;/a&gt;&lt;/li&gt;&#xA;        &lt;li&gt;&lt;a href=&#34;#using-netplan&#34;&gt;Using Netplan&lt;/a&gt;&lt;/li&gt;&#xA;      &lt;/ol&gt;&#xA;    &lt;/li&gt;&#xA;    &lt;li&gt;&lt;a href=&#34;#bonding&#34;&gt;Bonding&lt;/a&gt;&#xA;      &lt;ol&gt;&#xA;        &lt;li&gt;&lt;a href=&#34;#setup&#34;&gt;Setup&lt;/a&gt;&lt;/li&gt;&#xA;      &lt;/ol&gt;&#xA;    &lt;/li&gt;&#xA;    &lt;li&gt;&lt;a href=&#34;#routing&#34;&gt;Routing&lt;/a&gt;&#xA;      &lt;ol&gt;&#xA;        &lt;li&gt;&lt;a href=&#34;#adding-and-removing-routes&#34;&gt;Adding and Removing Routes&lt;/a&gt;&lt;/li&gt;&#xA;        &lt;li&gt;&lt;a href=&#34;#using-gateways-and-metric&#34;&gt;Using Gateways and Metric&lt;/a&gt;&lt;/li&gt;&#xA;        &lt;li&gt;&lt;a href=&#34;#traffic-flow-and-packet-control&#34;&gt;Traffic Flow and Packet Control&lt;/a&gt;&lt;/li&gt;&#xA;        &lt;li&gt;&lt;a href=&#34;#view-current-iptables-config&#34;&gt;View current iptables config&lt;/a&gt;&lt;/li&gt;&#xA;        &lt;li&gt;&lt;a href=&#34;#setting-basic-firewall-rules&#34;&gt;Setting basic firewall rules.&lt;/a&gt;&lt;/li&gt;&#xA;        &lt;li&gt;&lt;a href=&#34;#deleting-iptable-rules&#34;&gt;Deleting iptable rules&lt;/a&gt;&lt;/li&gt;&#xA;        &lt;li&gt;&lt;a href=&#34;#saving-changes&#34;&gt;Saving changes&lt;/a&gt;&lt;/li&gt;&#xA;        &lt;li&gt;&lt;a href=&#34;#other-commands&#34;&gt;Other commands&lt;/a&gt;&lt;/li&gt;&#xA;      &lt;/ol&gt;&#xA;    &lt;/li&gt;&#xA;    &lt;li&gt;&lt;a href=&#34;#firewall&#34;&gt;Firewall&lt;/a&gt;&#xA;      &lt;ol&gt;&#xA;        &lt;li&gt;&lt;a href=&#34;#ufw---uncomplicated-firewall&#34;&gt;UFW - Uncomplicated Firewall&lt;/a&gt;&#xA;          &lt;ol&gt;&#xA;            &lt;li&gt;&lt;a href=&#34;#default-config&#34;&gt;Default Config&lt;/a&gt;&lt;/li&gt;&#xA;            &lt;li&gt;&lt;a href=&#34;#allow-ssh-connection&#34;&gt;Allow SSH Connection&lt;/a&gt;&lt;/li&gt;&#xA;            &lt;li&gt;&lt;a href=&#34;#enable-ufw&#34;&gt;Enable UFW&lt;/a&gt;&lt;/li&gt;&#xA;            &lt;li&gt;&lt;a href=&#34;#allowing-other-connections&#34;&gt;Allowing Other Connections&lt;/a&gt;&lt;/li&gt;&#xA;            &lt;li&gt;&lt;a href=&#34;#denying-connections&#34;&gt;Denying Connections&lt;/a&gt;&lt;/li&gt;&#xA;            &lt;li&gt;&lt;a href=&#34;#deleting-rules&#34;&gt;Deleting Rules&lt;/a&gt;&lt;/li&gt;&#xA;            &lt;li&gt;&lt;a href=&#34;#ufw-status-and-rules&#34;&gt;UFW Status and Rules&lt;/a&gt;&lt;/li&gt;&#xA;          &lt;/ol&gt;&#xA;        &lt;/li&gt;&#xA;        &lt;li&gt;&lt;a href=&#34;#firewalld&#34;&gt;Firewalld&lt;/a&gt;&#xA;          &lt;ol&gt;&#xA;            &lt;li&gt;&lt;a href=&#34;#managing-firewalld&#34;&gt;Managing Firewalld&lt;/a&gt;&lt;/li&gt;&#xA;            &lt;li&gt;&lt;a href=&#34;#configuring-firewalld&#34;&gt;Configuring Firewalld&lt;/a&gt;&lt;/li&gt;&#xA;            &lt;li&gt;&lt;a href=&#34;#zones&#34;&gt;Zones&lt;/a&gt;&lt;/li&gt;&#xA;            &lt;li&gt;&lt;a href=&#34;#rich-rules&#34;&gt;Rich Rules&lt;/a&gt;&lt;/li&gt;&#xA;          &lt;/ol&gt;&#xA;        &lt;/li&gt;&#xA;      &lt;/ol&gt;&#xA;    &lt;/li&gt;&#xA;    &lt;li&gt;&lt;a href=&#34;#vlan&#34;&gt;VLAN&lt;/a&gt;&#xA;      &lt;ol&gt;&#xA;        &lt;li&gt;&lt;a href=&#34;#enable-vlan&#34;&gt;Enable VLAN&lt;/a&gt;&lt;/li&gt;&#xA;        &lt;li&gt;&lt;a href=&#34;#install-vlan&#34;&gt;Install VLAN&lt;/a&gt;&lt;/li&gt;&#xA;        &lt;li&gt;&lt;a href=&#34;#create-vlan-interface&#34;&gt;Create VLAN Interface&lt;/a&gt;&lt;/li&gt;&#xA;      &lt;/ol&gt;&#xA;    &lt;/li&gt;&#xA;  &lt;/ol&gt;&#xA;&lt;/nav&gt;&#xA;&lt;h3 id=&#34;show-network&#34;&gt;Show network&lt;/h3&gt;&#xA;&lt;p&gt;To view your current network interface.&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
