Network Agent Configuration

Ağ Ajanı Yapılandırması

Configure the eBPF network monitoring agent that captures real-time TCP/UDP traffic flows across your Kubernetes cluster. This agent uses the poyraz-network-observability ConfigMap for all settings.

Kubernetes kümenizde gerçek zamanlı TCP/UDP trafik akışlarını yakalayan eBPF ağ izleme ajanını yapılandırın. Bu ajan tüm ayarlar için poyraz-network-observability ConfigMap'ini kullanır.

⚠️ Kernel Requirements

⚠️ Çekirdek Gereksinimleri

Kernel 5.8+ has been tested and is recommended for optimal performance. Earlier kernel versions may work but are not officially supported.

Kernel 5.8+ test edilmiş ve optimal performans için önerilir. Önceki çekirdek sürümleri çalışabilir ancak resmi olarak desteklenmez.

ConfigMap Overview

ConfigMap Genel Bakış

The network agent reads its configuration from the http-tracer-config ConfigMap in the poyraz-network-observability namespace. This YAML-based configuration controls interface monitoring, traffic filtering, and data export settings.

Ağ ajanı yapılandırmasını poyraz-network-observability namespace'indeki http-tracer-config ConfigMap'inden okur. Bu YAML tabanlı yapılandırma, arayüz izleme, trafik filtreleme ve veri dışa aktarma ayarlarını kontrol eder.

Interface Configuration

Arayüz Yapılandırması

SettingAyar DescriptionAçıklama MechanismMekanizma
interfaces List of network interfaces to attach eBPF probes. Supports wildcards (e.g., lxc*).eBPF problarının bağlanacağı ağ arayüzlerinin listesi. Joker karakterleri destekler (örn. lxc*). eBPF XDP/TC AttachmenteBPF XDP/TC Bağlantısı
interfaces:
  - name: "lxc*"     # Container interfaces
  - name: "cil*"     # Cilium interfaces
  - name: "ens192"   # Physical interface
  - name: "cni0"     # CNI bridge

Traffic Filtering

Trafik Filtreleme

FilterFiltre DescriptionAçıklama DefaultVarsayılan
exclude_port Suppress monitoring for specific TCP/UDP ports.Belirli TCP/UDP portları için izlemeyi durdur. []
exclude_ips List of CIDR blocks or single IPs to ignore.Yoksayılacak CIDR bloklarının veya tekil IP'lerin listesi. []
exclude_tcp_flags Skip monitoring for specific TCP control flags.Belirli TCP kontrol bayrakları için izlemeyi atla. []
exclude_namespaces Ignore traffic from pods in these Kubernetes namespaces.Bu Kubernetes namespace'lerindeki pod'lardan gelen trafiği yoksay. ["kube-system"]
exclude_pod_prefixes Filter out pods whose names start with these prefixes.İsimleri bu ön eklerle başlayan pod'ları filtrele. []
only_kubernetes_pod_ips If true, captures traffic only if the source or destination is a known Pod IP.Doğruysa, yalnızca kaynak veya hedef bilinen bir Pod IP'si ise trafiği yakalar. false
only_kubernetes_service_ips If true, captures traffic only involving Kubernetes Service (ClusterIP) addresses.Doğruysa, yalnızca Kubernetes Servis (ClusterIP) adreslerini içeren trafiği yakalar. false

IP Exclusion Best Practices

IP Hariç Tutma En İyi Uygulamalar

🌐 Flannel CNI

🌐 Flannel CNI

If using Flannel, exclude IPs ending with .0 and .1 from your CIDR block to avoid infrastructure noise:

Flannel kullanıyorsanız, altyapı gürültüsünü önlemek için CIDR bloğunuzda .0 ve .1 ile biten IP'leri hariç tutun:

exclude_ips:
  - "10.247.0.1/32"
  - "10.247.1.1/32"
  - "10.247.2.1/32"
  - "10.247.3.1/32"
  - "10.247.0.0/32"
  - "10.247.1.0/32"
exclude_ips:
  - "10.247.0.1/32"
  - "10.247.1.1/32"
  - "10.247.2.1/32"
  - "10.247.3.1/32"
  - "10.247.0.0/32"
  - "10.247.1.0/32"

🔷 Cilium CNI

🔷 Cilium CNI

For Cilium, exclude cilium_host interface IPs to reduce system traffic monitoring:

Cilium için, sistem trafiği izlemeyi azaltmak için cilium_host arayüz IP'lerini hariç tutun:

