Continuous Lifecycle / ContainerConf, Februar 2021, online: Vortrag von Mario-Leander Reimer (@LeanderReimer, Chief Software Architect bei QAware)
== Dokument bitte herunterladen, falls unscharf! Please download slides if blurred! ==
Abstract: YAML ist leider die vorherrschende Methode, unsere Kubernetes Workloads zu beschreiben: die Summe der ConfigMaps, Deployments und Services aller Umgebungen ist allzu schnell ein aufgeblähter, unüberschaubarer Wust an YAML-Definitionen. In Kombination mit ineffizienten Werkzeugen und Arbeitsabläufen führt dies schnell zu Frustration und geringer Produktivität der Entwickler.
3. // Cloud Native Day // Essentielle Tools für produktive und glückliche #CloudNativeNerds // @LeanderReimer #qaware #ConCon21
3
Code & Demos
https://github.com/qaware/productive-cloud-native-devex
4. // Cloud Native Day // Essentielle Tools für produktive und glückliche #CloudNativeNerds // @LeanderReimer #qaware #ConCon21
DevEx in den guten alten Tagen …
4
Spec Design Test Integrate Operate
Develop Deploy
5. // Cloud Native Day // Essentielle Tools für produktive und glückliche #CloudNativeNerds // @LeanderReimer #qaware #ConCon21
Cloud-native DevEx heute?
5
Spec Design Test Integrate Operate
Develop Deploy
6. // Cloud Native Day // Essentielle Tools für produktive und glückliche #CloudNativeNerds // @LeanderReimer #qaware #ConCon21
Cloud-native DevEx heute!
6
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
7. // Cloud Native Day // Essentielle Tools für produktive und glückliche #CloudNativeNerds // @LeanderReimer #qaware #ConCon21
How do you organise and enable
technology teams for
fast
fl
ow and high productivity?
7
8. // Cloud Native Day // Essentielle Tools für produktive und glückliche #CloudNativeNerds // @LeanderReimer #qaware #ConCon21
Zu viel Cognitive Load hindert den schnellen Fluss,
kurze Feedback-Zyklen und hohe Produktivität.
• Intrinsic Cognitive Load - bezieht sich auf das Wissen und
die fundamentalen Aspekte unseres Tuns (z.B. Programmier-
Sprachen, APIs, Frameworks, Micro Architektur)
• Extraneous Cognitive Load - bezieht sich auf die Umgebung
(z.B. Deployment, Kon
fi
guration, Konsolen Befehle)
• Germane Cognitive Load - bezieht sich auf bestimmte
Aspekte in der Geschäftsdomäne (aka. „value added“
Thinking and Learning)
8
https://teamtopologies.com
9. // Cloud Native Day // Essentielle Tools für produktive und glückliche #CloudNativeNerds // @LeanderReimer #qaware #ConCon21
Minimierung der
Intrinsic Cognitive Load
(Training, Peer Programming, Standards, Sprache …)
9
10. // Cloud Native Day // Essentielle Tools für produktive und glückliche #CloudNativeNerds // @LeanderReimer #qaware #ConCon21
Eliminierung der
Extraneous Cognitive Load
(Automatisierung, Abstraktion, Standardisierung, …)
10
11. // Cloud Native Day // Essentielle Tools für produktive und glückliche #CloudNativeNerds // @LeanderReimer #qaware #ConCon21
Nutze das richtige Werkzeuge für den Job!
11
Getty Images Liliboas
Skaffold Tilt
kustomize
Buildpacks Pulumi
12. // Cloud Native Day // Essentielle Tools für produktive und glückliche #CloudNativeNerds // @LeanderReimer #qaware #ConCon21
Was sind Cloud-native Buildpacks?
• Buildpacks sind kombinierbare,
modulare Tools um Quellcode in OCI
Images zu übersetzen.
• Das Buildpack Konzept wurde von
Heroku in 2011 eingeführt. Adoptiert
von Cloud Foundry und anderen PaaS.
• CNCF Projekt initiiert von Pivotal und
Heroku im Januar 2018
• Unterstützung von Enterprise Ops die
viele Anwendungen verwalten müssen
• Zahlreiche Default Build Packs sowie
die Möglichkeit für eigene Build Packs
12
13. // Cloud Native Day // Essentielle Tools für produktive und glückliche #CloudNativeNerds // @LeanderReimer #qaware #ConCon21
Kubernetes Native Con
fi
guration Management
• DRY - Don’t repeat yourself.
• Umgebungsabhängige Anpassung
von Kubernetes Resource
De
fi
nitionen ganze ohne Templates
• Wird von kubectl mittels apply -k
direkt unterstützt
• Siehe https://kustomize.io/tutorial
13
14. // Cloud Native Day // Essentielle Tools für produktive und glückliche #CloudNativeNerds // @LeanderReimer #qaware #ConCon21
Pulumi - Modern Infrastructure as Code.
• Imperative management and de
fi
nition of Kubernetes applications
and objects using familiar programming language
• Use the same tools to build your application and its con
fi
guration
• Compose and share reusable components through code libraries
• Terraform alternative: supports all major cloud providers (AWS, …)
• Similar projects: Amazon CDK, cdk8s
14
15. // Cloud Native Day // Essentielle Tools für produktive und glückliche #CloudNativeNerds // @LeanderReimer #qaware #ConCon21
Fast. Repeatable. Simple.
Local Kubernetes development.
• https://skaffold.dev
• Übernimmt den Work
fl
ow zum Erstellen, Pushen und Bereitstellen einer
Anwendung
• Beobachtet relevante Dateisystem Änderungen und löst kontinuierlich das
Erstellen und Bereitstellen der Änderungen aus
• Ermöglicht die Synchronisierung von statischen Ressourcen ohne das
Docker Image neu zu bauen
• Unterstützung für unterschiedliche Umgebungen über Pro
fi
les, Env Vars
Templates und kube-context Aktivierung
15
16. // Cloud Native Day // Essentielle Tools für produktive und glückliche #CloudNativeNerds // @LeanderReimer #qaware #ConCon21
The Scaffold Work
fl
ow in a Nutshell
16
17. // Cloud Native Day // Essentielle Tools für produktive und glückliche #CloudNativeNerds // @LeanderReimer #qaware #ConCon21
— Stressless Local K8s Development
• https://tilt.dev
• Einfache Verwaltung von komplexen Microservice Konstellati
• Unterstützung zahlreicher Experten Tricks für die Entwicklung in K8s
Umgebungen, wie Port Forwarding oder Live Updates
• Beobachtet das Dateisystem und Aktualisiert die Deployments in
Sekunden bei allen relevanten Änderungen
• Streamed Logs, Events und Pod Änderungen um schnell etwaige
Probleme zu identi
fi
zieren und anzuzeigen
• Bietet Console HUD und nette Web UI
17