Calico 詳解: エンタープライズグレード Kubernetes ネットワーキング
対応バージョン: Calico v3.29+ / Kubernetes 1.28+ 最終更新: February 22, 2026
概要
このセクションでは、Calico の中核となる概念と技術を包括的に解説します。Calico のアーキテクチャ、ネットワーキングモード、ネットワークポリシー、セキュリティ機能、クラウドプロバイダーとの統合を詳しく見ていきます。
Calico とは
Calico は、コンテナ、仮想マシン、ネイティブなホストベースワークロード向けのオープンソースのネットワーキングおよびネットワークセキュリティソリューションです。Tigera によって開発された Calico は、安定性、パフォーマンス、堅牢なネットワークポリシー機能により、世界中の企業から信頼される最も広く導入されている Kubernetes CNI プラグインの 1 つになっています。
主な利点
- 実運用で実証された成熟性: 2016 年以降、数千の組織が本番環境で使用
- 柔軟な Data Plane: iptables、nftables、eBPF の Data Plane から選択可能
- ネイティブ BGP サポート: オンプレミスおよびハイブリッドデプロイメント向けの強力な BGP 統合
- 包括的なネットワークポリシー: Kubernetes NetworkPolicy に加え、拡張された Calico ポリシーを提供
- Windows サポート: Windows コンテナネットワーキングを完全サポート
- エンタープライズ機能: Tigera Calico Enterprise はオブザーバビリティ、コンプライアンス、脅威防御を追加
- クラウドネイティブ統合: AWS、GCP、Azure、オンプレミスインフラストラクチャとシームレスに統合
Calico を選ぶ理由
- 大規模環境で実証済み: 数十億件のトランザクションを処理する企業の本番ワークロードを支えています
- 運用のシンプルさ: 導入と設定が容易
- 強力なコミュニティ: 充実したドキュメントを備えた活発なオープンソースコミュニティ
- ベンダーの柔軟性: あらゆる Kubernetes ディストリビューションで一貫して動作
- コンプライアンス対応: 監査ログとポリシー適用の組み込み機能
バージョンの主なポイント: Calico v3.29
Calico v3.29 は、ネットワーキング、セキュリティ、オブザーバビリティ全体で大幅な改善を提供します。
ネットワーキングの強化
- eBPF Data Plane GA: 完全な機能同等性を備えた本番対応 eBPF Data Plane
- BGP パフォーマンスの改善: ルート収束を最適化し、メモリ使用量を削減
- VXLAN の強化: 自動 MTU 検出によるクロスサブネットルーティングの改善
- IPv6 Dual-Stack: Dual-Stack ネットワーキング環境を完全サポート
セキュリティの改善
- DNS ポリシーの強化: より細かな FQDN ベースのネットワークポリシー
- ポリシー推奨: 観測されたトラフィックに基づく AI 支援ポリシー生成
- 暗号化オプション: ノード間暗号化向けに簡素化された WireGuard 設定
運用機能
- Calico API Server: Calico リソースのネイティブ Kubernetes API 集約
- 診断機能の改善: 強化されたトラブルシューティングツールとヘルスチェック
- リソース最適化: CPU とメモリ消費量を削減
CNI 比較
| 機能 | Calico | Cilium |
|---|---|---|
| 中核技術 | iptables/eBPF | eBPF |
| 成熟性 | 非常に高い (2016+) | 高い (2017+) |
| ネットワークポリシー | L3-L4 (L7 Enterprise) | L3-L7 |
| Service Mesh | 別途 (Enterprise) | 組み込み |
| BGP サポート | 強力 (ネイティブ) | サポート済み |
| オブザーバビリティ | 基本 (Enterprise: 高度) | Hubble (強力) |
| Windows サポート | 完全 | ベータ |
| eBPF Data Plane | 任意 | 必須 |
| 学習曲線 | 中程度 | より急 |
| リソース使用量 | 少ない | 多い |
| kube-proxy 置換 | はい (eBPF モード) | はい |
| マルチクラスター | Federation | Cluster Mesh |
アーキテクチャ概要
Calico のアーキテクチャは、ネットワーキングとネットワークセキュリティを提供するために連携する複数の主要コンポーネントで構成されています。
主なコンポーネント
| コンポーネント | 役割 | 実行場所 |
|---|---|---|
| Felix | 各ホスト上でルートと ACL をプログラム | すべてのノード |
| BIRD | ルート配布のための BGP デーモン | すべてのノード |
| confd | Datastore を監視し、BIRD 設定を生成 | すべてのノード |
| Typha | API server の負荷を軽減するキャッシュプロキシ | 専用 Pod |
| kube-controllers | Kubernetes リソースを Calico と同期 | Control Plane |
| Calico API Server | Kubernetes API 集約レイヤー | Control Plane |
ネットワーキングモード
Calico は、さまざまなインフラストラクチャ要件に対応する複数のネットワーキングモードをサポートしています。
1. IPIP モード (デフォルト)
- クロスサブネットトラフィック向けの IP-in-IP カプセル化
- MTU: 1480 bytes
- 最適な用途: クラウド環境、シンプルなセットアップ
2. VXLAN モード
- VXLAN カプセル化 (UDP port 4789)
- MTU: 1450 bytes
- 最適な用途: 標準的なオーバーレイプロトコルを必要とする環境
3. Direct/Unencapsulated モード
- カプセル化なし、ネイティブルーティング
- MTU: 1500 bytes (フル)
- 最適な用途: BGP を使用するオンプレミス、パフォーマンスが重要なワークロード
モード選択ガイド
Amazon EKS 統合
Calico は Amazon EKS とシームレスに統合し、強化されたネットワークポリシー機能を提供します。
EKS へのクイックインストール
# Install Calico operator
kubectl create -f https://raw.githubusercontent.com/projectcalico/calico/v3.29.0/manifests/tigera-operator.yaml
# Configure Calico for EKS (VXLAN mode)
cat <<EOF | kubectl apply -f -
apiVersion: operator.tigera.io/v1
kind: Installation
metadata:
name: default
spec:
kubernetesProvider: EKS
cni:
type: Calico
calicoNetwork:
bgp: Disabled
ipPools:
- blockSize: 26
cidr: 10.244.0.0/16
encapsulation: VXLAN
natOutgoing: Enabled
nodeSelector: all()
EOF
# Verify installation
kubectl get pods -n calico-systemVPC CNI + Calico Policy を使用する EKS
ネットワーキングに AWS VPC CNI を使用しながら、高度なネットワークポリシーを必要とする EKS 環境向け:
# Install Calico for network policy only
kubectl apply -f https://raw.githubusercontent.com/aws/amazon-vpc-cni-k8s/master/config/master/calico-operator.yaml
kubectl apply -f https://raw.githubusercontent.com/aws/amazon-vpc-cni-k8s/master/config/master/calico-crs.yamlインストール方法
方法 1: Tigera Operator (推奨)
# Install the operator
kubectl create -f https://raw.githubusercontent.com/projectcalico/calico/v3.29.0/manifests/tigera-operator.yaml
# Install Calico with custom configuration
cat <<EOF | kubectl apply -f -
apiVersion: operator.tigera.io/v1
kind: Installation
metadata:
name: default
spec:
calicoNetwork:
ipPools:
- blockSize: 26
cidr: 192.168.0.0/16
encapsulation: IPIP
natOutgoing: Enabled
nodeSelector: all()
EOF方法 2: Helm インストール
# Add Calico Helm repository
helm repo add projectcalico https://docs.tigera.io/calico/charts
helm repo update
# Install Calico
helm install calico projectcalico/tigera-operator \
--version v3.29.0 \
--namespace tigera-operator \
--create-namespace \
--set installation.kubernetesProvider=EKS方法 3: Manifest ベースのインストール
# For clusters with 50 nodes or less
kubectl apply -f https://raw.githubusercontent.com/projectcalico/calico/v3.29.0/manifests/calico.yaml
# For larger clusters (enables Typha)
kubectl apply -f https://raw.githubusercontent.com/projectcalico/calico/v3.29.0/manifests/calico-typha.yamlネットワークポリシーの例
基本的な Kubernetes 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: 8080Calico GlobalNetworkPolicy
apiVersion: projectcalico.org/v3
kind: GlobalNetworkPolicy
metadata:
name: deny-all-egress-except-dns
spec:
selector: all()
types:
- Egress
egress:
- action: Allow
protocol: UDP
destination:
ports:
- 53
- action: Allow
protocol: TCP
destination:
ports:
- 53
- action: DenyFQDN を使用する Calico NetworkPolicy
apiVersion: projectcalico.org/v3
kind: NetworkPolicy
metadata:
name: allow-external-api
namespace: production
spec:
selector: app == 'web'
types:
- Egress
egress:
- action: Allow
protocol: TCP
destination:
domains:
- "api.example.com"
- "*.amazonaws.com"
ports:
- 443モニタリングとオブザーバビリティ
Prometheus メトリクス
Calico は Prometheus を介してメトリクスを公開します。監視すべき主なメトリクス:
# Felix metrics endpoint configuration
apiVersion: projectcalico.org/v3
kind: FelixConfiguration
metadata:
name: default
spec:
prometheusMetricsEnabled: true
prometheusMetricsPort: 9091主なメトリクス
| メトリクス | 説明 |
|---|---|
felix_active_local_endpoints | ノード上のアクティブなエンドポイント数 |
felix_iptables_rules | プログラムされた iptables ルール数 |
felix_ipsets_calico | 維持されている IP set 数 |
felix_int_dataplane_failures | Data Plane のプログラミング失敗 |
felix_cluster_num_hosts | クラスター内のホスト総数 |
ヘルスチェックエンドポイント
# Check Felix health
curl -s http://localhost:9099/liveness
curl -s http://localhost:9099/readiness
# Check Typha health
curl -s http://localhost:9098/livenessトラブルシューティング クイックリファレンス
よく使うコマンド
# Check Calico system status
kubectl get pods -n calico-system
# View Calico node status
kubectl get nodes -o custom-columns=NAME:.metadata.name,CALICO:.status.conditions[*].type
# Check IP pools
kubectl get ippools -o wide
# View network policies
kubectl get networkpolicies -A
kubectl get globalnetworkpolicies
# Felix logs
kubectl logs -n calico-system -l k8s-app=calico-node -c calico-node
# BIRD status (BGP)
kubectl exec -n calico-system calico-node-xxxxx -c calico-node -- birdcl show protocolsよくある問題と解決策
| 問題 | 診断 | 解決策 |
|---|---|---|
| Pod が ContainerCreating で停止する | Felix ログで IPAM エラーを確認 | IPPool 設定を確認 |
| ノード間接続に失敗する | カプセル化モードを確認 | IPIP/VXLAN が有効であることを確認 |
| ネットワークポリシーが適用されない | ポリシーの順序とセレクターを確認 | calicoctl でポリシーを検証 |
| Felix の CPU 使用率が高い | iptables ルールが多すぎる | eBPF Data Plane を検討 |
詳解の目次
- Calico とは何か、プロジェクトの歴史
- ラボ環境のセットアップ
- 中核機能の概要
- ユースケースとデプロイメントシナリオ
- コミュニティとガバナンス
- コンポーネントアーキテクチャの概要
- Felix: Calico Agent
- BIRD: BGP ルーティングデーモン
- confd: 設定管理
- Typha: スケーリングコンポーネント
- kube-controllers: Kubernetes 統合
- Datastore オプション
- パケットフロー分析
- IPIP カプセル化モード
- VXLAN カプセル化モード
- Direct/Unencapsulated モード
- モードの比較と選択
- パフォーマンスベンチマーク
- クラウドプロバイダー互換性
- MTU 最適化
選択ガイド: Calico vs Cilium
次の場合は Calico を選択:
- 本番環境で実証された安定性と成熟性が必要
- Windows コンテナのサポートが必要
- 既存のネットワークインフラストラクチャとの BGP 統合が重要
- 高度な機能よりも運用のシンプルさを優先する
- リソース効率を重視する
- iptables ベースのネットワーキングにすでに精通している
次の場合は Cilium を選択:
- 高度な L7 ネットワークポリシーが必要
- 組み込みの Service Mesh 機能が望ましい
- Hubble による詳細なオブザーバビリティが重要
- 最先端の eBPF 機能を活用したい
- Cluster Mesh を使用したマルチクラスター接続が必要
ハイブリッドアプローチ
一部の組織では両方を使用しています:
- 安定性が必要な本番ワークロードには Calico
- 新機能を試す開発/ステージング環境には Cilium
参考資料
- Calico 公式ドキュメント
- Calico GitHub リポジトリ
- Tigera Calico Enterprise
- Calico ネットワークポリシーガイド
- Amazon EKS Calico 統合
- calicoctl リファレンス
- Calico eBPF Data Plane
クイズ
このセクションで学んだ内容を確認するには、Calico 詳解クイズに挑戦してください。