フローログを使用して、5 タプルを含むネットワーク トラフィック メタデータを Google Distributed Cloud(GDC)エアギャップに保存し、クエリ可能なログの形式でオブザーバビリティ スタックに保存します。これらのログは、次の目的で使用します。
- 組織内の特定のサービスのトラフィック フローを把握する。
- Kubernetes ワークロードのネットワークの健全性の問題を把握して特定する。
- Kubernetes ネットワーク ポリシーを確認する。
フローログは、オープンソースの Hubble プロジェクト(https://github.com/cilium/hubble)に基づく GDC 機能です。Networking API の FlowLog リソースを使用してフローログを構成します。
始める前に
GDC コンソールからフローログを管理または表示するには、認可を取得する必要があります。フローログを管理するには、IAM 組織管理者にフローログ管理者(
flowlog-admin)ロールを付与するよう依頼します。既存のフローログのみを表示するには、IAM 組織管理者にフローログ閲覧者(flowlog-viewer)ロールを付与するよう依頼します。GDC コンソールからロール バインディングを設定する方法については、リソースへのアクセス権を付与するをご覧ください。
ダッシュボードでフローログをクエリして表示する前に、モニタリング インスタンスへのアクセス権を取得する必要があります。詳細については、指標のクエリと表示をご覧ください。
フローログを作成する
フローログを作成して、指定された一連の仕様でフィルタされたネットワーク トラフィック メタデータを保存します。
プロトコル フィルタとエンドポイント フィルタを使用してフローログを作成する
次の内容のファイルを、
example-flowlog.yamlという名前で作成します。apiVersion: networking.gdc.goog/v1 kind: FlowLog metadata: name: "FLOW_LOG_NAME" namespace: "platform" spec: filters: - l4Protocols: - udp endpoint: ports: - 53 lifetime: duration: "12h"FLOW_LOG_NAMEは、フローログに選択した名前に置き換えます。この例では、フローログはポート 53 のすべての UDP トラフィック(DNS トラフィックなど)をキャプチャします。オブジェクトの作成から 12 時間後にログの記録を停止します。
フローログ オブジェクトを作成します。
kubectl --kubeconfig MANAGEMENT_API_SERVER apply -f example-flowlog.yamlMANAGEMENT_API_SERVERは、ゾーン管理 API サーバーの kubeconfig パスに置き換えます。FLOW_LOG_NAMEの値が正しく調整され、Statusフィールドを調べることでロギング プロセスが開始されたことを確認します。kubectl --kubeconfig MANAGEMENT_API_SERVER describe -n platform FLOW_LOG_NAMEステータスの例:
Status: Clusters: Cluster: org-1-infra-cluster Conditions: Last Transition Time: 2024-01-19T01:46:11Z Message: Observed Generation: 1 Reason: ResourcesPropagated Status: True Type: Propagated Name: cilium-flowlog-config Namespace: kube-system Node: org-1-infra Cluster: user-vm-1-cluster Conditions: Last Transition Time: 2024-01-19T01:46:11Z Message: Observed Generation: 1 Reason: ResourcesPropagated Status: True Type: Propagated Name: cilium-flowlog-config Namespace: kube-system Node: user-vm-1 Cluster: user-vm-2-cluster Conditions: Last Transition Time: 2024-01-19T01:46:11Z Message: Observed Generation: 1 Reason: ResourcesPropagated Status: True Type: Propagated Name: cilium-flowlog-config Namespace: kube-system Node: user-vm-2 Conditions: Last Transition Time: 2024-01-18T19:17:53Z Message: Observed Generation: 1 Reason: Active Status: True Type: Logging Last Transition Time: 2024-01-19T01:46:11Z Message: Observed Generation: 1 Reason: ResourcesPropagated Status: True Type: Propagated Last Transition Time: 2024-01-18T19:17:53Z Message: Observed Generation: 1 Reason: Succeeded Status: True Type: Reconciled Start Time: 2024-01-18T19:17:53Z End Time: 2024-01-18T20:17:53Zこの出力例には、次の条件が含まれています。
Propagated: フローログ構成がクラスタuser-vm-1、user-vm-2、org-1-infraに送信されました。Reconciled: フローログがクラスタuser-vm-1、user-vm-2、org-1-infraで正常にプログラムされました。Logging: フローログは期限切れでも無効でもなく、エラーも発生していません。フィルタがフローに一致すると、ログが生成される可能性があります。Start TimeとEnd Timeは、ジョブが19:17:53に開始され、20:17:53に期限切れになることを示します。
このフローログでログエントリを正常に生成するには、
Propagated、Reconciled、Loggingのすべての条件が true である必要があります。
フローログを変更する
既存のフローログを変更するには、example-flowlog.yaml ファイルで作成したフローログ オブジェクト定義を変更して、再度適用します。
kubectl --kubeconfig MANAGEMENT_API_SERVER apply -f example-flowlog.yaml
モニタリング ダッシュボードでフローログを表示する
オペレーション ログ ダッシュボードを開きます。詳細については、オペレーション ログをクエリするをご覧ください。
[identifier] プルダウンの値を
network-flow-logsに設定し、[add json parser] をクリックして、クエリに次の値{identifier="network-flow-logs"} | jsonを指定します。
[クエリを実行] をクリックします。保存されたフローログ エントリが表示されます。

フィルタを使用して、結果をさらに絞り込みます。たとえば、
user-vm-1クラスタから収集されたフローのみを表示するには、クラスタ プルダウンにuser-vm-1の値を指定します。
フローログ エントリを参照し、エントリを開いて詳細を確認します。必要に応じて、ショートカット アイコンを使用してラベルフィルタを追加します。この例では、送信元 IP アドレスでフローをさらにフィルタします。

+ショートカット アイコンをクリックして、特定のメタデータ フィールドでフローをフィルタします。
フローログ名で結果を表示する
複数のフローログが作成されている場合は、追加のラベルフィルタを作成して、1 つ以上のフローログの結果を表示できます。
FLOW_LOG_NAME によって生成されたログに限定して結果を表示するには、次の値を使用してラベルフィルタを作成します。
LabelはOnに設定します。大文字と小文字は区別されます。Operatorは~=に設定します。これには正規表現マッチャーが使用されます。Valueは/FLOW_LOG_NAME/に設定します。FLOW_LOG_NAMEの値は/で囲む必要があります。
結果をフィルタして、flowlog1 によって生成されたログのみを表示します。

参照
- Hubble Dynamic Exporter に関するドキュメント: https://docs.cilium.io/en/latest/observability/hubble-exporter/#dynamic-exporter-configuration