Administrar registros de flujo

Usa los registros de flujo para guardar metadatos del tráfico de red, incluidos los 5 tuplas, en Google Distributed Cloud (GDC) air-gapped en la pila de observabilidad en forma de registros consultables. Usa estos registros para lo siguiente:

  • Conocer los flujos de tráfico de un servicio concreto de una organización.
  • Identificar y solucionar problemas relacionados con el estado de la red de una carga de trabajo de Kubernetes.
  • Verificar las políticas de red de Kubernetes.

El registro de flujo es una función de GDC basada en el proyecto de código abierto Hubble: https://github.com/cilium/hubble. Configura los registros de flujo con el FlowLog recurso de la API de redes.

Antes de empezar

  • Debes obtener autorización para gestionar o ver los registros de flujo desde la consola de GDC. Para gestionar los registros de flujo, pide a tu administrador de IAM de la organización que te asigne el rol de administrador de registros de flujo (flowlog-admin). Para ver solo los registros de flujo, pide a tu administrador de IAM de la organización que te asigne el rol de lector de registros de flujo (flowlog-viewer).

    Para obtener información sobre cómo configurar las vinculaciones de roles desde la consola de GDC, consulta el artículo Conceder acceso a recursos.

  • Antes de consultar y ver los registros de flujo en los paneles de control, debes obtener acceso a la instancia de supervisión. Para obtener más información, consulta el artículo Consultar y ver métricas.

Crear un registro de flujo

Crea un registro de flujo para guardar los metadatos del tráfico de red que se filtran según un conjunto de especificaciones.

Crear un registro de flujo con filtros de protocolo y de espacio de nombres

  1. Crea un archivo llamado example-flowlog.yaml con el siguiente contenido:

    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"
    

    Sustituye FLOW_LOG_NAME por el nombre que elijas para el registro de flujo.

    En este ejemplo, el registro de flujo captura todos los flujos para los que cualquier pod de los espacios de nombres gpc-system o kube-system ha iniciado una conexión TCP con cualquier pod del espacio de nombres kube-system. Deja de registrar los registros una hora después de que se cree el objeto.

  2. Crea el objeto de registro de flujo:

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

    Sustituye MANAGEMENT_API_SERVER por la ruta de kubeconfig del servidor de la API de gestión zonal.

  3. Comprueba que el valor de FLOW_LOG_NAME se haya conciliado correctamente y que el proceso de registro se haya iniciado examinando el campo Status:

    kubectl --kubeconfig MANAGEMENT_API_SERVER describe -n platform FLOW_LOG_NAME
    

    Estado de ejemplo:

    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
    

    Este resultado de ejemplo contiene las siguientes condiciones:

    • Propagated: la configuración del registro de flujo se ha enviado a los clústeres user-vm-1, user-vm-2 y org-1-infra.
    • Reconciled: el registro de flujo se ha programado correctamente en los clústeres user-vm-1, user-vm-2 y org-1-infra.
    • Logging: el registro de flujo no ha caducado ni se ha inhabilitado, no ha detectado ningún error y puede generar registros si los filtros coinciden con los flujos.
    • Start Time y End Time indican que el trabajo se inició a las 19:17:53 y caduca a las 20:17:53.

    Para que este registro de flujo pueda generar entradas de registro correctamente, todas las condiciones Propagated, Reconciled y Logging deben ser verdaderas.

Modificar un registro de flujo

Para modificar un registro de flujo, modifica la definición del objeto de registro de flujo creado en el archivo example-flowlog.yaml y vuelve a aplicarlo:

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

Ver registros de flujo en el panel de control de supervisión

  1. Abre el panel de control de registros operativos. Para obtener más información, consulta el artículo Consultar registros operativos.

  2. En el menú desplegable Identificador , selecciona network-flow-logs y, a continuación, haz clic en Añadir analizador JSON y proporciona el siguiente valor a la consulta: {identifier="network-flow-logs"} | json:

    Definir identificador

  3. Haz clic en Realizar una consulta. Se mostrarán las entradas de registro de flujo guardadas:

    Ejecutar consulta

  4. Usa los filtros para acotar los resultados. Por ejemplo, en el menú desplegable Clúster , proporciona el valor user-vm-1 para ver solo los flujos recogidos del clúster user-vm-1:

    Afinar filtros

  5. Busca las entradas de registro de flujo, amplía la entrada para ver los detalles y añade más filtros de etiquetas según sea necesario mediante el icono de acceso directo. En este ejemplo, queremos filtrar aún más los flujos por su dirección IP de origen:

    Entrada de registro de flujo

  6. Haz clic en el icono de acceso directo + para filtrar los flujos por un campo de metadatos específico.

    Acceso directo al filtro de etiquetas

Ver resultados por nombre de registro de flujo

Cuando se crean varios registros de flujo, se puede crear un filtro de etiquetas adicional para ver los resultados de uno o varios registros de flujo.

Para ver los resultados limitados a los registros generados por FLOW_LOG_NAME, crea un filtro de etiquetas con los siguientes valores:

  • Label definida como On. Se distingue entre mayúsculas y minúsculas.
  • Operator definido como ~=. Usa un comparador de expresiones regulares.
  • Value definido como /FLOW_LOG_NAME/. El valor de FLOW_LOG_NAME debe estar entre /.

Filtra los resultados para ver solo los registros generados por flowlog1:

Filtrar etiquetas por nombre de flujo

Referencias