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

Ways Towards a YAML-less Cloud-native DevEx

Ways Towards a YAML-less Cloud-native DevEx

YAML seems to be the predominant way to describe our Kubernetes workloads. For each and every microservice we have to declare deployments, services, config maps and secrets. Now multiply this by several environments and deployment variants. The result is excessive YAML bloat that often leads to frustration and low developer productivity.

In this session we will have a closer look at several developer focused tools like Draft, Buildpacks, Kustomize, Helm, Skaffold and Tilt to see how these work together nicely. All these tools aim to improve and optimize the inner development loop by reducing the amount of YAML and the required steps from source to deployment significantly. So make sure to join this talk if you want to have happy Cloud-native developers in your feature teams again.

M.-Leander Reimer

April 01, 2020
Tweet

More Decks by M.-Leander Reimer

Other Decks in Technology

Transcript

  1. Ways Towards a YAML-less Cloud-native DevEx Cloud Native Virtual Summit

    featuring Kubernetes, April 1st 2020 @LeanderReimer #cloudnativenerd #qaware
  2. // Cloud Native Virtual Summit // Ways Towards a YAML-less

    Cloud-native DevEx // @LeanderReimer #cloudnativenerd #qaware 2 #whoami Mario-Leander Reimer Chief Software Architect QAware GmbH Yes, this is me!
  3. // Cloud Native Virtual Summit // Ways Towards a YAML-less

    Cloud-native DevEx // @LeanderReimer #cloudnativenerd #qaware Cloud-native DevEx today? 3 Spec Design Test Integrate Operate Develop Deploy
  4. // Cloud Native Virtual Summit // Ways Towards a YAML-less

    Cloud-native DevEx // @LeanderReimer #cloudnativenerd #qaware Cloud-native DevEx today! 4 Spec Design Test Integrate Operate Develop Deploy Docker K8S JSON YAML AWS NFA CI/CD More
 YAML Even More YAML Agile Tracing M etrics More Stuff Eve More Eve More Eve More
  5. // Cloud Native Virtual Summit // Ways Towards a YAML-less

    Cloud-native DevEx // @LeanderReimer #cloudnativenerd #qaware How do you organise and enable technology teams for fast flow and high productivity? 5
  6. // Cloud Native Virtual Summit // Ways Towards a YAML-less

    Cloud-native DevEx // @LeanderReimer #cloudnativenerd #qaware Too much cognitive load will become a bottleneck for fast flow and high productivity. • Intrinsic Cognitive Load - relates to fundamental aspects and knowledge in the problem space (e.g. used languages, APIs, frameworks, micro architecture) • Extraneous Cognitive Load - relates to the environment (e.g. deployment, configuration, console commands) • Germane Cognitive Load - relates to specific aspects of the business domain (aka. „value added“ thinking and learning) 6 https://teamtopologies.com
  7. // Cloud Native Virtual Summit // Ways Towards a YAML-less

    Cloud-native DevEx // @LeanderReimer #cloudnativenerd #qaware Minimize intrinsic cognitive load (by training, peer programming, standards, languages, …) 7
  8. // Cloud Native Virtual Summit // Ways Towards a YAML-less

    Cloud-native DevEx // @LeanderReimer #cloudnativenerd #qaware Eliminate extraneous cognitive load (automate, automate, standardize, automate, automate, …) 8
  9. // Cloud Native Virtual Summit // Ways Towards a YAML-less

    Cloud-native DevEx // @LeanderReimer #cloudnativenerd #qaware Use the right tools for the job! 9 Getty Images Liliboas kustomize Skaffold Tilt Draft Buildpacks
  10. // Cloud Native Virtual Summit // Ways Towards a YAML-less

    Cloud-native DevEx // @LeanderReimer #cloudnativenerd #qaware 10 Code & Demos https://github.com/lreimer/productive-cloud-native-devex
  11. // Cloud Native Virtual Summit // Ways Towards a YAML-less

    Cloud-native DevEx // @LeanderReimer #cloudnativenerd #qaware — Streamlined Kubernetes Development • http://draft.sh • Draft targets the "inner loop" of a developer's workflow: as you hack on code, but before code is committed to version control. • Developed and backed by Microsoft Azure • Two simple commands: draft create and draft up • Language Support: support for 8 language packs built-in: .NET, GO, Node, PHP, Java (Maven, Gradle), Python and Ruby. • Draft detects language and generates a Dockerfile and Helm Chart with the best practices for that language. 11
  12. // Cloud Native Virtual Summit // Ways Towards a YAML-less

    Cloud-native DevEx // @LeanderReimer #cloudnativenerd #qaware What are Cloud-native Buildpacks? • Buildpacks were first introduced by Heroku in 2011. Since then, adopted by Cloud Foundry and other PaaS. • CNCF Project initiated by Pivotal and Heroku in January 2018 • Buildpacks are pluggable, modular tools to translate source code into OCI images • Reduces the operational burden on devs • Support enterprise operators who manage apps at scale • Several default build packs and option to build custom packs. 12
  13. // Cloud Native Virtual Summit // Ways Towards a YAML-less

    Cloud-native DevEx // @LeanderReimer #cloudnativenerd #qaware Kubernetes native configuration management • https://kustomize.io • A template-free way to customize your application configuration • Now, built into kubectl as apply -k • Try https://kustomize.io/tutorial 13
  14. // Cloud Native Virtual Summit // Ways Towards a YAML-less

    Cloud-native DevEx // @LeanderReimer #cloudnativenerd #qaware Fast. Repeatable. Simple. Local Kubernetes development. • https://skaffold.dev • Handles the workflow for building, pushing and deploying an app • Watches local file system. Continuously triggers build & deploy on code changes • Allows to synchronize static resources without rebuilding the image • Support for different environments with Profiles, Env Vars Templates and kube-context activation 14
  15. // Cloud Native Virtual Summit // Ways Towards a YAML-less

    Cloud-native DevEx // @LeanderReimer #cloudnativenerd #qaware The Scaffold Workflow in a Nutshell 15
  16. // Cloud Native Virtual Summit // Ways Towards a YAML-less

    Cloud-native DevEx // @LeanderReimer #cloudnativenerd #qaware — Stressless Local Kubernetes Development • https://tilt.dev • Automatically handles all the expert tricks for working in a K8s development environment • Fire up and manage complex microservice constellations • Watches your file system and update servers in seconds • Streams logs, events, and pod changes so that it can show you the problem when something breaks • Provides console HUD and nice Web UI 16