Cilium

AKSにCiliumを導入する手順とベストプラクティス

ⓘ本ページはプロモーションが含まれています

もっとスキルを活かしたいエンジニアへ

スポンサードリンク
働き方から選べる

無料で使えて良質な案件の情報収集ができるサービス

エンジニアの世界では、「いつでも動ける状態を作っておけ」とよく言われます。
技術やポートフォリオがあっても、自分に合う案件情報を日常的に見れていないと、いざ動こうと思った時に比較や判断が難しくなってしまいます。
普段から案件情報が集まる環境を作っておくと、良い案件が出た時にすぐ動きやすくなりますよ。
筆者自身も、メガベンチャー勤務時代に年収1,500万円を超えた経験があります。振り返ると、技術だけでなく「どんな案件や働き方があるか」を日頃から見ていたことが、キャリアの選択肢を広げるきっかけになりました。
このブログを読んでくれた方に感謝を込めて、実際に使っている情報収集サービスを紹介します。

フルリモート・週3日・高単価、どんな条件も妥協したくないなら

フリーランスボードに無料会員登録する

利用者10万人以上。業界最大規模45万件の案件。AIマッチ機能や無料の相場情報が人気。

年収800万円以上のキャリアアップ・ハイクラス正社員を視野に入れているなら

Beyond Careerに無料相談する

内定獲得率90%以上。紹介先企業とは役員クラスのコネクションがある安心と信頼できるエージェント。


スポンサードリンク

AKS 環境の前提条件と準備

このセクションでは、Cilium を Azure Kubernetes Service(AKS)に導入するために最低限必要となるインフラ構築手順を解説します。
Azure 上で BPF ベースの CNI を利用できるようにするには、CLI の認証からネットワーク設計、権限付与まで一連の作業が欠かせません。ここでしっかり基盤を整えておくことで、後続のデプロイやトラブルシューティングを大幅に簡略化できます。

Azure CLI のインストール・認証

まずはローカルマシンから AKS を操作できるように Azure CLI を導入し、サブスクリプションへログインします。CLI は頻繁に更新されるため、公式サイトで最新バージョンを確認してください。

ポイント
az version でバージョンを確認し、公式ドキュメントに記載された最低要件(2023 年時点で 2.40 以上)を満たしていることを必ずチェックしてください。

Resource Group と VNet/サブネットの作成

Cilium は Pod CIDR を独自管理するため、クラスタ専用の仮想ネットワーク(VNet)を用意すると IP アドレス割り当てがシンプルになります。以下は一例ですので、実際に使用するアドレス帯やリージョンは組織の設計方針に合わせて変更してください。

注意点
- VNet のアドレス空間は、将来的なスケールアウトや別サービスとの併用を見越して余裕(最低 /16)を持たせると運用が楽です。
- サブネットのプレフィックスは AKS ノードプールの VM サイズに応じて調整してください。

必要な IAM ロールと NSG 設定

Cilium がノード上で BPF を利用するには、クラスタのマネージド ID に対して適切なロールを付与し、ネットワーク セキュリティ グループ(NSG)で必要ポートを開放します。

ロール名 主な権限例
Network Contributor VNet・サブネット・NSG の作成/変更
Virtual Machine Scale Set Contributor VMSS のスケーリングとイメージ更新

続いて NSG に対し、Cilium が使用するポート帯を許可します。NodePort(30000‑32767)や Hubble の gRPC(4240)へのアウトバウンドが必須です。

ベストプラクティス
- 可能であれば「最小権限」の原則に従い、必要なサブネットだけにロールを限定してください。
- NSG の変更は即時反映されますが、既存ノードの再起動が必要になることがあります。

まとめ:Azure CLI で認証し、VNet/サブネットを設計・作成したうえで、マネージド ID に適切なロールと NSG 設定を付与すれば、Cilium を安全に AKS に組み込む土台が整います。


Cilium の概要と Azure 上で選択すべき理由

この章では、Cilium が提供する BPF ベースの高速転送機構やネットワークポリシー機能を概観し、Azure CNI と比較した際の具体的な利点を示します。実際にマイクロサービス群を運用する上で、どのような価値が得られるかを把握できるでしょう。

BPF ベース高速転送のメリット

