Upgrade to Pro — share decks privately, control downloads, hide ads and more …

A Polyglot Developer Experience on Kubernetes: Docker-less and YAML-less

A Polyglot Developer Experience on Kubernetes: Docker-less and YAML-less

Let's build a CaaS (Containers-as-a-Service) platform that delivers a similar experience to well-loved solutions like Google Cloud Run and Azure Container Apps. Those platforms allow you to run your applications without the need to know about containers or Kubernetes. They take your source code and remotely build and deploy your software while hiding away the complexity of Docker and Kubernetes. This presentation gives practical advice on how to build such a platform in a cloud provider-agnostic way on top of Kubernetes using only open-source projects.

Thomas and Mauricio will show how the platform can scale and provide developers with a polyglot environment to code, build and deploy their event-driven applications. The presentation will cover how tools like Knative, CloudEvents, Buildpacks, func CLI, and popular languages like Java, Go, and Python can be glued together to provide an optimized polyglot developer experience that can be tested and demoed in front of a live audience.

Thomas Vitale

May 21, 2022
Tweet

More Decks by Thomas Vitale

Other Decks in Technology

Transcript

  1. Mauricio Salatino & Thomas Vitale
    KubeCon + CloudNativeCon Europe
    May 18th, 2022
    A Polyglot Developer
    Experience on Kubernetes
    Docker-less and YAML-less
    @salaboy @vitalethomas

    View Slide

  2. Mauricio Salatino
    VMware - Knative OSS
    • a.k.a @Salaboy

    • Sta
    ff
    Engineer - Knative Eventing
    tech lead for VMware

    • Knative OSS core contributor

    • Passionate about Functions,
    Platforms, Open Source and
    Kubernetes
    salaboy.com

    View Slide

  3. Systematic
    • Software Architect at
    Systematic, Denmark.

    • Author of “Cloud Native Spring
    in Action” (Manning).

    • Spring Security and Spring
    Cloud contributor.
    Thomas Vitale
    thomasvitale.com @vitalethomas

    View Slide

  4. Quiz Game
    thomasvitale.com @vitalethomas
    @salaboy @vitalethomas
    Building applications using functions

    View Slide

  5. Serverless
    @salaboy @vitalethomas

    View Slide

  6. Serverless Architectures
    Developers focus on code
    Focus on business logic
    @salaboy @vitalethomas
    Developer
    Platform
    Infrastructure

    Provisioning
    Workload

    Management
    Dynamic

    Scaling

    View Slide

  7. Knative Serving
    Serverless Containers on Kubernetes
    Developer-friendly

    abstractions
    From code to URL
    Autoscaling

    Scaling to zero
    Progressive

    Rollouts
    Request-driven

    Event-driven
    @salaboy @vitalethomas
    Cloud agnostic

    View Slide

  8. buildpacks.io

    View Slide

  9. Demo
    thomasvitale.com @vitalethomas
    @salaboy @vitalethomas
    Knative Serving and Buildpacks - From code to URL

    View Slide

  10. Platform 1 - Serverless experience
    From containers to deployment with autoscaling
    @salaboy @vitalethomas
    Image
    pack kn
    URL
    Kubernetes Cluster
    Container
    Container
    Container
    Knative
    Serving

    View Slide

  11. Functions
    @salaboy @vitalethomas

    View Slide

  12. Functions
    Functional programming model
    Triggered by
    requests or events
    Stateless Smaller scope
    Cold start Cost optimization
    @salaboy @vitalethomas

    View Slide

  13. Functions Patterns
    Topologies for functional programming
    @salaboy @vitalethomas
    Asynchronous
    processing
    Event-based
    Data stream

    via chained
    functions
    Synchronous
    Asynchronous
    Fire and Forget
    Request/
    Response
    Request/
    Response (State)

    View Slide

  14. Demo
    thomasvitale.com @vitalethomas
    @salaboy @vitalethomas
    Knative Functions - From idea to URL

    View Slide

  15. More on Knative Functions
    In active development, join the community!
    External templates

    repository
    Run locally with

    func run
    On-cluster build,

    no Docker required
    Roadmap to 1.0 GA
    @salaboy @vitalethomas
    Works with multiple
    languages and
    frameworks

    View Slide

  16. Platform 2 - Polyglot Functions
    From idea to deployment with autoscaling
    @salaboy @vitalethomas
    URL
    func create
    Image
    func deploy
    Kubernetes Cluster
    Container
    Container
    Container
    Knative
    Serving

    View Slide

  17. Events
    @salaboy @vitalethomas

    View Slide

  18. CloudEvents
    Interoperability and standardization
    Metadata
    Data
    Id

    Source

    Type
    Payload
    JSON

    AMQP

    Kafka

    MQTT
    @salaboy @vitalethomas

    View Slide

  19. Knative Eventing
    Event routing and triggers
    Developer-friendly

    abstractions
    Event-driven
    architectures
    Event routing
    Polyglot support
    with CloudEvents
    Pluggable
    @salaboy @vitalethomas
    Cloud agnostic

    View Slide

  20. Platform 3 - Knative Eventing
    Event-driven and reactive functions
    @salaboy @vitalethomas
    URL
    func create
    + trigger
    Image
    func deploy
    Kubernetes Cluster
    Container Container
    Knative
    Serving &
    Eventing
    Knative Broker
    Knative Event Sources
    Trigger A Trigger B

    View Slide

  21. Game - Architecture
    @salaboy @vitalethomas

    View Slide

  22. Kubernetes Cluster
    Game - Functions
    Synchronous functions with Knative



    React Application



    Game FrontEnd



    Start Game



    Level X






    Get LeaderB
    Redis


    (State)
    HTTP
    SYNC



    Level 1



    View Slide

  23. Game - Eventing
    Knative Eventing, CloudEvents & RSocket
    Kubernetes Cluster



    React Application



    Game FrontEnd



    Level X



    Redis
    HTTP SYNC
    Broker
    Trigger
    Score

    CloudEvent
    RSocket
    GameScore

    CloudEvent
    Trigger
    Another
    Function

    View Slide

  24. Discount codes
    Manning
    • 35% discount code, valid for
    all products in all format

    • ctwkucoeu22


    • manning.com

    View Slide

  25. Resources
    Source code
    • Learn more about the game:

    • https://github.com/salaboy/from-monolith-to-k8s/tree/main/game

    • Deploy the game on Kubernetes:

    • https://github.com/ThomasVitale/eventing-game

    • Knative: https://knative.dev

    • Knative Functions: https://github.com/knative-sandbox/kn-plugin-func

    View Slide

  26. Mauricio Salatino & Thomas Vitale
    KubeCon + CloudNativeCon Europe
    May 18th, 2022
    A Polyglot Developer
    Experience on Kubernetes
    Docker-less and YAML-less
    @salaboy @vitalethomas

    View Slide