Slide 1

Slide 1 text

Thomas Vitale The Golden Path to SpringOne Mar 23rd, 2023 A Paved Path to Production on Kubernetes @vitalethomas

Slide 2

Slide 2 text

Systematic • Software Engineer and Cloud Architect. • Author of “Cloud Native Spring in Action” (Manning). • OSS contributor (Java, Spring, Cloud Native Technologies) Thomas Vitale thomasvitale.com @vitalethomas

Slide 3

Slide 3 text

Problem @vitalethomas

Slide 4

Slide 4 text

Value @vitalethomas

Slide 5

Slide 5 text

Delivering Value From idea to production Developer Production Idea @vitalethomas ?

Slide 6

Slide 6 text

Goals 2 Reduced cognitive load 3 Clear and safe path to production 1 Rapid and continuous feedback loop @vitalethomas

Slide 7

Slide 7 text

Development Workflow @vitalethomas

Slide 8

Slide 8 text

Cloud Native @vitalethomas

Slide 9

Slide 9 text

From Traditional to Cloud Native Application Server, Embedded Server Runtime (JVM) Middleware (Application Server) Application (WAR/EAR) Runtime (JVM) Application (JAR) @vitalethomas

Slide 10

Slide 10 text

Containers @vitalethomas

Slide 11

Slide 11 text

Moving to Containers Application Server, Embedded Server, Container Runtime (OCI) Application (Container) Runtime (JVM) Middleware (Application Server) Application (WAR/EAR) Runtime (JVM) Application (JAR) @vitalethomas

Slide 12

Slide 12 text

Cloud Native Buildpacks @vitalethomas

Slide 13

Slide 13 text

Image pack build Cloud Native Buildpacks From source code to container image @vitalethomas

Slide 14

Slide 14 text

Kubernetes @vitalethomas

Slide 15

Slide 15 text

Moving to Kubernetes Application Server, Embedded Server, Container, Kubernetes Runtime (OCI) Middleware (Kubernetes) Application (Container) Runtime (JVM) Middleware (Application Server) Application (WAR/EAR) Runtime (JVM) Application (JAR) Runtime (OCI) Application (Container) @vitalethomas

Slide 16

Slide 16 text

Tilt @vitalethomas

Slide 17

Slide 17 text

Tilt Continuous development on Kubernetes @vitalethomas CODE BUILD RUN TEST

Slide 18

Slide 18 text

Goals 2 Reduced cognitive load 3 Clear and safe path to production 1 Rapid and continuous feedback loop @vitalethomas

Slide 19

Slide 19 text

CI/CD Pipeline(s) @vitalethomas

Slide 20

Slide 20 text

CI/CD Pipeline (Imperative) Check out source code Build container image Con fi gure workload Deploy workload Orchestrator Tightly coupled Rigid system No clear separation of concerns Hard to maintain @vitalethomas

Slide 21

Slide 21 text

Delivering Value From code to production Developer Production Application Operator Security Expert Platform Engineer @vitalethomas

Slide 22

Slide 22 text

Check out source code Build container image Con fi gure workload Deploy workload @vitalethomas

Slide 23

Slide 23 text

Check out source code Build container image Con fi gure workload Deploy workload Kubernetes Manifests GitOps @vitalethomas

Slide 24

Slide 24 text

Check out source code Build container image Con fi gure workload Deploy workload Kubernetes Manifests Container Image

Slide 25

Slide 25 text

Check out source code Build container image Con fi gure workload Deploy workload Kubernetes Manifests Container Image Source Code CI/CD Pipeline (Reactive) Loosely coupled Separation of concerns Flexible Consistent path to production

Slide 26

Slide 26 text

Check out source code Build container image Con fi gure workload Deploy workload Kubernetes Manifests Container Image Source Code CI/CD Pipeline (Reactive) Loosely coupled Separation of concerns Flexible Consistent path to production

Slide 27

