フローログを管理する

フローログを使用して、5 タプルなどのネットワーク トラフィック メタデータを、クエリ可能なログの形式で Google Distributed Cloud(GDC)のエアギャップに保存します。これらのログは、次の目的で使用します。

  • 組織内の特定のサービスのトラフィック フローを把握する。
  • Kubernetes ワークロードのネットワークの健全性の問題を把握して特定する。
  • Kubernetes ネットワーク ポリシーを確認します。

フローログは、オープンソースの Hubble プロジェクト(https://github.com/cilium/hubble)に基づく GDC 機能です。Networking APIFlowLog リソースを使用してフローログを構成します。

始める前に

  • GDC コンソールからフローログを管理または表示する権限を取得する必要があります。 フローログを表示または管理するには、組織の IAM 管理者に、対応するフローログのロールを付与するよう依頼してください。

    GDC コンソールからロール バインディングを設定する方法については、リソースへのアクセス権を付与するをご覧ください。

  • ダッシュボードでフローログをクエリして表示する前に、モニタリング インスタンスへのアクセス権を取得する必要があります。詳細については、指標のクエリと表示をご覧ください。

フローログを作成する

特定の仕様でフィルタリングされたネットワーク トラフィック メタデータを保存するフローログを作成します。

プロトコル フィルタと Namespace フィルタを使用してフローログを作成する

  1. 次の内容のファイルを、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-system Namespace の任意の Pod から kube-system Namespace の任意の Pod への TCP 接続が開始されたすべてのフローをキャプチャします。オブジェクトの作成から 1 時間後にログの記録を停止します。

  2. フローログ オブジェクトを作成します。

    kubectl --kubeconfig MANAGEMENT_API_SERVER apply -f example-flowlog.yaml
    

    MANAGEMENT_API_SERVER は、ゾーンの Management API サーバーの kubeconfig パスに置き換えます。

  3. 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-1user-vm-2org-1-infra に送信されました。
    • Reconciled: クラスタ user-vm-1user-vm-2org-1-infra でフローログが正常にプログラムされました。
    • Logging: フローログは期限切れまたは無効になっておらず、エラーが発生していません。フィルタがフローと一致する場合は、ログが生成される可能性があります。
    • Start TimeEnd Time は、ジョブが 19:17:53 に開始され、20:17:53 に期限切れになることを示します。

    このフローログでログエントリを正常に生成するには、PropagatedReconciledLogging のすべての条件が true である必要があります。

フローログを変更する

既存のフローログを変更するには、example-flowlog.yaml ファイルで作成したフローログ オブジェクト定義を変更して、再度適用します。

kubectl --kubeconfig MANAGEMENT_API_SERVER apply -f example-flowlog.yaml

モニタリング ダッシュボードでフローログを表示する

フローログを表示するには、対応するフローログのロールを持つユーザーに、運用ログのクエリを確認するよう依頼します。

参照