흐름 로그 관리

흐름 로그를 사용하여 5개 튜플을 비롯한 네트워크 트래픽 메타데이터를 Google Distributed Cloud (GDC) 에어갭에 저장하여 쿼리 가능한 로그 형태로 관측 가능성 스택에 저장합니다. 이러한 로그를 사용하여 다음 작업을 할 수 있습니다.

  • 조직의 특정 서비스에 대한 트래픽 흐름을 이해합니다.
  • Kubernetes 워크로드의 네트워크 상태를 이해하고 문제를 식별합니다.
  • Kubernetes 네트워크 정책을 확인합니다.

흐름 로그는 오픈소스 Hubble 프로젝트(https://github.com/cilium/hubble)를 기반으로 하는 GDC 기능입니다. 네트워킹 APIFlowLog 리소스를 사용하여 흐름 로그를 구성합니다.

시작하기 전에

  • GDC 콘솔에서 흐름 로그를 관리하거나 보려면 승인을 받아야 합니다. 흐름 로그를 보거나 관리하려면 조직 IAM 관리자에게 해당 흐름 로그 역할을 부여해 달라고 요청하세요.

    GDC 콘솔에서 역할 바인딩을 설정하는 방법에 대한 자세한 내용은 리소스에 대한 액세스 권한 부여를 참고하세요.

  • 대시보드에서 흐름 로그를 쿼리하고 보려면 모니터링 인스턴스에 대한 액세스 권한을 획득해야 합니다. 자세한 내용은 측정항목 쿼리 및 보기를 참고하세요.

흐름 로그 만들기

특정 사양 집합으로 필터링된 네트워크 트래픽 메타데이터를 저장하는 흐름 로그를 만듭니다.

프로토콜 및 네임스페이스 필터로 흐름 로그 만들기

  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 네임스페이스의 포드가 kube-system 네임스페이스의 포드로 TCP 연결을 시작한 모든 흐름을 캡처합니다. 객체가 생성된 시점으로부터 1시간 후에 로그 기록이 중지됩니다.

  2. 흐름 로그 객체를 만듭니다.

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

    MANAGEMENT_API_SERVER를 영역별 관리 API 서버의 kubeconfig 경로로 바꿉니다.

  3. 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 TimeEnd Time은 작업이 19:17:53에 시작되었으며 20:17:53에 만료됨을 나타냅니다.

    이 흐름 로그가 로그 항목을 성공적으로 생성하려면 Propagated, Reconciled, Logging 조건이 모두 true여야 합니다.

흐름 로그 수정

기존 흐름 로그를 수정하려면 example-flowlog.yaml 파일에서 생성된 흐름 로그 객체 정의를 수정하고 다시 적용합니다.

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

모니터 대시보드에서 흐름 로그 보기

흐름 로그를 보려면 해당 흐름 로그 역할이 있는 사용자에게 운영 로그 쿼리를 확인하도록 요청하세요.

참조