Usa los registros de flujo para guardar los metadatos del tráfico de red, incluidas las 5 tuplas, en Google Distributed Cloud (GDC) aislado en la pila de observabilidad en forma de registros que se pueden consultar. Usa estos registros para lo siguiente:
- Comprender los flujos de tráfico de un servicio específico de una organización
- Comprender e identificar problemas con el estado de 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 recurso FlowLog
de la
API de Herramientas de redes.
Antes de comenzar
Debes obtener autorización para administrar o ver los registros de flujo desde la consola de GDC. Para administrar los registros de flujo, pídele al administrador de la organización de IAM que te otorgue el rol de administrador de registros de flujo (
flowlog-admin). Para ver solo los registros de flujo existentes, pídele al administrador de la organización de IAM que te otorgue el rol de Visualizador de registros de flujo (flowlog-viewer).Para obtener información sobre cómo configurar vinculaciones de roles desde la consola de GDC, consulta Otorga acceso a los recursos.
Antes de consultar y ver los registros de flujo en los paneles, debes obtener acceso a la instancia de supervisión. Para obtener más información, consulta Consulta y visualiza métricas.
Crea 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 determinado de especificaciones.
Crea un registro de flujo con filtros de protocolo y extremo
Crea un archivo
example-flowlog.yamlcon el siguiente contenido:apiVersion: networking.gdc.goog/v1 kind: FlowLog metadata: name: "FLOW_LOG_NAME" namespace: "platform" spec: filters: - l4Protocols: - udp endpoint: ports: - 53 lifetime: duration: "12h"Reemplaza
FLOW_LOG_NAMEpor el nombre elegido para el registro de flujo.En este ejemplo, el registro de flujo captura todo el tráfico de UDP en el puerto 53 (como el tráfico de DNS). Deja de registrar registros 12 horas después de que se crea el objeto.
Crea el objeto de registro de flujo:
kubectl --kubeconfig MANAGEMENT_API_SERVER apply -f example-flowlog.yamlReemplaza
MANAGEMENT_API_SERVERpor la ruta de acceso de kubeconfig del servidor de la API de Management zonal.Verifica que el valor de
FLOW_LOG_NAMEse haya conciliado correctamente y que el proceso de registro haya comenzado. Para ello, examina el campoStatus:kubectl --kubeconfig MANAGEMENT_API_SERVER describe -n platform FLOW_LOG_NAMEEstado 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:53ZEste resultado de ejemplo contiene las siguientes condiciones:
Propagated: La configuración del registro de flujo se envió a los clústeresuser-vm-1,user-vm-2yorg-1-infra.Reconciled: El registro de flujo se programó correctamente en los clústeresuser-vm-1,user-vm-2yorg-1-infra.Logging: El registro de flujo no venció ni se inhabilitó, no encontró ningún error y puede producir registros si los filtros coinciden con los flujos.- Los valores
Start TimeyEnd Timeindican que el trabajo se inició el19:17:53y vence el20:17:53.
Para que este registro de flujo pueda producir entradas de registro correctamente, todas las condiciones
Propagated,ReconciledyLoggingdeben ser verdaderas.
Modificar el registro de flujos
Para modificar un registro de flujo existente, 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
Visualiza los registros de flujo en el panel de supervisión
Abre el panel de registros operativos. Para obtener más información, consulta Consulta registros operativos.
Establece el valor del menú desplegable identificador en
network-flow-logs, haz clic en agregar analizador de JSON y proporciona el siguiente valor a la consulta:{identifier="network-flow-logs"} | json:
Haz clic en Ejecutar consulta. Esto muestra las entradas de registro de flujo guardadas:

Usa los filtros para definir mejor los resultados. Por ejemplo, proporciona el menú desplegable clúster con un valor de
user-vm-1para ver solo los flujos recopilados del clústeruser-vm-1:
Explora las entradas de registro de flujo, expande la entrada para ver los detalles y agrega más filtros de etiquetas según sea necesario con el ícono de acceso directo. En este ejemplo, queremos filtrar aún más los flujos por su dirección IP de origen:

Haz clic en el ícono de acceso directo
+para filtrar los flujos por un campo de metadatos específico.
Visualiza los resultados por nombre del 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 más registros de flujo.
Para ver los resultados limitados a los registros que produce FLOW_LOG_NAME, crea un filtro de etiquetas con los siguientes valores:
Labelestá establecido enOn. Se distingue entre mayúsculas y minúsculas.Operatorestá establecido en~=. Esto usa un comparador de expresiones regulares.Valueestá establecido en/FLOW_LOG_NAME/. El valorFLOW_LOG_NAMEdebe estar rodeado por/.
Filtra los resultados para ver solo los registros que produce flowlog1:

Referencias
- Documentación sobre Hubble Dynamic Exporter: https://docs.cilium.io/en/latest/observability/hubble-exporter/#dynamic-exporter-configuration