Cilium

AKSでCiliumを有効化する手順とベストプラクティス | Azure CNI プレビュー

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

スポンサードリンク

前提条件と環境準備

このセクションでは、Cilium が有効な AKS クラスタを作成するために最低限必要な Azure アカウント情報とローカルツールのセットアップ手順を説明します。権限不足や CLI の古いバージョンはコマンド失敗の主因になるため、事前確認が重要です。

Azure サブスクリプションと権限

対象サブスクリプションに対して Contributor 以上(または Microsoft.ContainerService/managedClusters/* が許可されたカスタムロール)を持っていることを確認してください。

注: サブスクリプションレベルで課金が発生し、権限が足りないと AKS の作成・更新が失敗します。

Azure CLI バージョンの確認と推奨バージョン(2026‑05‑01 現在)

Cilium 関連フラグは Azure CLI 2.55 以降で提供されています。以下コマンドでインストール済みバージョンを確認し、必要に応じてアップデートしてください。

  • 推奨バージョン: 2.55.0 以上
  • 日付付き注記: 将来的に必要バージョンは変わる可能性があります。最新情報は公式リファレンス(Azure CLI release notes)で随時確認してください。

注意: フラグ名やプレビュー機能名は Azure のアップデートに伴い変更されることがあります。--cilium-enabled--enable-advanced-networking などの正確な名称は公式ドキュメントで必ずチェックしましょう。


ACNS(Advanced Container Networking Services)プレビュー機能の有効化

このセクションでは、Cilium が組み込まれた Azure CNI(ACNS)を利用できるように、サブスクリプション単位でプレビュー機能を登録する手順を示します。プレビューが未登録だと --cilium-enabled フラグは無視され、従来の Azure CNI が使用されます。

機能登録手順

公式確認: 機能名が AdvancedNetworkingPreview であるかは、Azure のプレビュー機能一覧で随時確認してください。

サブスクリプションへの反映


Cilium 対応 AKS クラスターの作成

ACNS が有効化された状態で、Cilium ベースのデータプレーンを持つ AKS クラスタを構築します。以下は実務向けに最小限必要なパラメータをまとめたサンプルです。

推奨 az aks create コマンドとフラグ解説

フラグ 説明 推奨設定
--network-plugin azure Azure CNI(ACNS 前提)を使用 必須
--enable-advanced-networking true ACNS プレビュー有効化 必須
--cilium-enabled true Cilium データプレーンへ切替 必須
--kubernetes-version 2026‑05‑01 時点の最新安定版 (1.30.0)。日付付き注記でバージョン変更に備える 常に最新を選択
--node-count ワーカー数(可用性確保) 最低 3 台推奨

注意: フラグ名は Azure CLI のリリースに伴い変わる可能性があります。コマンド実行前に az aks create -h または公式ドキュメントで最新情報を確認してください。


デプロイ後の検証と mTLS 設定

クラスタ作成が完了したら、Cilium が正しく稼働しているかを確認し、その上で相互 TLS(mTLS)暗号化を有効にします。--enable-azure-cni-mtls はプレビュー機能のため、事前に ACNS の登録が必要です。

Cilium エージェントの状態確認

期待結果は cilium-agentRunningcilium statusKubernetes: OK が表示されることです。

mTLS の有効化手順(プレビュー機能)

プレビュー有効化手順: --enable-azure-cni-mtls を使用する前に、ACNS プレビュー機能 が登録済みであることを必ず確認してください。

簡易動作検証

  1. mtls-test 名前空間に nginx デプロイと curl クライアント Pod を配置
  2. kubectl exec で相互通信し、TLS エラーが出ないことを確認

成功すれば、Cilium が自動で Envoy プロキシと証明書を付与し、Pod 間通信が暗号化されます。


サンプルアプリケーションと CiliumNetworkPolicy

実運用ではネットワークポリシーで細かく通信を制御します。ここでは nginx と redis の 2‑tier アプリに対して最小権限のポリシーを適用する例を示します。

アプリケーションデプロイ例

CiliumNetworkPolicy 定義と通信テスト

ポリシー(nginx → redis のみ許可)

通信テスト手順

期待結果は nginx → redis が成功、逆方向が Connection refused となります。

ポイント: CiliumNetworkPolicy は Kubernetes 標準の NetworkPolicy と互換性がありますが、L7 フィルタや eBPF ベースの高度な制御も同一リソースで記述できる点がメリットです。


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

Cilium の導入時に遭遇しやすい障害と、安定運用のためのベストプラクティスをまとめます。問題発生時はまず cilium status --verbose とノード上の dmesg | grep bpf を確認すると原因特定が速くなります。

代表的な障害と対策

障害 主な原因 推奨対策
cilium‑agent が CrashLoopBackOff ノード OS カーネルが eBPF 未対応(< 4.14) AKS のノードプールを Ubuntu 22.04 系に変更、または --node-osdisk-type Ephemeral で最新イメージを再デプロイ
※カーネル要件は Linux 4.14 以上(参照: eBPF Kernel Requirements
NetworkPolicy が効かない 従来の Azure CNI (kubenet) が残っている クラスタ作成時に必ず --network-plugin azure--enable-advanced-networking true を指定
アップグレード時に Cilium が停止 AKS バージョンと Cilium バイナリの互換性不一致 アップグレード前に公式ドキュメントで対象バージョン相性を確認し、cilium-agent のロールアウト戦略(例: --max-surge=1)を設定
mTLS 設定後に Pod が起動失敗 Envoy が証明書取得できない Azure AD Service Principal に Microsoft.Network/virtualNetworks/read 権限を付与し、ネットワーク情報へのアクセスを許可
--enable-azure-cni-mtls はプレビュー機能であることに注意(事前に ACNS の登録が必要)

運用上のベストプラクティス

  1. リソースタグ付与
    bash
    az resource tag \
    --ids $(az aks show -g myResourceGroup -n cilium-aks-demo --query id -o tsv) \
    --tags env=prod owner=teamA

    タグでコストセンターや環境情報を一元管理し、Azure Cost Management と連携させます。

  2. ロギング・モニタリング

  3. Azure Monitor for Containers (az aks enable-addons -a monitoring) で Cilium の eBPF メトリクスが自動収集。
  4. Prometheus + Grafana を併用する場合は cilium-exporter デプロイを推奨。

  5. CI/CD パイプラインへの組み込み(例: GitHub Actions)

yaml
- name: AKS クラスタ作成 (Cilium 有効化)
run: |
az aks create ... --cilium-enabled true

  • name: CiliumNetworkPolicy デプロイ
    run: |
    kubectl apply -f policies/

変更があれば kubectl rollout restart を実行し、Zero‑Downtime デプロイを実現。

  1. 定期的な eBPF カーネルチェック
    AKS のマネージドノードは自動パッチが適用されますが、eBPF が削除されたカーネルへ降格しないよう az aks nodepool update --enable-node-public-ip false で安定性を確保。

  2. プレビュー機能の管理

  3. ACNS と --enable-azure-cni-mtls はプレビューであるため、機能名やフラグが変更される可能性があります。導入前に必ず公式リファレンスで最新情報を確認してください。

まとめ

項目 要点
前提条件 Contributor 権限以上のサブスクリプション、Azure CLI 2.55+(日付付き注記あり)
ACNS プレビュー有効化 az feature registeraz provider register の手順で Cilium 対応 Azure CNI を使用可能に
クラスタ作成 --network-plugin azure --enable-advanced-networking true --cilium-enabled true が鍵
動作確認 kubectl get pods -n kube-system -l k8s-app=ciliumcilium status でエージェント稼働を検証
mTLS 暗号化 プレビュー機能 --enable-azure-cni-mtls true を有効化し、Pod 間通信が自動暗号化されることを確認
ポリシー実装例 CiliumNetworkPolicy で最小権限の通信制御(nginx ↔ redis)を検証
トラブルシューティング eBPF カーネル要件(≥ 4.14)、プラグイン競合、アップグレード時の互換性に注意。cilium statusdmesg が第一手段
ベストプラクティス タグ付与・モニタリング・CI/CD 自動化・定期的なカーネルチェック・プレビュー機能管理

これらの手順とポイントを押さえておけば、Azure CNI powered by Cilium を活用した AKS クラスタを安全かつ効率的に構築・運用できます。


参考情報

スポンサードリンク

-Cilium