<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>NetworkPolicy on LIFELOG</title>
    <link>/tags/networkpolicy/</link>
    <description>Recent content in NetworkPolicy on LIFELOG</description>
    <generator>Hugo -- gohugo.io</generator>
    <language>ja</language>
    <copyright>© 2026 0222-nnn</copyright>
    <lastBuildDate>Wed, 02 Sep 2026 00:00:00 +0900</lastBuildDate><atom:link href="/tags/networkpolicy/index.xml" rel="self" type="application/rss+xml" />
    
    <item>
      <title>TerraformでGKE Dataplane V2を有効化し、NetworkPolicyでPod間通信を遮断してみた</title>
      <link>/blog/20260902_terraform_gcp_advanced_gke_dataplane_v2_networkpolicy/</link>
      <pubDate>Wed, 02 Sep 2026 00:00:00 +0900</pubDate>
      
      <guid>/blog/20260902_terraform_gcp_advanced_gke_dataplane_v2_networkpolicy/</guid>
      <description>&lt;h2 class=&#34;relative group&#34;&gt;概要 
    &lt;div id=&#34;概要&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;
    
    &lt;span
        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100&#34;&gt;
        &lt;a class=&#34;group-hover:text-primary-300 dark:group-hover:text-neutral-700&#34;
            style=&#34;text-decoration-line: none !important;&#34; href=&#34;#%e6%a6%82%e8%a6%81&#34; aria-label=&#34;アンカー&#34;&gt;#&lt;/a&gt;
    &lt;/span&gt;        
    
&lt;/h2&gt;
&lt;p&gt;&lt;a href=&#34;/blog/20260831_terraform_gcp_advanced_gke_private_bastion/&#34;&gt;GKEプライベートクラスタと踏み台&lt;/a&gt;の構成は、デフォルトのデータプレーン（kube-proxy、iptablesベース）を使っていました。同じネームスペースに複数チームのアプリが同居する場合、Pod間の通信を意図したものだけに制限したい場面があります。&lt;/p&gt;
&lt;p&gt;GKE Dataplane V2（Cilium/eBPFベース）は、NetworkPolicyの強制がビルトインされています。追加のCNI（Calico等）を用意しなくても、ラベルベースでPod間通信を制限できます。&lt;/p&gt;
&lt;p&gt;「Dataplane V2を有効化した」ことと「NetworkPolicyが実際に意図通り機能する」ことは別です。許可したラベルのPodからは通り、許可していないPodからは遮断されることを、実際にPodを起動して確認します。&lt;/p&gt;
&lt;p&gt;Terraformの基本操作と、&lt;a href=&#34;/blog/20260831_terraform_gcp_advanced_gke_private_bastion/&#34;&gt;前々回のGKEプライベートクラスタ＋踏み台構成&lt;/a&gt;は前提としています。&lt;/p&gt;
&lt;p&gt;Filestore CSI、GCS FUSE CSI、Secret Manager CSI、NodeLocal DNSCache、詳細なLogging/Monitoring設定は扱いません。Dataplane V2とNetworkPolicyの検証に範囲を絞ります。&lt;/p&gt;

&lt;h2 class=&#34;relative group&#34;&gt;検証すること 
    &lt;div id=&#34;検証すること&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;
    
    &lt;span
        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100&#34;&gt;
        &lt;a class=&#34;group-hover:text-primary-300 dark:group-hover:text-neutral-700&#34;
            style=&#34;text-decoration-line: none !important;&#34; href=&#34;#%e6%a4%9c%e8%a8%bc%e3%81%99%e3%82%8b%e3%81%93%e3%81%a8&#34; aria-label=&#34;アンカー&#34;&gt;#&lt;/a&gt;
    &lt;/span&gt;        
    
