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.

C20b9829daddbee16e359b0a750660a5?s=128

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
  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
  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
  4. Quiz Game thomasvitale.com @vitalethomas @salaboy @vitalethomas Building applications using functions

  5. Serverless @salaboy @vitalethomas

  6. Serverless Architectures Developers focus on code Focus on business logic

    @salaboy @vitalethomas Developer Platform Infrastructure Provisioning Workload Management Dynamic Scaling
  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
  8. buildpacks.io

  9. Demo thomasvitale.com @vitalethomas @salaboy @vitalethomas Knative Serving and Buildpacks -

    From code to URL
  10. Platform 1 - Serverless experience From containers to deployment with

    autoscaling @salaboy @vitalethomas Image pack kn URL Kubernetes Cluster Container Container Container Knative Serving
  11. Functions @salaboy @vitalethomas

  12. Functions Functional programming model Triggered by requests or events Stateless

    Smaller scope Cold start Cost optimization @salaboy @vitalethomas
  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)
  14. Demo thomasvitale.com @vitalethomas @salaboy @vitalethomas Knative Functions - From idea

    to URL
  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
  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
  17. Events @salaboy @vitalethomas

  18. CloudEvents Interoperability and standardization Metadata Data Id Source Type Payload

    JSON AMQP Kafka MQTT @salaboy @vitalethomas
  19. Knative Eventing Event routing and triggers Developer-friendly abstractions Event-driven architectures

    Event routing Polyglot support with CloudEvents Pluggable @salaboy @vitalethomas Cloud agnostic
  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
  21. Game - Architecture @salaboy @vitalethomas

  22. Kubernetes Cluster Game - Functions Synchronous functions with Knative <Client

    Side> React Application <Orchestrator> Game FrontEnd <Function> Start Game <Function> Level X … <Function> Get LeaderB Redis (State) HTTP SYNC <Function> Level 1 …
  23. Game - Eventing Knative Eventing, CloudEvents & RSocket Kubernetes Cluster

    <Client Side> React Application <Orchestrator> Game FrontEnd <Function> Level X … Redis HTTP SYNC Broker Trigger Score CloudEvent RSocket GameScore CloudEvent Trigger Another Function
  24. Discount codes Manning • 35% discount code, valid for all

    products in all format • ctwkucoeu22 • manning.com
  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
  26. Mauricio Salatino & Thomas Vitale KubeCon + CloudNativeCon Europe May

    18th, 2022 A Polyglot Developer Experience on Kubernetes Docker-less and YAML-less @salaboy @vitalethomas