$30 off During Our Annual Pro Sale. View Details »

Was Kubernetes-Ingress-Regeln mit der Chomsky-Hierarchie zu tun haben

Was Kubernetes-Ingress-Regeln mit der Chomsky-Hierarchie zu tun haben

Eines schönen Tages kam ich auf die Idee, FizzBuzz in Kubernetes zu implementieren. Aber Lars, fragte mich der Engel auf meiner linken Schulter, geht das überhaupt? In Ingress-Regeln kann man doch nur reguläre Ausdrücke verwenden. Sogleich erwiderte der Teufel auf meiner rechten Schulter: Doch, denn die Teilbarkeit einer Zahl in beliebiger Basisrepräsentation ist regulär! Bevor der Engel noch etwas dazu sagen konnte, war ich schon längst im Kaninchenbau verschwunden und tat, was getan werden musste. Schaut euch diesen Vortrag an, in dem ich Noam Chomsky und Kelsey Hightower zum Weinen bringen werde. Vielleicht lernt ihr dabei auch noch etwas fürs Leben.

Lars Hupel

June 29, 2022
Tweet

More Decks by Lars Hupel

Other Decks in Programming

Transcript

  1. Was Kubernetes-
    Ingress-Regeln mit
    der Chomsky-
    Hierarchie zu tun
    haben
    CLOUDLAND / 29.06.2022
    LARS HUPEL
    @LARSR_H

    View Slide

  2. View Slide

  3. 🧑 👩
    🍷 🍷
    💬
    Was ist FizzBuzz?
    Du kennst FizzBuzz
    nicht?
    💬

    View Slide

  4. View Slide

  5. 1
    2
    Fizz
    4
    Buzz
    Fizz
    7
    8
    Fizz
    Buzz
    11
    Fizz
    13
    14
    Fizzbuzz

    View Slide

  6. View Slide

  7. View Slide

  8. View Slide

  9. Enterprise™ FizzBuzz requirements
    Cloud Native Web Scale Low Code

    View Slide

  10. n % 15 == 0

    View Slide

  11. View Slide

  12. View Slide

  13. Hören Sie
    mir mal zu,
    dann können
    Sie nämlich
    noch was
    lernen.
    Olaf Kosinsky, CC-BY-SA 3.0-de

    View Slide

  14. Wat is eine
    Sprache?
    Da stellen
    mer uns ma
    janz domm.

    View Slide

  15. View Slide

  16. Andrew Rusk, CC-BY 2.0

    View Slide

  17. Alle Sprachen
    🤯
    Aufzählbar
    😭
    Kontextsensitiv
    🙄
    Kontextfrei
    😊
    Regulär
    😍

    View Slide

  18. View Slide

  19. Robert Nystrom, MIT license

    View Slide

  20. Klasse Modell Laufzeit Beispiel
    Unentscheidbar
    ❌ ❌ 🇩🇰
    Entscheidbar TM
    ❓ Post
    Kontextsensitiv



    Kontextfrei



    Regulär



    View Slide

  21. Alle Sprachen
    🤯
    Aufzählbar
    😭
    Kontextsensitiv
    🙄
    Kontextfrei
    😊
    Regulär
    😍

    View Slide

  22. View Slide

  23. Klasse Modell Laufzeit Beispiel
    Unentscheidbar
    ❌ ❌ 🇩🇰
    Entscheidbar TM
    ❓ Post
    Kontextsensitiv LBA
    ❓ XML
    Kontextfrei



    Regulär



    View Slide

  24. Alle Sprachen
    🤯
    Aufzählbar
    😭
    Kontextsensitiv
    🙄
    Kontextfrei
    😊
    Regulär
    😍

    View Slide

  25. Robert Nystrom, MIT license

    View Slide

  26. View Slide

  27. Klasse Modell Laufzeit Beispiel
    Unentscheidbar
    ❌ ❌ 🇩🇰
    Entscheidbar TM
    ❓ Post
    Kontextsensitiv LBA
    ❓ XML
    Kontextfrei PDA/CFG 𝓞(n³) arith. Ausdrücke
    Regulär



    View Slide

  28. Alle Sprachen
    🤯
    Aufzählbar
    😭
    Kontextsensitiv
    🙄
    Kontextfrei
    😊
    Regulär
    😍

    View Slide

  29. reguläre

    View Slide

  30. View Slide

  31. Klasse Modell Laufzeit Beispiel
    Unentscheidbar
    ❌ ❌ 🇩🇰
    Entscheidbar TM
    ❓ Post
    Kontextsensitiv LBA
    ❓ XML
    Kontextfrei PDA/CFG 𝓞(n³) arith. Ausdrücke
    Regulär DFA/RE 𝓞(n) Lexer

    View Slide

  32. View Slide

  33. View Slide

  34. View Slide

  35. View Slide

  36. View Slide

  37. View Slide

  38. View Slide

  39. View Slide

  40. View Slide

  41. View Slide

  42. View Slide

  43. View Slide

  44. View Slide

  45. View Slide

  46. View Slide

  47. View Slide

  48. View Slide

  49. View Slide

  50. View Slide

  51. 124

    View Slide

  52. 124

    View Slide

  53. 124

    View Slide

  54. 124

    View Slide

  55. View Slide

  56. View Slide

  57. View Slide

  58. View Slide

  59. apiVersion: networking.k8s.io/v1beta1
    kind: Ingress
    metadata:
    name: fizzbuzz-5
    annotations:
    nginx.ingress.kubernetes.io/rewrite-target: /get?response=buzz
    nginx.ingress.kubernetes.io/use-regex: "true"
    spec:
    rules:
    - http:
    paths:
    - path: "/.*[05]$"
    backend:
    serviceName: httpbin
    servicePort: 80

    View Slide

  60. /([0369]|[147][0369]*([147]
    [0369]*[258][0369]*)*([147]
    [0369]*[147]|[258])|[258]
    [0369]*([258][0369]*[147]
    [0369]*)*([258][0369]*[258]|
    [147]))*(0|[147][0369]*
    ([147][0369]*[258]
    [0369]*)*5|[258][0369]*
    ([258][0369]*[147][0369]*)*
    [258][0369]*5)$
    n % 15 == 0
    http://blogs.perl.org/users/mauke/2017/08/fizzbuzz.html

    View Slide

  61. Demo

    View Slide

  62. github.com

    /larsrh/fizzbuzz-k8s/

    View Slide

  63. View Slide

  64. View Slide

  65. Q&A
    Lars Hupel
    [email protected]
    @larsr_h
    www.innoq.com
    innoQ Deutschland GmbH
    Krischerstr. 100
    40789 Monheim
    +49 2173 333660
    Ohlauer Str. 43
    10999 Berlin
    Ludwigstr. 180E
    63067 Offenbach
    Kreuzstr. 16
    80331 München
    Hermannstr. 13
    20095 Hamburg
    Erftstr. 15-17
    50672 Köln
    Königstorgraben 11
    90402 Nürnberg

    View Slide