&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;datapath_provider = &amp;quot;ADVANCED_DATAPATH&amp;quot;&lt;/code&gt;でDataplane V2を有効化できること&lt;/li&gt;
&lt;li&gt;許可したラベルのPodからは、NetworkPolicyで保護されたPodへ通信できること&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;許可していないPodからは、実際に通信が遮断されること&lt;/strong&gt;（apply成功とは別の確認）&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 class=&#34;relative group&#34;&gt;前提環境 
    &lt;div id=&#34;前提環境&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;
    
    &lt;span
        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100&#34;&gt;
        &lt;a class=&#34;group-hover:text-primary-300 dark:group-hover:text-neutral-700&#34;
            style=&#34;text-decoration-line: none !important;&#34; href=&#34;#%e5%89%8d%e6%8f%90%e7%92%b0%e5%a2%83&#34; aria-label=&#34;アンカー&#34;&gt;#&lt;/a&gt;
    &lt;/span&gt;        
    
&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Google Cloud CLI、Terraform、Docker&lt;/li&gt;
&lt;li&gt;Billingが有効な検証用Google Cloud Project&lt;/li&gt;
&lt;li&gt;GKE、Compute Engineを操作できるGoogleアカウント&lt;/li&gt;
&lt;li&gt;検証時のバージョン：Terraform 1.14.3、google 7.46.0&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 class=&#34;relative group&#34;&gt;使用するTerraformコード 
    &lt;div id=&#34;使用するterraformコード&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;
    
    &lt;span
        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100&#34;&gt;
        &lt;a class=&#34;group-hover:text-primary-300 dark:group-hover:text-neutral-700&#34;
            style=&#34;text-decoration-line: none !important;&#34; href=&#34;#%e4%bd%bf%e7%94%a8%e3%81%99%e3%82%8bterraform%e3%82%b3%e3%83%bc%e3%83%89&#34; aria-label=&#34;アンカー&#34;&gt;#&lt;/a&gt;
    &lt;/span&gt;        
    
&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/tech-0222/terraform-gcp-examples/tree/main/Advanced-Examples/16-gke-dataplane-v2-networkpolicy&#34; target=&#34;_blank&#34;&gt;Advanced-Examples/16-gke-dataplane-v2-networkpolicy&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;/blog/20260831_terraform_gcp_advanced_gke_private_bastion/&#34;&gt;前々回: GKEプライベートクラスタ+踏み台&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 class=&#34;relative group&#34;&gt;通信がどこで遮断されるか 
    &lt;div id=&#34;通信がどこで遮断されるか&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;
    
    &lt;span
        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100&#34;&gt;
        &lt;a class=&#34;group-hover:text-primary-300 dark:group-hover:text-neutral-700&#34;
            style=&#34;text-decoration-line: none !important;&#34; href=&#34;#%e9%80%9a%e4%bf%a1%e3%81%8c%e3%81%a9%e3%81%93%e3%81%a7%e9%81%ae%e6%96%ad%e3%81%95%e3%82%8c%e3%82%8b%e3%81%8b&#34; aria-label=&#34;アンカー&#34;&gt;#&lt;/a&gt;
    &lt;/span&gt;        
    
&lt;/h2&gt;
&lt;div class=&#34;mermaid&#34; align=&#34;center&#34;&gt;
  &lt;pre&gt;
flowchart LR
    subgraph NODE[&#34;GKE ノード&#34;]
        A[&#34;Pod A&lt;br/&gt;label: role=client&#34;]
        EBPF[&#34;Dataplane V2&lt;br/&gt;eBPF による適用点&#34;]
        B[&#34;Pod B&lt;br/&gt;label: role=server&#34;]
    end
    NP[&#34;NetworkPolicy&lt;br/&gt;podSelector: role=server&lt;br/&gt;ingress: role=client のみ&#34;]
    NP -.-&gt;|&#34;ルールを配る&#34;| EBPF
    A --&gt;|&#34;許可&#34;| EBPF --&gt; B
    C[&#34;Pod C&lt;br/&gt;label なし&#34;] --&gt;|&#34;遮断&#34;| EBPF
&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;NetworkPolicy はルールを宣言するだけで、実際に落とすのは Dataplane V2 側です。&lt;/p&gt;</description>
      
    </item>
    
  </channel>
</rss>
