Contents
AKS環境でのCilium Hubble導入準備
AKS環境でCilium Hubbleを導入する際には、クラスターの状態確認とHelmチャートの設定が不可欠です。本セクションでは、事前チェック項目やHelmリポジトリ構成方法について解説します。インストール前の準備が不完全だと、後々のトラブルを防ぐことが困難になるため、以下のステップを確認してください。
AKSクラスターの事前確認
AKSクラスターの基本的な要件として、Kubernetesバージョン1.24以上とCNIプラグインとしてCiliumが導入済みであることを確認します。また、Hubbleを有効にするにはCiliumのeBPF機能が動作していることも条件です。以下のコマンドでクラスターの状態をチェックできます。
|
1 2 3 |
kubectl get nodes kubectl get pods -n kube-system | grep cilium |
注意: HubbleはCiliumの拡張機能であり、Ciliumが正常に動作していないとHubbleも起動しません。インストール前のクラスター状態確認は必須です。
Helmチャートのリポジトリ設定
Helmを使用してCiliumとHubbleを一括で導入するには、公式リポジトリからチャートを取得します。以下に手順を示します。
-
Helmリポジトリの追加:
bash
helm repo add cilium https://helm.cilium.io/
helm repo update -
リポジトリのリスト確認:
bash
helm list -r cilium
リポジトリ設定でエラーが発生した場合、
helm initやkubectl config viewでクラスター接続情報を再確認してください。
CiliumとHubbleのHelmチャートによるデプロイ
CiliumとHubbleはHelmチャートを用いて簡単に導入できますが、設定ファイル(values.yaml)のカスタマイズが重要です。本セクションでは、主要なパラメータの調整方法とインストール手順を解説します。
values.yamlのカスタマイズポイント
HelmチャートでCilium+Hubbleをデプロイする際は、values.yamlのカスタマイズが不可欠です。特に以下のパラメータに注意してください。
| 項目 | 値例 | 補足 |
|---|---|---|
hubble.ui.enabled |
true |
Hubble UIを有効にする |
hubble.metrics.enabled |
["dns", "flow"] |
メトリクスの収集対象を指定 |
operator.image.tag |
"v1.13.0" |
Ciliumオペレータのバージョン |
注意: Hubble UIを有効にするには、
hubble.ui.enabled: trueを必ず設定してください。
インストールコマンド実行手順
以下のようにHelmコマンドでデプロイします。
-
チャートのインストール:
bash
helm install cilium cilium/cilium --namespace kube-system \
--set hubble.ui.enabled=true \
--set hubble.metrics.enabled=["dns","flow"] -
インストール確認:
bash
kubectl get pods -n kube-system | grep -E "cilium|hubble"
インストールに時間がかかる場合、
kubectl describe pod <pod-name>でステータスを確認してください。
Hubble UIの初期設定とアクセス方法
Hubble UIは、ネットワークフローの可視化やポリシー検証に必須です。本セクションでは、Kubernetesクラスター内でのアクセス設定と外部からの接続手順を解説します。
サービスアカウントのロール作成
Hubble UIを安全に使用するには、適切なRBAC(Role-Based Access Control)設定が必要です。以下のコマンドでサービスアカウントを作成し、ロールを割り当てます。
|
1 2 3 4 5 |
kubectl create serviceaccount hubble-ui -n kube-system kubectl create clusterrolebinding hubble-ui-binding \ --clusterrole=view \ --serviceaccount=kube-system:hubble-ui |
UIへの安全な接続方法
Hubble UIにアクセスするには、LoadBalancer型のサービスやIngress設定を構成します。以下はLoadBalancer型の例です。
|
1 2 3 4 5 6 7 8 9 10 11 12 13 |
apiVersion: v1 kind: Service metadata: name: hubble-ui namespace: kube-system spec: type: LoadBalancer ports: - port: 80 targetPort: 80 selector: k8s-app: hubble-ui |
注意: AKSではLoadBalancerサービスは仮想マシンスケールセット(VMSS)と連動しており、グローバルIPアドレスが自動割り当てられます。プロダクション環境では、TLS証明書を用いたHTTPS通信が推奨されます。
リアルタイム通信可視化の実践手法
Hubble UIは、ネットワークフローをリアルタイムで監視するための強力なツールです。本セクションでは、フローフィルタリングやパケットキャプチャ機能の使い方を解説します。
フロー監視フィルタリング
Hubble UIの「Flow Monitor」画面で、以下のようにフィルタ条件を指定できます。
- ソース・ターゲット:
pod.namespace,pod.name - プロトコル: TCP, UDP, DNS
- タイムフレーム: 最近1時間、24時間など
例:
pod.namespace = "default" AND pod.name = "web-pod"
パケットキャプチャ機能の活用
特定のポッド間通信を詳細に分析したい場合、パケットキャプチャ(Packet Capture)機能を使用します。以下は操作手順です。
- Hubble UIの「Flow」画面を開く
- 対象フローを選択し、「Capture」ボタンをクリック
- キャプチャ結果をダウンロード・解析
注意: パケットキャプチャはリソースに負荷を与えるため、長時間の実行は避けてください。
CiliumNetworkPolicyの適用状況確認
CiliumNetworkPolicy(CNP)の適用状況を確認するには、CLIコマンドとHubble UIの組み合わせが効果的です。本セクションでは、ポリシーの一覧取得と違反事象のトレース方法を解説します。
ポリシー一覧の取得コマンド
以下のコマンドで現在適用されているCNPを一覧表示できます。
|
1 2 |
kubectl get ciliumnetworkpolicies -A |
| NAMESPACE | NAME | ACTION | SELECTOR |
|---|---|---|---|
| default | allow-http | Allow | app = web-app |
| kube-system | deny-external | Deny | pod.namespace != "kube-system" |
違反事象のトレース方法
Hubble UIでポリシー違反を確認するには、以下を行います。
- 「Policy」タブを開く
- ポリシー名を選択し、「Violations」タブをクリック
- 違反原因(例えば、ポートの不一致)を解析
例:
app: dbに対してport 5432が許可されていない場合、Hubble UIで該当フローを確認できます。
Egress通信監視の具体例
Egress通信は外部サービスへのアクセスパターンや脅威検知に重要です。本セクションでは、HubbleによるEgressルールの可視化方法と実際の運用事例を解説します。
外部サービスへのアクセスパターン
以下のように、Hubble UIでEgress通信をフィルタリングできます。
- ドメイン:
example.com - IPアドレス:
192.0.2.0/24(例示用) - プロトコル: HTTPS
注意: リアルタイムで確認する際は、
flow monitor画面で「Egress」タグを指定してください。
異常な通信検出ケース
以下のパターンに該当する通信は異常と判断されます。
- 未許可の外部IPへのアクセス
- 高頻度のDNSリクエスト(スパムや攻撃の兆候)
- 不正なポート使用(例: 22/tcp以外でのSSH接続)
実際の事例: 某企業がHubbleでEgress通信を監視中に、未許可のIPへのアクセスを検出し、セキュリティチームに連絡したことで攻撃を阻止しました。
eBPF機能確認方法と導入前提
CiliumのeBPF機能はHubbleの動作条件であり、導入前の確認が必須です。本セクションでは、eBPF機能の確認手順や初期設定の注意点を解説します。
eBPF確認方法
以下のようなコマンドでCiliumの状態を確認し、eBPFが有効か判定できます。
|
1 2 3 |
cilium status kubectl get pods -n kube-system | grep cilium-operator |
| ステータス | 意味 |
|---|---|
Ready |
Ciliumが正常に起動している |
eBPF Enabled |
eBPF機能が有効になっている |
No errors |
エラーがない(導入前提満たし) |
注意: AKSでは、CNIプラグインとしてCiliumのみを導入する必要があります。他のCNI(例: Azure CNI)と併用するとeBPFが動作しない可能性があります。
初期設定時の注意点
- eBPF機能はLinuxカーネルバージョン4.9以上が必要です
- AKSのWorker Nodeイメージが最新版であることを確認(例:
aks-v1.24.8) - ポリシーレイヤーのオーバーライドを防ぐため、Ciliumの優先度を高めることを推奨
まとめ
本記事では、AKS環境におけるCilium Hubbleの導入・設定手順とネットワーク監視の実践的な使い方について解説しました。
- HelmチャートでCilium+Hubbleをインストールする方法
- Hubble UIの初期設定と安全な接続の手順
- リアルタイム通信可視化とポリシー検証の実践手法
- Egress通信監視による脅威検知事例
これらの知識を活用し、Kubernetesクラスターのネットワーク状態を効率的に管理してください。