Terway ネットワークプラグインを使用する Container Service for Kubernetes (ACK) クラスターに Cilium Hubble をデプロイし、コンテナーネットワークトラフィックの可視化を実現します。Cilium Hubble は、クラスター全体におけるパケットの送信元・宛先、Pod およびサービスのトポロジー、ネットワークポリシーの適用状況、フロー単位のメトリックを表示します。
前提条件
作業を開始する前に、以下の要件を満たしていることを確認してください。
ACK マネージドクラスター が次のネットワーク設定で構成されていること:
ネットワークプラグイン: Terway
Terway モード: IPvlan(IPVLAN ベースのマルチ Pod 共有 ENI モード)
Cilium Hubble は、Terway の「マルチ Pod 共有 ENI モード」のみをサポートします。クラスターが別の Terway モードを使用している場合、Cilium Hubble を有効化できません。ACK クラスターを作成する際は、ネットワークプラグイン パラメーターに Terway を、Terway モード パラメーターに IPvlan を選択してください。
制限事項
レイヤー 7 メトリックの非対応: HTTP および DNS メトリックはサポートされていません。利用可能なのはレイヤー 3/4 メトリック(drop、tcp、flow、port-distribution、icmp)のみです。
過剰なメトリックによるパフォーマンスへの影響:
cilium_hubble_metricsパラメーターに多数のメトリックを指定すると、Cilium Hubble のパフォーマンスが低下する可能性があります。アーキテクチャー: ack-terway-hubble Helm チャートは amd64 アーキテクチャーのみをサポートします。
Terway ConfigMap での Cilium Hubble 有効化
kube-system 名前空間の eni-config ConfigMap 内の 10-terway.conf セクションにパラメーターを追加して、Cilium Hubble を有効化します。
10-terway.conf に以下のパラメーターを追加します。
"cilium_enable_hubble":"true",
"cilium_hubble_listen_address":":4244",
"cilium_hubble_metrics_server":":9091",
"cilium_hubble_metrics":"drop,tcp,flow,port-distribution,icmp",ConfigMap パラメーター
パラメーター | 説明 | 備考 |
| IPVLAN モードを有効化するかどうかを指定します。 | このパラメーターが存在しない、または |
| ネットワークトラフィック分析のために Cilium Hubble を有効化します。 | この例では、このパラメーターは |
| Cilium Hubble サービスを公開するポートを指定します。 | この例では、このパラメーターは |
| Cilium Hubble メトリックサーバーを公開するポートを指定します。 | この例では、このパラメーターは |
| 収集するメトリックを指定します。複数のメトリックはカンマ ( | この例では、このパラメーターは |
コンソール
Container Service 管理コンソール にログインします。左側のナビゲーションウィンドウで、クラスターリスト をクリックします。
クラスターリスト ページで、ご利用のクラスター名をクリックします。左側のナビゲーションウィンドウで、 をクリックします。
ConfigMap ページの上部にある 名前空間 ドロップダウンリストから kube-system を選択し、eni-config ConfigMap を見つけ、操作 列の YAML の編集 をクリックします。
YAML で表示 パネルで
10-terway.confを見つけ、上記のパラメーターを追加して、OK をクリックします。
kubectl
以下のコマンドを実行して ConfigMap を編集します。
kubectl -n kube-system edit configmap eni-config10-terway.conf に上記のパラメーターを追加し、ConfigMap を保存します。
Terway Pod の再起動
変更した ConfigMap を反映させるため、Terway Pod を再起動します。
ACK コンソール:
クラスター詳細ページの左側ナビゲーションウィンドウで、ワークロード > Pod を選択します。
Pod ページの上部にある 名前空間 ドロップダウンリストから kube-system を選択し、検索ボックスに
terway-eniipと入力します。各terway-eniip-xxxPod の 操作 列で、その他 > 削除 を選択します。表示されるメッセージで、OK をクリックします。
上記の手順を繰り返して、すべての Terway Pod を削除します。
kubectl:
kubectl rollout restart daemonset -n kube-system terway-eniip再起動の確認
Pod の再起動後、すべての Terway Pod が Running 状態であることを確認します。
kubectl -n kube-system get pods -l app=terway-eniipすべての Pod の STATUS が Running となり、すべてのコンテナーが準備完了状態である必要があります。
Cilium Hubble のインストール
Container Service 管理コンソール にログインします。左側のナビゲーションウィンドウで、クラスターリスト をクリックします。
クラスターリスト ページで、ご利用のクラスター名をクリックします。左側のナビゲーションウィンドウで、 をクリックします。
Helm ページで、デプロイ をクリックし、基本情報 パラメーターを設定します。
ack-terway-hubble カードを選択し、次へ をクリックします。
パラメーター ステップで、チャートバージョン パラメーターを設定します。パラメーター セクションで、Hubble UI へのアクセスを有効にするための Ingress パラメーターを指定します。その他のパラメーターはビジネス要件に応じて設定し、OK をクリックします。
Ingress パラメーター
Hubble UI へのアクセスを有効にするには、ingress 配下に以下のパラメーターを設定します。
パラメーター | 説明 |
| Hubble UI へのアクセスに Ingress を使用するかどうかを指定します。 |
| Ingress のアノテーション。 |
| Ingress のルートパスを指定します。 |
| Ingress のホストを指定します。Hubble UI へのアクセスに使用されます。 |
| Ingress のトランスポート層セキュリティ (TLS) 設定を指定します。 |
Hubble UI へのアクセス
Ingress に hosts パラメーターを指定した場合、Ingress ホストのポート 80 にアクセスして Hubble UI を開きます。
権威ある解決が行われないドメイン名(例:ingress.local)を使用する場合は、kubectl -n kube-system get svc nginx-ingress-lb コマンドを実行して Ingress コントローラーの外部 IP アドレスを取得し、ローカルの hosts ファイルに、取得した IP アドレスに対応するドメイン名のエントリーを追加します。
Hubble UI の機能
Hubble UI は以下のビューを提供します。
上部セクション: 各名前空間の Pod およびサービスのトポロジー。ドロップダウンリストから名前空間を選択すると、そのトポロジーが表示されます。
下部セクション: 送信元、宛先、ポート、転送状態を含むネットワークトラフィックの詳細情報。
ネットワークポリシーの適用状況: ネットワークポリシーの不一致によりドロップされたパケットがハイライト表示され、誤ったポリシー設定の特定を支援します。
Cilium Hubble UI によるネットワーク可観測性の可視化
メトリックの収集と可視化
Cilium Hubble は、kube-system 名前空間内の hubble-metrics サービスを通じてネットワークフローメトリックを公開します。公開するメトリックは、eni-config ConfigMap の cilium_hubble_metrics パラメーターで制御します。
これらのメトリックは、以下のいずれかの方法で収集できます。
利用可能なメトリック
以下の表に、Cilium Hubble が公開可能なメトリックを示します。メトリックの詳細な定義については、Cilium ドキュメントの Exported Metrics をご参照ください。
カテゴリ | メトリック | ラベル | 説明 |
drop |
| reason、protocol | ドロップされたパケット数 |
tcp |
| flag、family | TCP フラグの数 |
flow |
| type、subtype、verdict | 処理されたネットワークフロー数 |
port-distribution |
| protocol、port | 宛先ポートごとのパケット分布 |
icmp |
| family、type | インターネット制御通知プロトコル (ICMP) メッセージ数 |