Slide 27 text

Cartographer @vitalethomas

Slide 28

Slide 28 text

Kubernetes Native Choreographer Framework to build paved paths to production @vitalethomas

Slide 29

Slide 29 text

Workload API Developer-friendly interface @vitalethomas apiVersion: carto.run/v1alpha1 kind: Workload metadata: name: band-service labels: apps.kadras.io/workload-type: web spec: source: git: url: https://github.com/ThomasVitale/band-service ref: branch: main

Slide 30

Slide 30 text

Watch Source Code Testing Build Con fi guration Deployment

Slide 31

Slide 31 text

https://landscape.cncf.io

Slide 32

Slide 32 text

SupplyChain API Describes the path to production @vitalethomas apiVersion: carto.run/v1alpha1 kind: ClusterSupplyChain metadata: name: supply-chain spec: selector: apps.kadras.io/workload-type: web resources: - name: source-provider templateRef: kind: ClusterSourceTemplate name: source - name: image-builder templateRef: kind: ClusterImageTemplate name: image sources: - resource: source-provider name: source - name: deployer templateRef: kind: ClusterTemplate name: app-deploy images: - resource: image-builder name: image

Slide 33

Slide 33 text

cartographer.sh

Slide 34

Slide 34 text

Watch Source Code Testing Build Con fi guration Deployment

Slide 35

Slide 35 text

@vitalethomas apiVersion: source.toolkit.fluxcd.io/v1 kind: GitRepository metadata: name: band-service spec: interval: 1m0s url: https://github.com/ThomasVitale/band-service ref: branch: main

Slide 36

Slide 36 text

@vitalethomas apiVersion: source.toolkit.fluxcd.io/v1 kind: GitRepository metadata: name: $(workload.metadata.name)$ spec: interval: 1m0s url: $(workload.spec.source.git.url)$ ref: $(workload.spec.source.git.ref)$

Slide 37

Slide 37 text

@vitalethomas apiVersion: carto.run/v1alpha1 kind: ClusterSourceTemplate metadata: name: source spec: urlPath: .status.artifact.url revisionPath: .status.artifact.revision template: apiVersion: source.toolkit.fluxcd.io/v1 kind: GitRepository metadata: name: $(workload.metadata.name)$ spec: interval: 1m0s url: $(workload.spec.source.git.url)$ ref: $(workload.spec.source.git.ref)$

Slide 38

Slide 38 text

@vitalethomas apiVersion: carto.run/v1alpha1 kind: ClusterSourceTemplate metadata: name: source spec: urlPath: .status.artifact.url revisionPath: .status.artifact.revision template: apiVersion: source.toolkit.fluxcd.io/v1 kind: GitRepository metadata: name: $(workload.metadata.name)$ spec: interval: 1m0s url: $(workload.spec.source.git.url)$ ref: $(workload.spec.source.git.ref)$ Template API Supply chain activities

Slide 39

Slide 39 text

Capabilities over responsibilities @vitalethomas

Slide 40

Slide 40 text

Developer @vitalethomas

Slide 41

Slide 41 text

Developer Platform @vitalethomas

Slide 42

Slide 42 text

Developer Platform @vitalethomas

Slide 43

Slide 43 text

Goals 2 Reduced cognitive load 3 Clear and safe path to production 1 Rapid and continuous feedback loop @vitalethomas

Slide 44

Slide 44 text

Resources @vitalethomas

Slide 45

Slide 45 text

Resources Source code • Presentation source code • Kadras: Cloud Native Platforms Toolkit • Cloud Native Buildpacks for ARM64 • Software Supply Chain Choreography • Cartographer • Cartographer CLI • Tanzu Application Platform @vitalethomas

Slide 46

Slide 46 text

Thomas Vitale The Golden Path to SpringOne Mar 23rd, 2023 A Paved Path to Production on Kubernetes thomasvitale.com @vitalethomas @[email protected]