Cilium Cheatsheet

Cilium CheatsheetKapitel 04 von 11

Cilium L7-Policies und toFQDNs

Stand Cilium 1.20 · Edition 2026.11 · Release-Daten geprüft am 30. Oktober 2026

HTTP-Rules (L7)

L7-Regeln hängen unter toPorts.rules.http: method, path, host als POSIX-Regex. Header nie per Regex: headers prüft Präsenz, als "Name: Wert" den exakten Wert; headerMatches vergleicht exakt (Wert auch aus Secret, mismatch steuert die Reaktion). Durchsetzung via node-lokalem Envoy; Verstoß liefert HTTP 403 statt Paket-Drop.

Weiterer L7-Typ: dns. Kafka- und proxylib-Regeln (kafka, l7, l7proto) sind seit 1.20 entfernt und müssen vor dem Upgrade aus den Policies raus.

spec:
  endpointSelector:
    matchLabels: {app: api}
  ingress:
  - fromEndpoints:
    - matchLabels: {app: frontend}
    toPorts:
    - ports:
      - {port: "80", protocol: TCP}
      rules:
        http:
        - method: GET
          path: /v1/.*

toFQDNs (Egress nach Namen)

matchName exakt, matchPattern mit Wildcard.

Pflicht-Voraussetzung: eine rules.dns-Regel schaltet den DNS-Proxy ein, ohne DNS-Sichtbarkeit kann Cilium FQDNs nicht auf IPs mappen und die Policy läuft leer. Selektoren ohne Namespace-Label gelten in einer CNP nur im eigenen Namespace, kube-dns also mit Namespace selektieren.

egress:
- toEndpoints:
  - matchLabels:
      k8s:io.kubernetes.pod.namespace: kube-system
      k8s-app: kube-dns
  toPorts:
  - ports: [{port: "53", protocol: ANY}]
    rules:
      dns: [{matchPattern: "*"}]
- toFQDNs:
  - matchName: api.example.com
  - matchPattern: "*.storage.example.com"
  toPorts:
  - ports: [{port: "443", protocol: TCP}]