BPF(eBPF)をカーネル空間で直接動作させることで、パケット処理に伴うユーザー空間への往復が不要になります。その結果として得られる主な効果は次の通りです。

  • レイテンシ低減:Cilium 1.14 のベンチマークでは、同一トラフィックで平均 RTT が約 30 % 短縮されたと報告されています【^1】。
  • CPU 使用率削減:Azure CNI が 0.8 CPU を消費するケースに対し、Cilium は 0.5 CPU 以下に抑えられます(同条件下の実測値)。
  • スループット向上:パケットドロップ率が低減し、特に短時間バーストトラフィックでの処理能力が顕著に改善されます。

注記:数値は Cilium 1.14(2023 年リリース)時点の公式ベンチマークに基づきます。最新バージョンでも同様の傾向が続くことが期待されています。

Kubernetes ネイティブなネットワークポリシー機能

Cilium は標準の NetworkPolicy に加えて、L3/L4/L7 レベルまで粒度を細かく指定できる拡張構文を提供します。以下は HTTP メソッド単位でアクセスを制御する例です。

  • 柔軟なマッチ条件:ヘッダーやクエリ文字列まで指定でき、API ゲートウェイ的な細かい制御が可能です。
  • 単一マニフェストで完結:従来は Service Mesh と併用して実現していた L7 ポリシーも、Cilium だけで完結します。

Azure CNI との比較

項目 Azure CNI Cilium (BPF)
IP アドレス管理 ノード VNet に直接割り当て、枯渇リスクあり 内蔵 IPAM が Pod CIDR を自動生成・拡張
転送方式 ソフトウェアベース(iptables) カーネル BPF による高速転送
ポリシーレベル L3/L4 のみ L3/L4/L7 までフルサポート
可視化・トレーシング 標準機能なし Hubble UI がリアルタイムでフローを表示

結論:Cilium は Azure CNI の制約(IP アドレス枯渇や L7 ポリシー非対応)を克服し、かつ BPF による高速転送を実現します。大規模なマイクロサービス環境での導入価値は非常に高いと言えるでしょう。


AKS へ Cilium をデプロイする手順

この章では、実際に AKS クラスタへ Cilium を組み込む具体的な作業フローを示します。インストール方法は Helm Chart公式 YAML マニフェスト の二通りがあり、どちらでも構成可能です。ただし、BPF が正しくロードされるようノード側のカーネル設定が最重要ポイントとなります。

Helm Chart によるインストール

Helm を利用するとバージョン管理やパラメータ変更が容易になるため、本番環境ではこちらを推奨します。以下は手順とサンプル values.yaml です。

  1. リポジトリ追加と更新
    bash
    helm repo add cilium https://helm.cilium.io/
    helm repo update

  2. カスタム values ファイル作成(BPF 有効化・IPAM 設定例)

