フローログを使用して、5 タプルなどのネットワーク トラフィック メタデータを、クエリ可能なログの形式で Google Distributed Cloud(GDC)のエアギャップに保存します。これらのログは、次の目的で使用します。
- 組織内の特定のサービスのトラフィック フローを把握する。
- Kubernetes ワークロードのネットワークの健全性の問題を把握して特定する。
- Kubernetes ネットワーク ポリシーを確認します。
フローログは、オープンソースの Hubble プロジェクト(https://github.com/cilium/hubble)に基づく GDC 機能です。Networking API の FlowLog リソースを使用してフローログを構成します。
始める前に
GDC コンソールからフローログを管理または表示する権限を取得する必要があります。 フローログを表示または管理するには、組織の IAM 管理者に、対応するフローログのロールを付与するよう依頼してください。
GDC コンソールからロール バインディングを設定する方法については、リソースへのアクセス権を付与するをご覧ください。
ダッシュボードでフローログをクエリして表示する前に、モニタリング インスタンスへのアクセス権を取得する必要があります。詳細については、指標のクエリと表示をご覧ください。
フローログを作成する
特定の仕様でフィルタリングされたネットワーク トラフィック メタデータを保存するフローログを作成します。
プロトコル フィルタと Namespace フィルタを使用してフローログを作成する
次の内容のファイルを、
example-flowlog.yamlという名前で作成します。apiVersion: networking.gdc.goog/v1 kind: FlowLog metadata: name: "FLOW_LOG_NAME" namespace: "platform" spec: filters: - l4Protocols: - tcp source: namespacePodSelectors: - namespace: gpc-system - namespace: kube-system destination: namespacePodSelectors: - namespace: kube-system lifetime: duration: "1h"FLOW_LOG_NAMEは、フローログに選択した名前に置き換えます。この例では、フローログは、
gpc-systemまたはkube-systemNamespace の任意の Pod からkube-systemNamespace の任意の Pod への TCP 接続が開始されたすべてのフローをキャプチャします。オブジェクトの作成から 1 時間後にログの記録を停止します。フローログ オブジェクトを作成します。
kubectl --kubeconfig MANAGEMENT_API_SERVER apply -f example-flowlog.yamlMANAGEMENT_API_SERVERは、ゾーンの Management API サーバーの kubeconfig パスに置き換えます。Statusフィールドを調べて、FLOW_LOG_NAMEの値が正しく調整され、ロギング プロセスが開始されたことを確認します。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
モニタリング ダッシュボードでフローログを表示する
フローログを表示するには、対応するフローログのロールを持つユーザーに、運用ログのクエリを確認するよう依頼します。参照
- Hubble Dynamic Exporter のドキュメント: https://docs.cilium.io/en/latest/observability/hubble-exporter/#dynamic-exporter-configuration