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間の通信を許可/拒否できます。
主要ツール比較表
| 項目 | Calico | Cilium | Weave Net |
|---|---|---|---|
| ライセンス | Apache 2.0 | Apache 2.0 | Apache 2.0 |
| データプレーン | iptables/eBPF | eBPF | iptables/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プラグインを本番環境で別のものに切り替えるのは大変ですか?
クラスタの再構築が必要なことが多く、本番環境での切り替えは非常に難しいです。最初の選択が重要です。