# Find cilium_host IPs with:
# ip addr show cilium_host
exclude_ips:
  - "10.245.1.87/32"  # cilium_host IP
# cilium_host IP'lerini şununla bulun:
# ip addr show cilium_host
exclude_ips:
  - "10.245.1.87/32"  # cilium_host IP

Example cilium_host interface:

Örnek cilium_host arayüzü:

cilium_host: flags=4291<UP,BROADCAST,RUNNING,NOARP,MULTICAST>  mtu 1450
        inet 10.245.1.87  netmask 255.255.255.255

Kubernetes Integration Settings

Kubernetes Entegrasyon Ayarları

SettingAyar DescriptionAçıklama DefaultVarsayılan
kubernetes.enabled Toggle K8s metadata enrichment (Pod/Service names).K8s metadata zenginleştirmesini (Pod/Servis isimleri) aç/kapat. true
kubernetes.config_path Path to kubeconfig file (null for in-cluster).Kubeconfig dosyası yolu (küme içi için null). null
kubernetes.sync_interval Refresh rate for Pod/Service IP mapping (seconds).Pod/Servis IP eşlemesi için yenileme hızı (saniye). 60

Processing Settings

İşleme Ayarları

SettingAyar DescriptionAçıklama DefaultVarsayılan
processing.print_to_console Enable/disable flow logging to container stdout.Konteyner stdout'una akış günlüğünü etkinleştir/devre dışı bırak. false

Data Export Configuration

Veri Dışa Aktarma Yapılandırması

SettingAyar DescriptionAçıklama DefaultVarsayılan
exporter.enabled Enable data export to backendBackend'e veri dışa aktarımını etkinleştir true
exporter.http_endpoint Backend API endpoint (host:port)Backend API uç noktası (host:port) backend-ip:8686
exporter.buffer_size Flow buffer size before sendingGöndermeden önce akış tampon boyutu 100
exporter.timeout HTTP request timeout (seconds)HTTP istek zaman aşımı (saniye) 30

Complete Configuration Example

Tam Yapılandırma Örneği

config.yaml: |
    interfaces:
      - name: "lxc*"
      - name: "cil*"
      - name: "ens192"
      - name: "cni0"
    filters:
      exclude_port:
        - "1025"
      exclude_ips: 
        - "10.245.0.114/32"
        - "10.245.2.107/32" 
        - "10.245.3.35/32"
        - "10.245.1.87/32"
        - "10.247.0.1/32"
        - "10.247.1.1/32"
        - "10.247.2.1/32"
        - "10.247.3.1/32"
        - "10.247.4.1/32"
        - "10.247.5.1/32"
        - "10.247.6.1/32"
        - "10.247.7.1/32"
        - "10.247.8.1/32"
        - "10.247.9.1/32"
        - "10.247.10.1/32"
        - "10.247.11.1/32"
        - "10.247.12.1/32"
        - "10.247.13.1/32"
        - "10.247.14.1/32"
        - "10.247.15.1/32"
        - "10.247.16.1/32"
        - "10.247.17.1/32"
        - "10.247.18.1/32"
        - "10.247.0.0/32"
        - "10.247.1.0/32"
        - "10.247.2.0/32"
        - "10.247.3.0/32"
        - "10.247.4.0/32"
        - "10.247.5.0/32"
        - "10.247.6.0/32"
        - "10.247.7.0/32"
        - "10.247.8.0/32"
        - "10.247.9.0/32"
        - "10.247.10.0/32"
        - "10.247.11.0/32"
        - "10.247.12.0/32"
        - "10.247.13.0/32"
        - "10.247.14.0/32"
        - "10.247.15.0/32"
        - "10.247.16.0/32"
        - "10.247.17.0/32"
        - "10.247.18.0/32" 
      exclude_tcp_flags: []
      exclude_namespaces: ["kube-system"]
      exclude_pod_prefixes: ["rook-", "jaeger-"]
      only_kubernetes_pod_ips: false
      only_kubernetes_service_ips: false
    
    kubernetes:
      enabled: true
      config_path: null
      sync_interval: 60
    
    processing:
      print_to_console: false
    
    exporter:
      enabled: true
      http_endpoint: "10.200.63.202:8686"
      buffer_size: 100
      timeout: 30

🚀 Applying Configuration

🚀 Yapılandırmayı Uygulama

After modifying the configuration, restart the agent pods to apply changes:

Yapılandırmayı değiştirdikten sonra, değişiklikleri uygulamak için ajan pod'larını yeniden başlatın:

kubectl rollout restart daemonset/http-tracer -n poyraz-network-observability