Slide 1

Slide 1 text

Eric Sorenson // [email protected] // {github,twitter,soundcloud}.com/ahpook Cloud Native Configuration Management: 2020 and beyond

Slide 2

Slide 2 text

No content

Slide 3

Slide 3 text

IFTTT For Devops ...? puppet.com/project-nebula

Slide 4

Slide 4 text

• Platform-enabled • Resilient • Agile • Operable • Observable CN Characteristics

Slide 5

Slide 5 text

• Declarative config • Clean OS contract • Built for cloud • Enable CD 12 Facter Apps

Slide 6

Slide 6 text

• Use declarative formats for setup automation, to minimize time and cost for new developers joining the project; • Have a clean contract with the underlying operating system, offering maximum portability between execution environments; • Are suitable for deployment on modern cloud platforms, obviating the need for servers and systems administration; • Minimize divergence between development and production, enabling continuous deployment for maximum agility; • And can scale up without significant changes to tooling, architecture, or development practices. — Adam Wiggins, 12factor.net

Slide 7

Slide 7 text

Ephemerality Immutability Data...bility Cardinality

Slide 8

Slide 8 text

Infrastructure as code Infrastructure as data Infrastructure as software

Slide 9

Slide 9 text

TK Visualization of 110 Tools

Slide 10

Slide 10 text

The Configuration Complexity Clock (Mike Hadlow, via @garethr and Cedric Charly) 12 3 6 9 Hard Coded Config Values Rules Engine DSL Curse

Slide 11

Slide 11 text

12 3 6 9 Raw Config Generators Frontends DSL Taxonomy of Cloud-Native CM Tools

Slide 12

Slide 12 text

Generators

Slide 13

Slide 13 text

Kapitan - kapitan.dev • ‘reclass’ as a source of truth for config data • Jinja2 or jsonnet templates for generation • Compiles output into folders for runtime injection and gitops love

Slide 14

Slide 14 text

Kr8 – kr8.rocks • “Oh **** we’re going to have to write something” – (blog: leebriggs.co.uk) • Uses Jsonnet for both data storage and templating • Maps ‘components’ (things you run) onto ‘clusters’ (where you run them)

Slide 15

Slide 15 text

Frontends

Slide 16

Slide 16 text

Tanka – tanka.dev • Philosophically like ksonnet, but simpler: “environments” only • Relatively thin layer of workflow over jsonnet, featuring deep-merges • Uses k8s 1.13+ server- side diffing

Slide 17

Slide 17 text

Helm – helm.sh • ”Package management” for Kubernetes • Variable substitution to templating to… Lua? • Value injection still a problem

Slide 18

Slide 18 text

P U P P E T O V E R V I E W 18 Pulumi – pulumi.io • “Terraform for Programmers” • Multiple language bindings over TF providers – js, python • Cloud-based state by default

Slide 19

Slide 19 text

Domain Specific Languages

Slide 20

Slide 20 text

Terraform – https://terraform.io

Slide 21

Slide 21 text

Gyro – getgyro.io • Ground-up Java IaC tool from PerfectSense • Custom DSL / CLI for cloud provisioning • Y THO?!

Slide 22

Slide 22 text

Starlark – bazelbuild/starlark • Dialect of Python made for configuration languages • Multiple implementations: java, go, rust • Proposal for Tekton pipelines

Slide 23

Slide 23 text

Cue – cuelang.org • “Configure, Unify, Execute” • Data constraint language • Builds templating, defaults, spec directly into the config language • DSL over the domain of configuration

Slide 24

Slide 24 text

Lessons Learned

Slide 25

Slide 25 text

Complexity will chase you ....but wait until the last minute to start running *HONK*

Slide 26

Slide 26 text

Constraints and specs > all else or: “Any sufficiently advanced YAML dialect is indistinguishable from a DSL” json-schema.org | @lyraproj/dgo | WTFM

Slide 27

Slide 27 text

Stop making new DSLs. ... please? cuelang.org | jsonnet.org | @bazelbuild/starlark

Slide 28

Slide 28 text

Of all the problems we have confronted, the ones over which the most brainpower, ink, and code have been spilled are related to managing configurations—the set of values supplied to applications, rather than hard-coded into them. In truth, we could have devoted this entire article to the subject and still have had more to say. Burns, Grant, Brewer et al - “Borg, Omega and Kubernetes”

Slide 29

Slide 29 text

Thank you! Eric Sorenson // [email protected] @ahpook

Slide 30

Slide 30 text

Lessons Learned