![Page 1: YAML is Optional · 2019-12-20 · YAML is Optional Exploring an App Developer's Kubernetes Options A link to this deck is bit.ly/2NPZTWE](https://reader034.vdocument.in/reader034/viewer/2022042222/5ec939f5a76a033f091c5acd/html5/thumbnails/1.jpg)
YAML is Optional Exploring an App Developer's Kubernetes Options
A link to this deck is bit.ly/2NPZTWE
![Page 2: YAML is Optional · 2019-12-20 · YAML is Optional Exploring an App Developer's Kubernetes Options A link to this deck is bit.ly/2NPZTWE](https://reader034.vdocument.in/reader034/viewer/2022042222/5ec939f5a76a033f091c5acd/html5/thumbnails/2.jpg)
Outline
2
1. Why containers? +/-2. The tragedy of YAML3. Summarizing dev issues4. Exploring solutions5. Summary
![Page 3: YAML is Optional · 2019-12-20 · YAML is Optional Exploring an App Developer's Kubernetes Options A link to this deck is bit.ly/2NPZTWE](https://reader034.vdocument.in/reader034/viewer/2022042222/5ec939f5a76a033f091c5acd/html5/thumbnails/3.jpg)
3
V12.13.0
![Page 4: YAML is Optional · 2019-12-20 · YAML is Optional Exploring an App Developer's Kubernetes Options A link to this deck is bit.ly/2NPZTWE](https://reader034.vdocument.in/reader034/viewer/2022042222/5ec939f5a76a033f091c5acd/html5/thumbnails/4.jpg)
4
© 2019 NetApp, Inc. All rights reserved. — NETAPP CONFIDENTIAL —
Part 1
It works on my local
![Page 5: YAML is Optional · 2019-12-20 · YAML is Optional Exploring an App Developer's Kubernetes Options A link to this deck is bit.ly/2NPZTWE](https://reader034.vdocument.in/reader034/viewer/2022042222/5ec939f5a76a033f091c5acd/html5/thumbnails/5.jpg)
5
© 2019 NetApp, Inc. All rights reserved. — NETAPP CONFIDENTIAL —
Hell is other people
![Page 6: YAML is Optional · 2019-12-20 · YAML is Optional Exploring an App Developer's Kubernetes Options A link to this deck is bit.ly/2NPZTWE](https://reader034.vdocument.in/reader034/viewer/2022042222/5ec939f5a76a033f091c5acd/html5/thumbnails/6.jpg)
6
© 2019 NetApp, Inc. All rights reserved. — NETAPP CONFIDENTIAL —
Hell is other people ‘s
Dev E r en
![Page 7: YAML is Optional · 2019-12-20 · YAML is Optional Exploring an App Developer's Kubernetes Options A link to this deck is bit.ly/2NPZTWE](https://reader034.vdocument.in/reader034/viewer/2022042222/5ec939f5a76a033f091c5acd/html5/thumbnails/7.jpg)
7
![Page 8: YAML is Optional · 2019-12-20 · YAML is Optional Exploring an App Developer's Kubernetes Options A link to this deck is bit.ly/2NPZTWE](https://reader034.vdocument.in/reader034/viewer/2022042222/5ec939f5a76a033f091c5acd/html5/thumbnails/8.jpg)
So… no more `nodemon` ?
8
![Page 9: YAML is Optional · 2019-12-20 · YAML is Optional Exploring an App Developer's Kubernetes Options A link to this deck is bit.ly/2NPZTWE](https://reader034.vdocument.in/reader034/viewer/2022042222/5ec939f5a76a033f091c5acd/html5/thumbnails/9.jpg)
9
© 2019 NetApp, Inc. All rights reserved. — NETAPP CONFIDENTIAL —
FROM node:6.11.5
WORKDIR /usr/src/appCOPY package.json .RUN npm install COPY . .
CMD [ "npm", "start" ]
![Page 10: YAML is Optional · 2019-12-20 · YAML is Optional Exploring an App Developer's Kubernetes Options A link to this deck is bit.ly/2NPZTWE](https://reader034.vdocument.in/reader034/viewer/2022042222/5ec939f5a76a033f091c5acd/html5/thumbnails/10.jpg)
10
![Page 11: YAML is Optional · 2019-12-20 · YAML is Optional Exploring an App Developer's Kubernetes Options A link to this deck is bit.ly/2NPZTWE](https://reader034.vdocument.in/reader034/viewer/2022042222/5ec939f5a76a033f091c5acd/html5/thumbnails/11.jpg)
11
© 2019 NetApp, Inc. All rights reserved. — NETAPP CONFIDENTIAL —
Part 2
Oh, hey there Kubernetes...
![Page 12: YAML is Optional · 2019-12-20 · YAML is Optional Exploring an App Developer's Kubernetes Options A link to this deck is bit.ly/2NPZTWE](https://reader034.vdocument.in/reader034/viewer/2022042222/5ec939f5a76a033f091c5acd/html5/thumbnails/12.jpg)
12
Learningcurve
![Page 13: YAML is Optional · 2019-12-20 · YAML is Optional Exploring an App Developer's Kubernetes Options A link to this deck is bit.ly/2NPZTWE](https://reader034.vdocument.in/reader034/viewer/2022042222/5ec939f5a76a033f091c5acd/html5/thumbnails/13.jpg)
13
© 2019 NetApp, Inc. All rights reserved. — NETAPP CONFIDENTIAL —
YAML
![Page 14: YAML is Optional · 2019-12-20 · YAML is Optional Exploring an App Developer's Kubernetes Options A link to this deck is bit.ly/2NPZTWE](https://reader034.vdocument.in/reader034/viewer/2022042222/5ec939f5a76a033f091c5acd/html5/thumbnails/14.jpg)
14
---
![Page 15: YAML is Optional · 2019-12-20 · YAML is Optional Exploring an App Developer's Kubernetes Options A link to this deck is bit.ly/2NPZTWE](https://reader034.vdocument.in/reader034/viewer/2022042222/5ec939f5a76a033f091c5acd/html5/thumbnails/15.jpg)
15
![Page 16: YAML is Optional · 2019-12-20 · YAML is Optional Exploring an App Developer's Kubernetes Options A link to this deck is bit.ly/2NPZTWE](https://reader034.vdocument.in/reader034/viewer/2022042222/5ec939f5a76a033f091c5acd/html5/thumbnails/16.jpg)
16
![Page 17: YAML is Optional · 2019-12-20 · YAML is Optional Exploring an App Developer's Kubernetes Options A link to this deck is bit.ly/2NPZTWE](https://reader034.vdocument.in/reader034/viewer/2022042222/5ec939f5a76a033f091c5acd/html5/thumbnails/17.jpg)
17
© 2019 NetApp, Inc. All rights reserved. — NETAPP CONFIDENTIAL —
![Page 18: YAML is Optional · 2019-12-20 · YAML is Optional Exploring an App Developer's Kubernetes Options A link to this deck is bit.ly/2NPZTWE](https://reader034.vdocument.in/reader034/viewer/2022042222/5ec939f5a76a033f091c5acd/html5/thumbnails/18.jpg)
18
![Page 19: YAML is Optional · 2019-12-20 · YAML is Optional Exploring an App Developer's Kubernetes Options A link to this deck is bit.ly/2NPZTWE](https://reader034.vdocument.in/reader034/viewer/2022042222/5ec939f5a76a033f091c5acd/html5/thumbnails/19.jpg)
19
![Page 20: YAML is Optional · 2019-12-20 · YAML is Optional Exploring an App Developer's Kubernetes Options A link to this deck is bit.ly/2NPZTWE](https://reader034.vdocument.in/reader034/viewer/2022042222/5ec939f5a76a033f091c5acd/html5/thumbnails/20.jpg)
20
© 2019 NetApp, Inc. All rights reserved. — NETAPP CONFIDENTIAL —
![Page 21: YAML is Optional · 2019-12-20 · YAML is Optional Exploring an App Developer's Kubernetes Options A link to this deck is bit.ly/2NPZTWE](https://reader034.vdocument.in/reader034/viewer/2022042222/5ec939f5a76a033f091c5acd/html5/thumbnails/21.jpg)
21
kubeletkube-proxycontainerDkubectlCoreDNSmetrics-serverPodDeploymentReplica Set
JobServiceIngressConfigMapNamespaceSecretServiceAccountLabelAnnotation
StatefulSetPersistentVolumePersistentVolumeClaimsNetworkPolicyAdmissionControllerCustomResourceDefinitionTaintsTolerationsRuntimeClass
![Page 22: YAML is Optional · 2019-12-20 · YAML is Optional Exploring an App Developer's Kubernetes Options A link to this deck is bit.ly/2NPZTWE](https://reader034.vdocument.in/reader034/viewer/2022042222/5ec939f5a76a033f091c5acd/html5/thumbnails/22.jpg)
22
© 2019 NetApp, Inc. All rights reserved. — NETAPP CONFIDENTIAL —
Space Shuttle Design
![Page 23: YAML is Optional · 2019-12-20 · YAML is Optional Exploring an App Developer's Kubernetes Options A link to this deck is bit.ly/2NPZTWE](https://reader034.vdocument.in/reader034/viewer/2022042222/5ec939f5a76a033f091c5acd/html5/thumbnails/23.jpg)
23
© 2019 NetApp, Inc. All rights reserved. — NETAPP CONFIDENTIAL —
Human Centered Design
![Page 24: YAML is Optional · 2019-12-20 · YAML is Optional Exploring an App Developer's Kubernetes Options A link to this deck is bit.ly/2NPZTWE](https://reader034.vdocument.in/reader034/viewer/2022042222/5ec939f5a76a033f091c5acd/html5/thumbnails/24.jpg)
24
© 2019 NetApp, Inc. All rights reserved. — NETAPP CONFIDENTIAL — 24
© 2019 NetApp, Inc. All rights reserved. — NETAPP CONFIDENTIAL —
Part 3
Developers, Developers, Developers
![Page 25: YAML is Optional · 2019-12-20 · YAML is Optional Exploring an App Developer's Kubernetes Options A link to this deck is bit.ly/2NPZTWE](https://reader034.vdocument.in/reader034/viewer/2022042222/5ec939f5a76a033f091c5acd/html5/thumbnails/25.jpg)
DockerfilesDev env setupIterative dev loopCI workflowDebugging toolsContainer patternsK8s learning curveYAML avoidance
25
![Page 26: YAML is Optional · 2019-12-20 · YAML is Optional Exploring an App Developer's Kubernetes Options A link to this deck is bit.ly/2NPZTWE](https://reader034.vdocument.in/reader034/viewer/2022042222/5ec939f5a76a033f091c5acd/html5/thumbnails/26.jpg)
DockerfilesDev env setupIterative dev loopCI workflowDebugging toolsContainer patternsK8s learning curveYAML avoidance
26
V12.13.0
VS
![Page 27: YAML is Optional · 2019-12-20 · YAML is Optional Exploring an App Developer's Kubernetes Options A link to this deck is bit.ly/2NPZTWE](https://reader034.vdocument.in/reader034/viewer/2022042222/5ec939f5a76a033f091c5acd/html5/thumbnails/27.jpg)
YAML is optional
27
YAML sucks less
![Page 28: YAML is Optional · 2019-12-20 · YAML is Optional Exploring an App Developer's Kubernetes Options A link to this deck is bit.ly/2NPZTWE](https://reader034.vdocument.in/reader034/viewer/2022042222/5ec939f5a76a033f091c5acd/html5/thumbnails/28.jpg)
28
© 2019 NetApp, Inc. All rights reserved. — NETAPP CONFIDENTIAL — 28
© 2019 NetApp, Inc. All rights reserved. — NETAPP CONFIDENTIAL —
Part 4
Ksonnet
Kustomize
Whatever, just use
sed
![Page 29: YAML is Optional · 2019-12-20 · YAML is Optional Exploring an App Developer's Kubernetes Options A link to this deck is bit.ly/2NPZTWE](https://reader034.vdocument.in/reader034/viewer/2022042222/5ec939f5a76a033f091c5acd/html5/thumbnails/29.jpg)
Brigade
29
![Page 30: YAML is Optional · 2019-12-20 · YAML is Optional Exploring an App Developer's Kubernetes Options A link to this deck is bit.ly/2NPZTWE](https://reader034.vdocument.in/reader034/viewer/2022042222/5ec939f5a76a033f091c5acd/html5/thumbnails/30.jpg)
30
© 2019 NetApp, Inc. All rights reserved. — NETAPP CONFIDENTIAL —
![Page 31: YAML is Optional · 2019-12-20 · YAML is Optional Exploring an App Developer's Kubernetes Options A link to this deck is bit.ly/2NPZTWE](https://reader034.vdocument.in/reader034/viewer/2022042222/5ec939f5a76a033f091c5acd/html5/thumbnails/31.jpg)
BrigadeSolves: integrating CI deeper with Kubernetes, and opens the door to `git push` workflows
31
![Page 32: YAML is Optional · 2019-12-20 · YAML is Optional Exploring an App Developer's Kubernetes Options A link to this deck is bit.ly/2NPZTWE](https://reader034.vdocument.in/reader034/viewer/2022042222/5ec939f5a76a033f091c5acd/html5/thumbnails/32.jpg)
Metaparticle
32
![Page 33: YAML is Optional · 2019-12-20 · YAML is Optional Exploring an App Developer's Kubernetes Options A link to this deck is bit.ly/2NPZTWE](https://reader034.vdocument.in/reader034/viewer/2022042222/5ec939f5a76a033f091c5acd/html5/thumbnails/33.jpg)
33
© 2019 NetApp, Inc. All rights reserved. — NETAPP CONFIDENTIAL —
...@containerize( 'docker.io/your-docker-user-goes-here', options={ 'replicas': 4, 'executor': 'metaparticle', 'ports': [8080], 'name': 'my-image', 'publish': True })...
![Page 34: YAML is Optional · 2019-12-20 · YAML is Optional Exploring an App Developer's Kubernetes Options A link to this deck is bit.ly/2NPZTWE](https://reader034.vdocument.in/reader034/viewer/2022042222/5ec939f5a76a033f091c5acd/html5/thumbnails/34.jpg)
34
© 2019 NetApp, Inc. All rights reserved. — NETAPP CONFIDENTIAL —
![Page 35: YAML is Optional · 2019-12-20 · YAML is Optional Exploring an App Developer's Kubernetes Options A link to this deck is bit.ly/2NPZTWE](https://reader034.vdocument.in/reader034/viewer/2022042222/5ec939f5a76a033f091c5acd/html5/thumbnails/35.jpg)
MetaparticleSolves: the need to learn Dockerfile and k8s YAML formats, lowering the learning curve.
35
![Page 36: YAML is Optional · 2019-12-20 · YAML is Optional Exploring an App Developer's Kubernetes Options A link to this deck is bit.ly/2NPZTWE](https://reader034.vdocument.in/reader034/viewer/2022042222/5ec939f5a76a033f091c5acd/html5/thumbnails/36.jpg)
Isopod
36
![Page 37: YAML is Optional · 2019-12-20 · YAML is Optional Exploring an App Developer's Kubernetes Options A link to this deck is bit.ly/2NPZTWE](https://reader034.vdocument.in/reader034/viewer/2022042222/5ec939f5a76a033f091c5acd/html5/thumbnails/37.jpg)
37
© 2019 NetApp, Inc. All rights reserved. — NETAPP CONFIDENTIAL —
CLUSTERS = [ onprem(env="dev", cluster="minikube"), gke( env="prod", cluster="paas-prod", location="us-west1", project="cruise-paas-prod", ),]
def clusters(ctx): if ctx.cluster != None: return [c for c in CLUSTERS if c.cluster == ctx.cluster] elif ctx.env != None: return [c for c in CLUSTERS if c.env == ctx.env] return CLUSTERS
def addons(ctx) return [ addon("ingress", "configs/ingress.ipd", ctx), ]
![Page 38: YAML is Optional · 2019-12-20 · YAML is Optional Exploring an App Developer's Kubernetes Options A link to this deck is bit.ly/2NPZTWE](https://reader034.vdocument.in/reader034/viewer/2022042222/5ec939f5a76a033f091c5acd/html5/thumbnails/38.jpg)
IsopodSolves: Configs are an important part of code, and need testing. A single language used for Dockerfiles, k8s resources, and pushing code.
38
![Page 39: YAML is Optional · 2019-12-20 · YAML is Optional Exploring an App Developer's Kubernetes Options A link to this deck is bit.ly/2NPZTWE](https://reader034.vdocument.in/reader034/viewer/2022042222/5ec939f5a76a033f091c5acd/html5/thumbnails/39.jpg)
CNAB
39
![Page 40: YAML is Optional · 2019-12-20 · YAML is Optional Exploring an App Developer's Kubernetes Options A link to this deck is bit.ly/2NPZTWE](https://reader034.vdocument.in/reader034/viewer/2022042222/5ec939f5a76a033f091c5acd/html5/thumbnails/40.jpg)
CNAB
40
© 2019 NetApp, Inc. All rights reserved. — NETAPP CONFIDENTIAL —
![Page 41: YAML is Optional · 2019-12-20 · YAML is Optional Exploring an App Developer's Kubernetes Options A link to this deck is bit.ly/2NPZTWE](https://reader034.vdocument.in/reader034/viewer/2022042222/5ec939f5a76a033f091c5acd/html5/thumbnails/41.jpg)
41
© 2019 NetApp, Inc. All rights reserved. — NETAPP CONFIDENTIAL —
![Page 42: YAML is Optional · 2019-12-20 · YAML is Optional Exploring an App Developer's Kubernetes Options A link to this deck is bit.ly/2NPZTWE](https://reader034.vdocument.in/reader034/viewer/2022042222/5ec939f5a76a033f091c5acd/html5/thumbnails/42.jpg)
42
© 2019 NetApp, Inc. All rights reserved. — NETAPP CONFIDENTIAL —
![Page 43: YAML is Optional · 2019-12-20 · YAML is Optional Exploring an App Developer's Kubernetes Options A link to this deck is bit.ly/2NPZTWE](https://reader034.vdocument.in/reader034/viewer/2022042222/5ec939f5a76a033f091c5acd/html5/thumbnails/43.jpg)
43
© 2019 NetApp, Inc. All rights reserved. — NETAPP CONFIDENTIAL —
![Page 44: YAML is Optional · 2019-12-20 · YAML is Optional Exploring an App Developer's Kubernetes Options A link to this deck is bit.ly/2NPZTWE](https://reader034.vdocument.in/reader034/viewer/2022042222/5ec939f5a76a033f091c5acd/html5/thumbnails/44.jpg)
CNABSolves: how to organize containers into a logical app in a platform and vendor neutral way.
44
![Page 45: YAML is Optional · 2019-12-20 · YAML is Optional Exploring an App Developer's Kubernetes Options A link to this deck is bit.ly/2NPZTWE](https://reader034.vdocument.in/reader034/viewer/2022042222/5ec939f5a76a033f091c5acd/html5/thumbnails/45.jpg)
OAM implemented as Rudr
45
![Page 46: YAML is Optional · 2019-12-20 · YAML is Optional Exploring an App Developer's Kubernetes Options A link to this deck is bit.ly/2NPZTWE](https://reader034.vdocument.in/reader034/viewer/2022042222/5ec939f5a76a033f091c5acd/html5/thumbnails/46.jpg)
46
![Page 47: YAML is Optional · 2019-12-20 · YAML is Optional Exploring an App Developer's Kubernetes Options A link to this deck is bit.ly/2NPZTWE](https://reader034.vdocument.in/reader034/viewer/2022042222/5ec939f5a76a033f091c5acd/html5/thumbnails/47.jpg)
47
![Page 48: YAML is Optional · 2019-12-20 · YAML is Optional Exploring an App Developer's Kubernetes Options A link to this deck is bit.ly/2NPZTWE](https://reader034.vdocument.in/reader034/viewer/2022042222/5ec939f5a76a033f091c5acd/html5/thumbnails/48.jpg)
48
© 2019 NetApp, Inc. All rights reserved. — NETAPP CONFIDENTIAL —
apiVersion: core.oam.dev/v1alpha1kind: ComponentSchematicmetadata: name: nginx-replicatedspec: workloadType: core.oam.dev/v1alpha1.Server osType: linux arch: amd64 containers: - name: server image: nginx:latest config: - name: "/etc/access/default_user.txt" - value: "admin" ports: - name: http containerPort: 80 protocol: TCP parameters: - name: poet type: string default: Yeats
![Page 49: YAML is Optional · 2019-12-20 · YAML is Optional Exploring an App Developer's Kubernetes Options A link to this deck is bit.ly/2NPZTWE](https://reader034.vdocument.in/reader034/viewer/2022042222/5ec939f5a76a033f091c5acd/html5/thumbnails/49.jpg)
OAM implemented as RudrSolves: Conway’s Law. The communication structure of your org can be reflected in YAML to improve collaboration between dev and ops roles.
49
![Page 50: YAML is Optional · 2019-12-20 · YAML is Optional Exploring an App Developer's Kubernetes Options A link to this deck is bit.ly/2NPZTWE](https://reader034.vdocument.in/reader034/viewer/2022042222/5ec939f5a76a033f091c5acd/html5/thumbnails/50.jpg)
Buildpacks
50
![Page 51: YAML is Optional · 2019-12-20 · YAML is Optional Exploring an App Developer's Kubernetes Options A link to this deck is bit.ly/2NPZTWE](https://reader034.vdocument.in/reader034/viewer/2022042222/5ec939f5a76a033f091c5acd/html5/thumbnails/51.jpg)
51
© 2019 NetApp, Inc. All rights reserved. — NETAPP CONFIDENTIAL —
{ "name": "Start on Heroku: Node.js", "description": "A barebones Node.js app using Express 4", "repository": "https://github.com/heroku/node-js-getting-started", "logo": "https://cdn.rawgit.com/heroku/node-js-getting-started/master/public/node.svg", "keywords": ["node", "express", "heroku"], "image": "heroku/nodejs"}
![Page 52: YAML is Optional · 2019-12-20 · YAML is Optional Exploring an App Developer's Kubernetes Options A link to this deck is bit.ly/2NPZTWE](https://reader034.vdocument.in/reader034/viewer/2022042222/5ec939f5a76a033f091c5acd/html5/thumbnails/52.jpg)
BuildpacksSolves: the need to learn about containers, or kubernetes resources. Git as the source of truth for your platform.
52
![Page 53: YAML is Optional · 2019-12-20 · YAML is Optional Exploring an App Developer's Kubernetes Options A link to this deck is bit.ly/2NPZTWE](https://reader034.vdocument.in/reader034/viewer/2022042222/5ec939f5a76a033f091c5acd/html5/thumbnails/53.jpg)
Tilt
53
![Page 54: YAML is Optional · 2019-12-20 · YAML is Optional Exploring an App Developer's Kubernetes Options A link to this deck is bit.ly/2NPZTWE](https://reader034.vdocument.in/reader034/viewer/2022042222/5ec939f5a76a033f091c5acd/html5/thumbnails/54.jpg)
54
© 2019 NetApp, Inc. All rights reserved. — NETAPP CONFIDENTIAL —
# tiltdemo1k8s_yaml('deployments/demoserver1.yaml')dm1_img_name = 'gcr.io/windmill-test-containers/tiltdemo/demoserver1'docker_build(dm1_img_name, '.', dockerfile='Dockerfile.server1', live_update=[ sync('cmd/demoserver1', '/go/src/github.com/windmilleng/tiltdemo/cmd/demoserver1'), run('go install github.com/windmilleng/tiltdemo/cmd/demoserver1'), restart_container(), ])
# tiltdemo2k8s_yaml('deployments/demoserver2.yaml')dm1_img_name = 'gcr.io/windmill-test-containers/tiltdemo/demoserver2'docker_build(dm1_img_name, '.', dockerfile='Dockerfile.server2', live_update=[ sync('cmd/demoserver2', '/go/src/github.com/windmilleng/tiltdemo/cmd/demoserver2'), run('go install github.com/windmilleng/tiltdemo/cmd/demoserver2'), restart_container(), ])
![Page 55: YAML is Optional · 2019-12-20 · YAML is Optional Exploring an App Developer's Kubernetes Options A link to this deck is bit.ly/2NPZTWE](https://reader034.vdocument.in/reader034/viewer/2022042222/5ec939f5a76a033f091c5acd/html5/thumbnails/55.jpg)
TiltSolves: the need for fast feedback loops as devs are writing new code, or debugging existing code.
55
![Page 56: YAML is Optional · 2019-12-20 · YAML is Optional Exploring an App Developer's Kubernetes Options A link to this deck is bit.ly/2NPZTWE](https://reader034.vdocument.in/reader034/viewer/2022042222/5ec939f5a76a033f091c5acd/html5/thumbnails/56.jpg)
Admission Controller
56
![Page 57: YAML is Optional · 2019-12-20 · YAML is Optional Exploring an App Developer's Kubernetes Options A link to this deck is bit.ly/2NPZTWE](https://reader034.vdocument.in/reader034/viewer/2022042222/5ec939f5a76a033f091c5acd/html5/thumbnails/57.jpg)
57
![Page 58: YAML is Optional · 2019-12-20 · YAML is Optional Exploring an App Developer's Kubernetes Options A link to this deck is bit.ly/2NPZTWE](https://reader034.vdocument.in/reader034/viewer/2022042222/5ec939f5a76a033f091c5acd/html5/thumbnails/58.jpg)
Admission ControllersSolves: reduces the number of fields devs have to remember to fill in on their YAML files.
58
![Page 59: YAML is Optional · 2019-12-20 · YAML is Optional Exploring an App Developer's Kubernetes Options A link to this deck is bit.ly/2NPZTWE](https://reader034.vdocument.in/reader034/viewer/2022042222/5ec939f5a76a033f091c5acd/html5/thumbnails/59.jpg)
Helm
59
![Page 60: YAML is Optional · 2019-12-20 · YAML is Optional Exploring an App Developer's Kubernetes Options A link to this deck is bit.ly/2NPZTWE](https://reader034.vdocument.in/reader034/viewer/2022042222/5ec939f5a76a033f091c5acd/html5/thumbnails/60.jpg)
60
© 2019 NetApp, Inc. All rights reserved. — NETAPP CONFIDENTIAL —
apiVersion: v1kind: ReplicationControllermetadata: name: deis-database namespace: deis labels: app.kubernetes.io/managed-by: deisspec: replicas: 1 selector: app.kubernetes.io/name: deis-database template: metadata: labels: app.kubernetes.io/name: deis-database spec: serviceAccount: deis-database containers: - name: deis-database image: {{.Values.imageRegistry}}/postgres:{{.Values.dockerTag}} imagePullPolicy: {{.Values.pullPolicy}} ports: - containerPort: 5432 env: - name: DATABASE_STORAGE value: {{default "minio" .Values.storage}}
![Page 61: YAML is Optional · 2019-12-20 · YAML is Optional Exploring an App Developer's Kubernetes Options A link to this deck is bit.ly/2NPZTWE](https://reader034.vdocument.in/reader034/viewer/2022042222/5ec939f5a76a033f091c5acd/html5/thumbnails/61.jpg)
HelmSolves: providing a menu of options for devs to choose from, per org. Basic lifecycle.
61
![Page 62: YAML is Optional · 2019-12-20 · YAML is Optional Exploring an App Developer's Kubernetes Options A link to this deck is bit.ly/2NPZTWE](https://reader034.vdocument.in/reader034/viewer/2022042222/5ec939f5a76a033f091c5acd/html5/thumbnails/62.jpg)
Ksonnet
62
![Page 63: YAML is Optional · 2019-12-20 · YAML is Optional Exploring an App Developer's Kubernetes Options A link to this deck is bit.ly/2NPZTWE](https://reader034.vdocument.in/reader034/viewer/2022042222/5ec939f5a76a033f091c5acd/html5/thumbnails/63.jpg)
63
© 2019 NetApp, Inc. All rights reserved. — NETAPP CONFIDENTIAL —
![Page 64: YAML is Optional · 2019-12-20 · YAML is Optional Exploring an App Developer's Kubernetes Options A link to this deck is bit.ly/2NPZTWE](https://reader034.vdocument.in/reader034/viewer/2022042222/5ec939f5a76a033f091c5acd/html5/thumbnails/64.jpg)
64
© 2019 NetApp, Inc. All rights reserved. — NETAPP CONFIDENTIAL —
![Page 65: YAML is Optional · 2019-12-20 · YAML is Optional Exploring an App Developer's Kubernetes Options A link to this deck is bit.ly/2NPZTWE](https://reader034.vdocument.in/reader034/viewer/2022042222/5ec939f5a76a033f091c5acd/html5/thumbnails/65.jpg)
KSonnet
65
![Page 66: YAML is Optional · 2019-12-20 · YAML is Optional Exploring an App Developer's Kubernetes Options A link to this deck is bit.ly/2NPZTWE](https://reader034.vdocument.in/reader034/viewer/2022042222/5ec939f5a76a033f091c5acd/html5/thumbnails/66.jpg)
KSonnet
66
© 2019 NetApp, Inc. All rights reserved. — NETAPP CONFIDENTIAL —
“I want easy things to be easy,And hard things to be possible”
![Page 67: YAML is Optional · 2019-12-20 · YAML is Optional Exploring an App Developer's Kubernetes Options A link to this deck is bit.ly/2NPZTWE](https://reader034.vdocument.in/reader034/viewer/2022042222/5ec939f5a76a033f091c5acd/html5/thumbnails/67.jpg)
KsonnetSolves: how to manage multi-cluster, multi-env, multiplicatively complex config scenarios. Keep your configs DRY.
67
![Page 68: YAML is Optional · 2019-12-20 · YAML is Optional Exploring an App Developer's Kubernetes Options A link to this deck is bit.ly/2NPZTWE](https://reader034.vdocument.in/reader034/viewer/2022042222/5ec939f5a76a033f091c5acd/html5/thumbnails/68.jpg)
Kustomize
68
![Page 69: YAML is Optional · 2019-12-20 · YAML is Optional Exploring an App Developer's Kubernetes Options A link to this deck is bit.ly/2NPZTWE](https://reader034.vdocument.in/reader034/viewer/2022042222/5ec939f5a76a033f091c5acd/html5/thumbnails/69.jpg)
69
© 2019 NetApp, Inc. All rights reserved. — NETAPP CONFIDENTIAL —
![Page 70: YAML is Optional · 2019-12-20 · YAML is Optional Exploring an App Developer's Kubernetes Options A link to this deck is bit.ly/2NPZTWE](https://reader034.vdocument.in/reader034/viewer/2022042222/5ec939f5a76a033f091c5acd/html5/thumbnails/70.jpg)
70
© 2019 NetApp, Inc. All rights reserved. — NETAPP CONFIDENTIAL —
# Create a directory to hold the basemkdir base# Create a base/deployment.yamlcat <<EOF > base/deployment.yamlapiVersion: apps/v1kind: Deploymentmetadata: name: my-nginxspec: selector: matchLabels: run: my-nginx replicas: 2 template: metadata: labels: run: my-nginx spec: containers: - name: my-nginx image: nginxEOF
# Create a base/service.yaml filecat <<EOF > base/service.yamlapiVersion: v1kind: Servicemetadata: name: my-nginx labels: run: my-nginxspec: ports: - port: 80 protocol: TCP selector: run: my-nginxEOF# Create a base/kustomization.yamlcat <<EOF > base/kustomization.yamlresources:- deployment.yaml- service.yamlEOF
![Page 71: YAML is Optional · 2019-12-20 · YAML is Optional Exploring an App Developer's Kubernetes Options A link to this deck is bit.ly/2NPZTWE](https://reader034.vdocument.in/reader034/viewer/2022042222/5ec939f5a76a033f091c5acd/html5/thumbnails/71.jpg)
71
© 2019 NetApp, Inc. All rights reserved. — NETAPP CONFIDENTIAL —
mkdir devcat <<EOF > dev/kustomization.yamlbases:- ../basenamePrefix: dev-EOF
mkdir prodcat <<EOF > prod/kustomization.yamlbases:- ../basenamePrefix: prod-EOF
![Page 72: YAML is Optional · 2019-12-20 · YAML is Optional Exploring an App Developer's Kubernetes Options A link to this deck is bit.ly/2NPZTWE](https://reader034.vdocument.in/reader034/viewer/2022042222/5ec939f5a76a033f091c5acd/html5/thumbnails/72.jpg)
72
© 2019 NetApp, Inc. All rights reserved. — NETAPP CONFIDENTIAL —
![Page 73: YAML is Optional · 2019-12-20 · YAML is Optional Exploring an App Developer's Kubernetes Options A link to this deck is bit.ly/2NPZTWE](https://reader034.vdocument.in/reader034/viewer/2022042222/5ec939f5a76a033f091c5acd/html5/thumbnails/73.jpg)
73
© 2019 NetApp, Inc. All rights reserved. — NETAPP CONFIDENTIAL —
![Page 74: YAML is Optional · 2019-12-20 · YAML is Optional Exploring an App Developer's Kubernetes Options A link to this deck is bit.ly/2NPZTWE](https://reader034.vdocument.in/reader034/viewer/2022042222/5ec939f5a76a033f091c5acd/html5/thumbnails/74.jpg)
KustomizeSolves: how to manage YAML complexity while still remaining Declarative. Keep your configs DRY.
74
![Page 75: YAML is Optional · 2019-12-20 · YAML is Optional Exploring an App Developer's Kubernetes Options A link to this deck is bit.ly/2NPZTWE](https://reader034.vdocument.in/reader034/viewer/2022042222/5ec939f5a76a033f091c5acd/html5/thumbnails/75.jpg)
75
© 2019 NetApp, Inc. All rights reserved. — NETAPP CONFIDENTIAL — 75
© 2019 NetApp, Inc. All rights reserved. — NETAPP CONFIDENTIAL —
Part 5
Why is it all so
complex?
Shut up, Jeff
![Page 76: YAML is Optional · 2019-12-20 · YAML is Optional Exploring an App Developer's Kubernetes Options A link to this deck is bit.ly/2NPZTWE](https://reader034.vdocument.in/reader034/viewer/2022042222/5ec939f5a76a033f091c5acd/html5/thumbnails/76.jpg)
DEPLOY WITH A SIMPLEgit push nks master
![Page 77: YAML is Optional · 2019-12-20 · YAML is Optional Exploring an App Developer's Kubernetes Options A link to this deck is bit.ly/2NPZTWE](https://reader034.vdocument.in/reader034/viewer/2022042222/5ec939f5a76a033f091c5acd/html5/thumbnails/77.jpg)
Summary
77
1. Kubernetes is a “space shuttle” design2. There are a plethora of dev-focused tools3. No one tool does it all4. Some tools reduce the amount of YAML5. Others obviate YAML altogether6. To make k8s approachable to devs we
need to combine multiple approaches
![Page 78: YAML is Optional · 2019-12-20 · YAML is Optional Exploring an App Developer's Kubernetes Options A link to this deck is bit.ly/2NPZTWE](https://reader034.vdocument.in/reader034/viewer/2022042222/5ec939f5a76a033f091c5acd/html5/thumbnails/78.jpg)
YAML is Optional Exploring an App Developer's Kubernetes Options
A link to this deck is bit.ly/2NPZTWE