Cloud Native Virtual Summit featuring Kubernetes, April 2020, talk by Mario-Leander Reimer (@LeanderReimer, Principal Software Architect at QAware)
== Please download slides if blurred! ==
Abstract:
YAML is the predominant way to describe your Kubernetes workloads. For each and every microservice you have to declare pods, 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, Skaffold, Tilt, Kustomize and Buildpacks. 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 on your feature teams again.
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 #qaware2
#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 JSONYAML
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
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 TiltDraft Buildpacks
10. // Cloud Native Virtual Summit // Ways Towards a YAML-less Cloud-native DevEx // @LeanderReimer #cloudnativenerd #qaware10
Code & Demoshttps://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