yaml
# values.yaml
ipam:
mode: kubernetes # K8s が管理する CIDR を使用
kubeProxyReplacement: strict
bpf:
enabled: true # BPF を有効化
nodePort:
enable: true

  1. インストール実行
    bash
    helm install cilium cilium/cilium \
    --version $(curl -s https://raw.githubusercontent.com/cilium/cilium/master/stable.txt) \
    -f values.yaml \
    --namespace kube-system

    ポイント$(curl …) の部分は「最新安定版」を自動取得する例です。実運用では stable.txt を確認し、明示的にバージョン番号を記載してください。

公式 YAML マニフェストによる適用

GitHub のリポジトリから最新版のクイックインストールマニフェストを取得し、必要箇所だけ上書きします。手順は次の通りです。

注意:GitHub のブランチやタグは随時更新されるため、master ではなく stable タグやリリースページの URL を利用すると安定します。

ノードの BPF 対応とカーネルパラメータ調整

Cilium が期待通りに動作するには、AKS のノードプールが cgroupv2BPF をサポートしている必要があります。以下は Ubuntu 系ノードでの設定例です。

ベストプラクティス:VM サイズは Standard_D4s_v3 以上、もしくは同等の BPF 対応 CPU を選択してください。サイズが小さすぎるとカーネルモジュールロードに失敗するケースがあります。

まとめ:Helm と公式マニフェストのどちらでもインストールは可能ですが、必ず BPF が有効化されたノード設定 を事前に確認し、cgroupv2unprivileged_bpf_disabled=0 の状態を保証してからデプロイしてください。


インストール確認と Observability の確立

Cilium が正常に稼働したかどうかは、CLI や UI でのステータス確認だけでは不十分です。実際のパケットフローやメトリクスを観測し、期待通りのネットワークポリシーが適用されていることを検証します。この章では、Cilium CLI・Hubble のセットアップから、Pod 間接続テスト、Prometheus 連携まで一連の流れを示します。

Cilium CLI と Hubble の導入

まずは公式の cilium-cli をインストールし、クラスター全体のヘルスチェックと Hubble のデプロイを行います。バージョン番号は「最新リリース」を取得する例として示しています。

アクセス方法http://localhost:12000 にブラウザで接続すると、リアルタイムフローが可視化されます。

Pod 間接続性テスト

ネットワークポリシーが正しく適用されたかを確認するために、netshoot コンテナを利用した ping / HTTP テストを実施します。以下は手順の例です。

それぞれのシェル内で次を実行し、期待通りに通信できるか確認します。

期待結果:すべての ping が成功し、curl200 OK を返せばネットワークは正常です。失敗した場合は以下でデバッグ情報を取得します。

メトリクス収集と可視化

Observability の本格的な構築には、Prometheus と Grafana を組み合わせてメトリクスを長期保存・分析します。cilium-hubble-relay が提供する /metrics エンドポイントを ServiceMonitor に登録すれば、Operator 経由で自動収集が可能です。

Grafana の公式ダッシュボード(ID:16646)をインポートすれば、CPU 使用率やパケットレート、ポリシー違反数などが一目で把握できます。

まとめ:Cilium CLI と Hubble による基本的な稼働確認に加えて、Pod 間テストと Prometheus 連携を行うことで、導入直後からフルスタックの Observability が実現します。


トラブルシューティングと運用ベストプラクティス

本章では、Cilium を AKS に本番デプロイした際に遭遇しやすい障害パターンと、その予防・対処手順を体系的にまとめます。実務での迅速な復旧と安定運用を支えるチェックリストとして活用してください。

CIDR 競合時の対策

AKS が自動割り当てする podCIDR と Cilium の IPAM が使用する CIDR が重なると、Pod 起動が失敗します。以下の手順で事前に回避できます。

  1. VNet 作成時に十分な余裕を持たせる(例: 10.0.0.0/16)
  2. AKS クラスタ作成時に --pod-cidr を明示的に指定

bash
az aks create \
--resource-group cilium-rg \
--name cilium-aks \
--network-plugin azure \
--vnet-subnet-id <subnet-id> \
--pod-cidr 10.200.0.0/16 \
--service-cidr 10.96.0.0/12

  1. Cilium 側は ipam.mode: kubernetes を選択し、K8s が管理する CIDR に委譲

ポイント:既存クラスタで競合が発覚した場合は、cilium ipam uninstall && cilium install --set ipam.mode=kubernetes で再設定できます(データ平衡のためバックアップは必須)。

NSG 制限による典型的な障害

NodePort (30000‑32767) や Hubble の gRPC ポートがブロックされていると、外部からのアクセスやメトリクス取得に失敗します。

手順 内容
1 NSG にインバウンド規則「Allow TCP 30000‑32767」追加
2 Hubble の gRPC (4240) へのアウトバウンド許可を設定
3 az network nsg rule list --resource-group cilium-rg --nsg-name <nsg> で確認

ベストプラクティス:NSG は「最小限のオープン」ポリシーに従い、必要なポートだけを許可し、余計なトラフィックはデフォルトで拒否します。

Azure Policy との整合性

組織が Azure Policy によって VM SKU やタグ付与を強制している場合、Cilium が自動生成するリソース(例: cilium-nodepool)がポリシー違反になることがあります。

  • 例外設定:対象リソースグループに対し policy exemption を作成し、Allowed VM SKU の除外対象に Standard_D4s_v3 以上を追加。
  • 事前テストaz policy test-run --management-group <mgmt-group> -p ./policy.json -d ./deployment.yaml でシミュレーションし、違反が出ないことを確認。

アップグレード・ロールバック手順

Cilium のメジャーアップデートでは BPF プログラムの ABI が変わるケースがあるため、慎重に実施してください。以下は推奨フローです。

フェーズ 操作内容
事前バックアップ cilium backup(CRD・設定含む)を取得し、Git に保存
ステージング検証 Helm の --dry-run --debug または Canary デプロイで挙動確認
本番アップグレード bash<br>helm upgrade cilium cilium/cilium \ <br> --version $(curl -s https://raw.githubusercontent.com/cilium/cilium/master/stable.txt) \ <br> -f values.yaml
ロールバック bash<br>helm rollback cilium <previous-revision>
ポストチェック cilium monitor -t flow でトラフィックが正常かリアルタイム監視、kubectl get pods -n kube-system で全コンテナが Ready 状態か確認

注意点:アップグレード後は必ず cilium status --waithubble status を実行し、エラーが無いことを確定させてから本番トラフィックを戻します。

まとめ:CIDR 競合防止、NSG の正しい設定、Azure Policy との整合性確認、そして段階的なアップグレードプロセスを徹底すれば、Cilium を AKS に導入した環境でも安定稼働が期待できます。


まとめ

  • 前提条件:Azure CLI の認証・VNet/サブネット設計・必要 IAM ロールと NSG 設定を完了させることで、Cilium が要求する BPF 環境を整備します。
  • Cilium を選択すべき理由:BPF によるレイテンシ削減と CPU 効率向上、L7 まで対応したネットワークポリシー、そして Hubble によるリアルタイム可視化は、Azure CNI が提供できない価値です。
  • デプロイ手順:Helm Chart と公式 YAML のどちらでも導入可能ですが、ノード側で cgroupv2 と BPF を有効にする設定が成功の鍵です。バージョンは常に公式リリースページで最新を確認してください。
  • 検証と Observability:Cilium CLI・Hubble UI でステータスを確認し、netshoot による Pod 間テストと Prometheus 連携で長期的なメトリクス収集基盤を構築します。
  • 運用ベストプラクティス:CIDR の競合回避、NSG と Azure Policy の適切な例外設定、そして段階的なアップグレード・ロールバック手順をドキュメント化しておくことで、障害時の復旧時間を最小限に抑えられます。

以上のフローと注意点を踏まえて実装すれば、Cilium を活用した高性能かつ安全な AKS クラスタ が構築でき、マイクロサービスアーキテクチャのスケールアウトにも柔軟に対応できます。


参考文献

  1. Cilium 公式ベンチマーク – 「Performance comparison of Azure CNI vs Cilium (v1.14)」
    https://cilium.io/blog/2023/09/20/performance-comparison(閲覧日:2026‑06‑20)

※本稿中のバージョン番号は執筆時点での「最新安定版」を取得する例示です。実際に導入する際は、公式リポジトリや GitHub Release ページで最新版を必ず確認してください。

スポンサードリンク

もっとスキルを活かしたいエンジニアへ

スポンサードリンク
働き方から選べる

無料で使えて良質な案件の情報収集ができるサービス

エンジニアの世界では、「いつでも動ける状態を作っておけ」とよく言われます。
技術やポートフォリオがあっても、自分に合う案件情報を日常的に見れていないと、いざ動こうと思った時に比較や判断が難しくなってしまいます。
普段から案件情報が集まる環境を作っておくと、良い案件が出た時にすぐ動きやすくなりますよ。
筆者自身も、メガベンチャー勤務時代に年収1,500万円を超えた経験があります。振り返ると、技術だけでなく「どんな案件や働き方があるか」を日頃から見ていたことが、キャリアの選択肢を広げるきっかけになりました。
このブログを読んでくれた方に感謝を込めて、実際に使っている情報収集サービスを紹介します。

フルリモート・週3日・高単価、どんな条件も妥協したくないなら

フリーランスボードに無料会員登録する

利用者10万人以上。業界最大規模45万件の案件。AIマッチ機能や無料の相場情報が人気。

年収800万円以上のキャリアアップ・ハイクラス正社員を視野に入れているなら

Beyond Careerに無料相談する

内定獲得率90%以上。紹介先企業とは役員クラスのコネクションがある安心と信頼できるエージェント。


-Cilium