AI

Kubernetesネットワークポリシー比較:Calico vs Cilium vs Weave で通信を制御する

オープンソースラボ編集部2026年6月14日

Kubernetesネットワークポリシー比較:Calico vs Cilium vs Weave で通信を制御する

🌐 KubernetesのPod間通信を制御するCNIプラグイン。Calico・Cilium・Weave Netの特徴とネットワークポリシーの実装を比較します。

Kubernetes CNIプラグインとは

Container Network Interface(CNI)はKubernetesのPod間ネットワーキングを実装するプラグインです。ネットワークポリシーでPod間の通信を許可/拒否できます。

主要ツール比較表

項目CalicoCiliumWeave Net
ライセンスApache 2.0Apache 2.0Apache 2.0
データプレーンiptables/eBPFeBPFiptables/VXLAN
eBPF対応○(v3.13+)◎ネイティブ×
NetworkPolicy
eBPF性能
BGPルーティング×
Service Mesh◎(Hubble)×
暗号化WireGuard ○WireGuard ◎◎(built-in)
セットアップ◎ 超簡単

各ツールの特徴

Calico

最も広く使われているKubernetes CNIプラグイン。BGPルーティングとiptables/eBPFの柔軟な選択が特徴です。

主な特徴:

  • BGPプロトコルでルートを配布(オンプレ向き)
  • GlobalNetworkPolicyでクラスタ全体のポリシーを一括管理
  • eBPFモードで高パフォーマンス(Calico v3.13+)
  • Tigera Operatorで管理
# Calico インストール
kubectl create -f https://raw.githubusercontent.com/projectcalico/calico/v3.27.0/manifests/tigera-operator.yaml
kubectl create -f https://raw.githubusercontent.com/projectcalico/calico/v3.27.0/manifests/custom-resources.yaml
# NetworkPolicy:フロントエンドからバックエンドへの通信を許可
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: allow-frontend-to-backend
  namespace: production
spec:
  podSelector:
    matchLabels:
      app: backend
  policyTypes:
    - Ingress
  ingress:
    - from:
        - podSelector:
            matchLabels:
              app: frontend
      ports:
        - protocol: TCP
          port: 8080
---
# Calico GlobalNetworkPolicy(クラスタ全体のデフォルト拒否)
apiVersion: crd.projectcalico.org/v1
kind: GlobalNetworkPolicy
metadata:
  name: default-deny-all
spec:
  selector: all()
  types:
    - Ingress
    - Egress

向いているケース: BGPが必要なオンプレ・広い実績・標準的なユースケース

Cilium

eBPFを核心技術として使うCNIプラグイン。カーネルレベルでネットワークを処理するため、iptablesより高速です。

主な特徴:

  • eBPFでカーネルレベルのネットワーク処理(iptables不要)
  • Hubble(可観測性)でPod間通信をリアルタイム可視化
  • L7ポリシー(HTTP・gRPC・DNS等のアプリ層での制御)
  • Cluster MeshでマルチクラスタのmTLS通信
# Ciliumのインストール(Helm)
helm repo add cilium https://helm.cilium.io/
helm install cilium cilium/cilium --version 1.15.3   --namespace kube-system   --set kubeProxyReplacement=true   --set hubble.relay.enabled=true   --set hubble.ui.enabled=true
# Cilium NetworkPolicy(L7ポリシー - HTTP path制御)
apiVersion: cilium.io/v2
kind: CiliumNetworkPolicy
metadata:
  name: allow-http-get-only
spec:
  endpointSelector:
    matchLabels:
      app: api-server
  ingress:
    - fromEndpoints:
        - matchLabels:
            app: frontend
      toPorts:
        - ports:
            - port: "8080"
              protocol: TCP
          rules:
            http:
              - method: GET    # GETのみ許可(POSTは拒否)
                path: /api/.*

向いているケース: 高性能・L7ポリシー・サービスメッシュ代替・大規模K8s

Weave Net

最もセットアップが簡単なCNIプラグイン。1コマンドでインストールでき、自動暗号化が標準で内蔵されています。

主な特徴:

  • 1コマンドでインストール完了
  • WireGuard不要の独自暗号化(AES-256)を標準内蔵
  • 標準的なKubernetes NetworkPolicyに対応
  • DNS-based service discovery
# Weave Netのインストール(1コマンド)
kubectl apply -f https://github.com/weaveworks/weave/releases/download/v2.8.1/weave-daemonset-k8s.yaml

# 暗号化の有効化(環境変数)
# kubectl apply に --env WEAVE_PASSWORD=your-secret を追加
# 標準のKubernetes NetworkPolicy(Weaveでも動作)
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: db-isolation
spec:
  podSelector:
    matchLabels:
      app: postgres
  policyTypes:
    - Ingress
  ingress:
    - from:
        - podSelector:
            matchLabels:
              app: api-server
      ports:
        - port: 5432

向いているケース: 小規模・シンプル・暗号化を最初から

選択ガイド

状況推奨
BGP必要・オンプレ・標準的Calico
高性能・L7ポリシー・可観測性Cilium
小規模・シンプル・内蔵暗号化Weave Net

内部リンク

外部リソース

FAQ

Q. iptablesベースとeBPFベースの性能差はどのくらいですか?

大規模クラスタ(Nodeが100台以上)でiBPFの優位性が顕著になります。小規模ではiptablesで十分です。

Q. Weave Netはメンテナンス中ですか?

Weaveworksが2024年に閉鎖を発表し、Weave Netの活発な開発は止まっています。新規採用はCalicoかCiliumを推奨します。

Q. Ciliumはkube-proxyを置き換えられますか?

はい。kubeProxyReplacement=trueでCiliumがkube-proxyの機能を完全に代替できます(eBPFベースでより高速)。

Q. 既存のCNIプラグインを本番環境で別のものに切り替えるのは大変ですか?

クラスタの再構築が必要なことが多く、本番環境での切り替えは非常に難しいです。最初の選択が重要です。

他の記事も読む

Let's Build Together

OSS導入、自社だけで悩まない。

ツール選定から構築・運用・AI活用まで、オープンソースラボ運営元のClasslessが伴走します。初回のご相談は無料です。