SlideShare a Scribd company logo
Kubernetes is
a platform for
______
Cards Against Kubernetes
@pczarkowski
Kubernetes is
a platform for
______
Cards Against Kubernetes
@pczarkowski
Kubernetes is
a platform for
______
Cards Against Kubernetes
Five Dollar
Footlongs ™.
Cards Against Kubernetes
@pczarkowski
Kubernetes is
a platform for
______
Cards Against Kubernetes Cards Against Kubernetes
@pczarkowski
Kubernetes is
a platform for
______
Cards Against Kubernetes
Spring
Cloud
Kubernetes
Cards Against Kubernetes
@pczarkowski
Kubernetes is
a platform for
______
Cards Against Kubernetes
Building
Platforms.
Cards Against Kubernetes
@pczarkowski
Kubernetes is
a platform for
______
Cards Against Kubernetes
Building
Platforms.
Cards Against Kubernetes
@pczarkowski
Kubernetes is
a platform for
______
Cards Against Kubernetes
Building
Platforms.
Cards Against Kubernetes
@pczarkowski
Kubernetes is
a platform for
______
Cards Against Kubernetes
Automated
container
deployment,
scaling, and
management.
Cards Against Kubernetes
@pczarkowski
Kubernetes is
a platform for
______
Cards Against Kubernetes
Automated
operations.
Cards Against Kubernetes
@pczarkowski
Kubernetes is
a platform for
______
Cards Against Kubernetes
Automated
operations.
Cards Against Kubernetes
devops.
Cards Against Kubernetes
Site
ReliabilityEngineering.
Cards Against Kubernetes
@pczarkowski
“Every line of code is a piece of
Technical Debt”
Kubernetes is
a platform for
______
Cards Against Kubernetes
Reducing
Infrastructure
Code
Cards Against Kubernetes
@pczarkowski
Kubernetes is
a platform for
______
Cards Against Kubernetes
Reducing
Infrastructure
Code
Kards Against Humanity
Reducing
Toil
Cards Against Kubernetes
@pczarkowski
Kubernetes is
a platform for
______
Cards Against Kubernetes
Reducing
Infrastructure
Code
Kards Against Humanity
Reducing
Toil
Running
Applications
Cards Against Kubernetes
@pczarkowski
Cover w/ Image
Kubernetes is a platform for
■ Running Applications
■ Reducing [Infra] Code
■ Reducing Toil
@pczarkowski
APP
APP
APP
APP
Kubernetes is a platform for
■ Continuous Integration
■ Continuous Delivery
@pczarkowski
@pczarkowski
Using Spinnaker to Create a Development Workflow on Kubernetes - Paul Czarkowski
Pivotal Container Service
Embedded OS
(Windows & Linux)
NSX-T
CPI (15 methods)
v1
v2
v3
...
CVEs
Product Updates
Java | .NET | NodeJS
Pivotal Application
Service (PAS)
Application Code & Frameworks
Buildpacks | Spring Boot | Spring Cloud |
Steeltoe
Elastic | Packaged Software | Spark
Pivotal Container
Service (PKS)
>cf push >kubectl run
YOU build the containerWE build the container
vSphere
Azure &
Azure StackGoogle CloudAWSOpenstack
Pivotal
Network
“3Rs”
Github
Concourse
Concourse
Pivotal Services
Marketplace
Pivotal and
Partner Products
Continuous
delivery
Public Cloud
Services
Customer
Managed
Services
OpenServiceBrokerAPI
Repair
— CVEs
Repave Rotate
— Credhub
@pczarkowski
BOSH
Reliable and consistent operational experience for any cloud.
BOSH
GCP
Service
Broker
Harbor
NSX-T
Kubernetes
K8s Cluster
K8s Cluster
K8s Cluster
PKS Control Plane
Use the PKS CLI and API to
create, operate, and scale your
clusters.
VMware GCP Azure Openstack AWS
PKSControlPlane
GCP Service Broker
Bring Google Cloud Platform services to
your containers. Extend your workloads
with machine learning, AI, and data
services from Google.
Built with open-source
Kubernetes
Constant compatibility with the
latest stable release of Google
Kubernetes Engine—no
proprietary extensions.
Harbor
An enterprise-class container registry.
Includes vulnerability scanning, identity
management, and more.
NSX-T
Network management, security, and
load balancing out-of-the-box with
VMware NSX-T. Multi-cloud,
multi-hypervisor.
Enterprise-Grade Kubernetes
@pczarkowski
Using Spinnaker to Create a Development Workflow on Kubernetes - Paul Czarkowski
App / Container Deployment, Services & Routing
cf push
App
myapp.mydomain.net
Pivotal Cloud Foundry
Elastic Runtime
Pivotal Container
Service
kubectl run
????
????
Using Spinnaker to Create a Development Workflow on Kubernetes - Paul Czarkowski
cf push
App
myapp.mydomain.net
Pivotal Cloud Foundry
Elastic Runtime
Pivotal Container
Service
docker build
docker push
kubectl run
kubectl expose
????
????
App / Container Deployment, Services & Routing
Using Spinnaker to Create a Development Workflow on Kubernetes - Paul Czarkowski
Kubernetes
You use Kubernetes API objects to
describe your desired state.
Using Spinnaker to Create a Development Workflow on Kubernetes - Paul Czarkowski
Vs
@pczarkowski
Vs
@pczarkowski
API
Users
Storage Compute NetworkDatabase AccessArtifacts
@pczarkowski
API
Users
Systems
Admin
Network
Engineer
SecurityDBA QA
Storage
Admin
@pczarkowski
@pczarkowski
API
Users
Storage Compute NetworkDatabase AccessArtifacts
@pczarkowski
API Server
Users
Control Plane
Data Plane
@pczarkowski
API Server
Users
Control Plane
Data Plane
etcd
@pczarkowski
API
Server
Users
Control Plane
Data Plane
etcd
Cloud Ctrl
Manager
Kubelet
kube-proxy
docker
@pczarkowski
API
Server
Users
Control Plane
Data Plane
etcd
Cloud Ctrl
Manager
Kubelet
kube-proxy
docker
Scheduler
@pczarkowski
API
Server
Users
Control Plane
Data Plane
etcd
Cloud Ctrl
Manager
Kubelet
kube-proxy
docker
Scheduler
Controller
Manager
@pczarkowski
Worker
Master
API
Server
Users
Control Plane
Data Plane
etcd
Cloud Ctrl
Manager
Kubelet
kube-proxy
docker
Scheduler
Controller
Manager
@pczarkowski
Master
Master
Master
API
Server
Users
Control Plane
Data Plane
etcd
Cloud Ctrl
Manager
Worker
Kubelet
kube-proxy
docker
Scheduler
Controller
Manager
Worker
Kubelet
kube-proxy
docker
Worker
Kubelet
kube-proxy
docker
@pczarkowski
Master
Master
Master
API
Server
Users
Control Plane
Data Plane
etcd
Cloud Ctrl
Manager
Worker
Kubelet
kube-proxy
docker
Scheduler
Controller
Manager
Worker
Kubelet
kube-proxy
docker
Worker
Kubelet
kube-proxy
docker
Flannel Flannel Flannel
@pczarkowski
Desired State
Actual State
@pczarkowski
Unix Philosophy:
Do one thing. Do it well.
@pczarkowski
$ kubectl
Imperative
$ kubectl run hello 
--image=paulczar/go-hello
$ kubectl scale hello 
--replicas=3
$ kubectl create service clusterip 
hello --tcp=80:80
@pczarkowski
Declarative
$ kubectl apply -f hello.yaml
@pczarkowski
Declarative
Vs
Imperative
@pczarkowski
manifests
apiVersion: v1
kind: Pod
metadata:
name: hello
spec:
containers:
- image: paulczar/go-hello
imagePullPolicy: Always
name: hello
@pczarkowski
resources
● Pods
● Services
● Volumes
@pczarkowski
POD
one or more containers that share
a network and storage
the minimum scalable unit
of your application
MASTER
Node 1 Node 2 Node 3 Node 4
hello
kubelet kubelet kubelet kubelet
Scheduler
Pod
Name: hello
Image: hello1
@pczarkowski
MASTER
Node 1 Node 2 Node 3 Node 4
hello
kubelet kubelet kubelet kubelet
Scheduler
hello
Pod
Name: hello
Image: hello1
@pczarkowski
MASTER
Node 1 Node 2 Node 3 Node 4
hello
kubelet kubelet kubelet kubelet
Scheduler
Pod
Name: hello
Image: hello1
@pczarkowski
Replica Set
MASTER
Node 1 Node 2 Node 3 Node 4
hello-a
kubelet kubelet kubelet kubelet
Scheduler
Controller
Manager
Replica Set
Name: hello
Image: hello1
Size: 3
hello-ghello-s
Pod
Name: hello-a
Image: hello1
Pod
Name: hello-b
Image: hello1
Pod
Name: hello-c
Image: hello1
@pczarkowski
MASTER
Node 1 Node 2 Node 3 Node 4
hello-a
kubelet kubelet kubelet kubelet
Scheduler
Controller
Manager
Replica Set
Name: hello
Image: hello1
Size: 3
hello-ghello-s hello-d
Pod
Name: hello-a
Image: hello1
Pod
Name: hello-b
Image: hello1
Pod
Name: hello-d
Image: hello1
@pczarkowski
MASTER
Node 1 Node 2 Node 3 Node 4
hello-a
kubelet kubelet kubelet kubelet
Scheduler
Controller
Manager
Replica Set
Name: hello
Image: hello1
Size: 5
hello-ghello-s hello-d
hello-t hello-z
Pod
Name: hello-a
Image: hello1
Pod
Name: hello-a
Image: hello1
Pod
Name: hello-a
Image: hello1
Pod
Name: hello-a
Image: hello1
Pod
Name: hello-a
Image: hello1
@pczarkowski
MASTER
Node 1 Node 2 Node 3 Node 4
kubelet kubelet kubelet kubelet
Scheduler
Controller
Manager
Replica Set
Name: hello
Image: hello1
Size: 0
@pczarkowski
Deployment
MASTER
Node 1 Node 2 Node 3 Node 4
hello-A-c
kubelet kubelet kubelet kubelet
Scheduler
Controller
Manager
Deployment
Name: hello
Image: hello1
Size: 3
hello-A-ghello-A-s
Replica Set
Name: hello-A
Image: hello1
Size: 3
@pczarkowski
MASTER
Node 1 Node 2 Node 3 Node 4
hello-A-c
kubelet kubelet kubelet kubelet
Scheduler
Controller
Manager
Deployment
Name: hello
Image: hello2
Size: 3
hello-A-ghello-A-s
Replica Set
Name: hello-A
Image: hello1
Size: 3
Replica Set
Name: hello-B
Image: hello2
Size: 3
hello-B-g
hello-B-r hello-B-c
@pczarkowski
MASTER
Node 1 Node 2 Node 3 Node 4
kubelet kubelet kubelet kubelet
Scheduler
Controller
Manager
Deployment
Name: hello
Image: hello2
Size: 3
Replica Set
Name: hello-A
Image: hello1
Size: 0
Replica Set
Name: hello-B
Image: hello2
Size: 3
hello-B-g
hello-B-r hello-B-c
@pczarkowski
StatefulSet
MASTER
Node 1 Node 2 Node 3 Node 4
hello-1
kubelet kubelet kubelet kubelet
Scheduler
Controller
Manager
StatefulSet
Name: db
Image: hello1
Size: 3
Pod
Name: hello-1
Image: hello1
@pczarkowski
MASTER
Node 1 Node 2 Node 3 Node 4
hello-1
kubelet kubelet kubelet kubelet
Scheduler
Controller
Manager
StatefulSet
Name: hello
Image: hello1
Size: 3
hello-2
Pod
Name: hello-1
Image: hello1
Pod
Name: hello-2
Image: hello1
@pczarkowski
MASTER
Node 1 Node 2 Node 3 Node 4
hello-1
kubelet kubelet kubelet kubelet
Scheduler
Controller
Manager
StatefulSet
Name: hello
Image: hello1
Size: 3
hello-3hello-2
Pod
Name: hello-1
Image: hello1
Pod
Name: hello-2
Image: hello1
Pod
Name: hello-3
Image: hello1
@pczarkowski
MASTER
Node 1 Node 2 Node 3 Node 4
db-1
kubelet kubelet kubelet kubelet
Scheduler
Controller
Manager
StatefulSet
Name: db
Image: cassandra
Size: 3
db-3db-2
Pod
Name: hello-a
Image:
Pod
Name: hello-b
Image:
Pod
Name: db-1
Image: ... vol vol vol
Pod
Name: hello-a
Image:
Pod
Name: hello-b
Image:
PVC
Name: db-1
Image: ...
@pczarkowski
$ kubectl
$ kubectl run hello 
--image=paulczar/go-hello
@pczarkowski
● kubectl run created a deployment “deployments.apps/hello”
NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE
deployment.apps/hello 1 1 1 1 1m
● The deployment created a replicaset “replicaset.apps/hello-64f6bf9dd4”
NAME DESIRED CURRENT READY AGE
replicaset.apps/hello-64f6bf9dd4 1 1 1 1m
● Which created a pod “pod/hello-64f6bf9dd4-tq5dq”
NAME READY STATUS RESTARTS AGE
pod/hello-64f6bf9dd4-tq5dq 1/1 Running 0 2s
@pczarkowski
$ kubectl scale --replicas=3 
deployment/hello
@pczarkowski
$ kubectl scale --replicas=3 deployment/hello
deployment.extensions/hello scaled
$ kubectl get all
NAME READY STATUS RESTARTS AGE
pod/hello-64f6bf9dd4-2bndq 1/1 Running 0 15m
pod/hello-64f6bf9dd4-4kq9l 0/1 ContainerCreating 0 2s
pod/hello-64f6bf9dd4-8lkcs 1/1 Running 0 5s
NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE
deployment.apps/hello 3 3 2 3 16m
NAME DESIRED CURRENT READY AGE
replicaset.apps/hello-64f6bf9dd4 3 3 2 16m
@pczarkowski
$ kubectl edit deployment hello
...
spec:
containers:
- env:
- name: MESSAGE
value: HELLO I LOVE YOU!!!!
image: paulczar/go-hello
imagePullPolicy: Always
name: hello
@pczarkowski
$ kubectl get all
NAME READY STATUS RESTARTS AGE
pod/hello-5c75b546c7-4lwnn 1/1 Running 0 1m
pod/hello-5c75b546c7-bwxxq 1/1 Running 0 1m
pod/hello-5c75b546c7-sl2pg 1/1 Running 0 1m
NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE
deployment.apps/hello 3 3 3 3 23m
NAME DESIRED CURRENT READY AGE
replicaset.apps/hello-5c75b546c7 3 3 3 1m
replicaset.apps/hello-64f6bf9dd4 0 0 0 23m
@pczarkowski
$ kubectl port-forward deployment/hello 8080
Forwarding from 127.0.0.1:8080 -> 8080
$ curl localhost:8080
<html><head><title>HELLO I LOVE YOU!!!!</title></head><body>HELLO I LOVE
YOU!!!!!</body></html>
@pczarkowski
Service
$ kubectl expose deployment 
hello --type=LoadBalancer 
--port 80 --target-port 8080
@pczarkowski
kubectl expose deployment hello
● creates a service with a ClusterIP that acts as an internal loadbalancer to all
pods in the “hello” deployment
--type=LoadBalancer
● Creates a NodePort
● Configures a LoadBalancer to access the pods via the NodePort
$ kubectl get services
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
hello LoadBalancer 10.39.248.123 35.184.17.129 80:30468/TCP 5m
$ curl 35.184.17.129
<html><head><title>HELLO I LOVE YOU!!!!</title></head><body>HELLO I LOVE
YOU!!!!!</body></html>
@pczarkowski
Service
track Pods based on metadata and provides
connectivity and service discovery (DNS, Env
variables) for them.
Type
ClusterIP (default) exposes service on a
cluster-internal IP.
Container
Container
Pod
app=bacon
Container
Container
Pod
app=bacon
Service
app=bacon 10.3.55.7
@pczarkowski
Service
track Pods based on metadata and provides
connectivity and service discovery (DNS, Env
variables) for them.
Type
NodePort extends ClusterIP to expose services on
each node’s IP via a static port.
Container
Container
Pod
app=bacon
Container
Container
Pod
app=bacon
Service
app=bacon 10.3.55.7
192.168.0.5:4530
K8s Worker K8s Worker
192.168.0.6:4530
@pczarkowski
Service
track Pods based on metadata and provides
connectivity and service discovery (DNS, Env
variables) for them.
Type
LoadBalancer extends NodePort to configure a cloud
provider’s load balancer using the
cloud-controller-manager.
Container
Container
Pod
app=bacon
Container
Container
Pod
app=bacon
Service
app=bacon 10.3.55.7
192.168.0.5:4530
K8s Worker K8s Worker
192.168.0.6:4530
Load Balancer
33.6.5.22:80
@pczarkowski
Ingress
a controller that manages an external entity to provide
load balancing, SSL termination and name-based
virtual hosting to services based on a set of rules.
Ingress
Service
app=bacon
https://example.com
Service
app=eggs
/bacon /eggs
@pczarkowski
Volume
Container
Container
Pod
Volume
Is [effectively] a Directory, possibly with data in it,
available to all containers in a Pod.
Usually Shares lifecycle of a Pod (Created when Pod
is created, destroyed when Pod is destroyed).
Persistent Volumes outlive Pods.
Can be mounted from local disk, or from a network
storage device such as a EBS volume, iscsi, NFS, etc.
@pczarkowski
Config Map / Secret
$ kubectl create configmap hello 
--from-file=index.html
@pczarkowski
kubectl create configmap hello --from-file=index.html
● creates a configmap called “hello” containing the contents index.html
$ kubectl get configmap hello -o yaml
apiVersion: v1
kind: ConfigMap
metadata:
name: hello
data:
index.html: "<html>n<head>nt<title>Hello to my
friends</title>n</head>n<body>ntHello
to my friendsn</body>n</html>nn"
@pczarkowski
kubectl create secret generic hello --from-file=index.html
● creates a secret called “hello” containing a base64 hash of contents index.html
$ kubectl get secret hello -o yaml
apiVersion: v1
kind: Secret
metadata:
name: hello
data:
index.html:
PGh0bWw+CjxoZWFkPgoJPHRpdGxlPkhlbGxvIHRvIG15IGZyaWVuZHM8L3RpdGxlPgo8L2hlYWQ+Cjxib2R5
PgoJSGVsbG8gdG8gbXkgZnJpZW5kcwo8L2JvZHk+CjwvaHRtbD4KCg==
@pczarkowski
Provides key-value pairs to be injected into a pod much like user-data is injected into a Virtual
Machine in the cloud.
Allows you to do last minute configuration of applications running on Kubernetes such as
setting a database host, or a admin password.
ConfigMaps store values as strings, Secrets store them as byte arrays (serialized as base64
encoded strings).
Secrets are [currently] not encrypted by default. This is likely to change.
Can be injected as files in a Volume, or as Environment Variables.
ConfigMaps/Secrets (user-data)
@pczarkowski
Helm
Helm is the best way to
find, share, and use
software built for Kubernetes
@pczarkowski
custom
load balancer
Chart.yaml
Values.yaml
templates/
ci
services
db
Discover & launch great
Kubernetes-ready apps
Search charts
231 charts ready to deploy
Wordpress, Jenkins, Kubeless...
Secure | https://hub.kubeapps.com
@pczarkowski
apiVersion: v1
kind: ConfigMap
metadata:
name: {{ .Chart.name }}-cm
data:
db: {{ .Value.db }}
apiVersion: apps/v1beta1
kind: Deployment
metadata:
name: {{ .Chart.name }}-app
labels:
app: {{ .Chart.name }}
...
...
spec:
containers:
- image: paulczar/hello
name: hello
volumeMounts:
- name: config
mountPath: /etc/hello
volumes:
- name: config
configMap:
name: {{ .Chart.name }}-cm
apiVersion: v1
kind: Service
metadata:
name: {{ .Chart.name }}-svc
labels:
app: {{ .Chart.name }}-world
spec:
ports:
- port: {{ .Value.port }}
protocol: TCP
targetPort: 8080
selector:
app: {{ .Chart.name }}-world
type: NodePort
@pczarkowski
$ helm install --name staging . 
--set db=’user:pass@staging.mysql/dbname’
$ helm install --name production . 
--set db=’user:pass@production.mysql/dbname’
@pczarkowski
Spinnaker
https://medium.com/netflix-techblog/announcing-ribbon-tying-the-netflix-mid
-tier-services-together-a89346910a62
https://giphy.com/gifs/frustrated-keyboard-g8GfH3i5F0hby
@pczarkowski
https://unsplash.com/photos/WHWYBmtn3_0
@pczarkowski
+
@pczarkowski
APP
APP
APP
APP
@pczarkowski
Cluster Management
● Server Group
● Cluster
● Applications
● Load Balancer
● Firewall
Pipelines
● Pipeline
● Stage
● Deployment Strategies
@pczarkowski
Multi-Cloud Inventory
● Server Group
● Cluster
● Applications
● Load Balancer
● Firewall
Actions and Reactions
● Pipeline
● Stage
● Deployment Strategies
@pczarkowski
@pczarkowski
Cluster Management
● Server Group
● Cluster
● Applications
● Load Balancer
● Firewall
Deployment Management
● Pipeline
● Stage
● Deployment Strategies
Deployment Strategies
Spinnaker
Cloud
API
App App App
@pczarkowski
@pczarkowski
Halyard
https://en.wikipedia.org/wiki/Halyard
@pczarkowski
Using Spinnaker to Create a Development Workflow on Kubernetes - Paul Czarkowski
Transforming How The World Builds Software
© Copyright 2018 Pivotal Software, Inc. All rights Reserved.@pczarkowski

More Related Content

PDF
Kubernetes Scheduler deep dive
PDF
Kubernetes
PDF
Kubelet with no Kubernetes Masters | DevNation Tech Talk
PDF
Building kubectl plugins with Quarkus | DevNation Tech Talk
PDF
Kube Your Enthusiasm - Tyler Britten
PDF
Spring Into Kubernetes DFW
PDF
Extending kubernetes with CustomResourceDefinitions
Kubernetes Scheduler deep dive
Kubernetes
Kubelet with no Kubernetes Masters | DevNation Tech Talk
Building kubectl plugins with Quarkus | DevNation Tech Talk
Kube Your Enthusiasm - Tyler Britten
Spring Into Kubernetes DFW
Extending kubernetes with CustomResourceDefinitions

What's hot (20)

PDF
Day 2 Kubernetes - Tools for Operability (KubeCon)
PDF
KubeCon 2017 Zero Touch Provision
PDF
Philipp Krenn, Elastic. From Containers to Kubernetes Operators
PDF
Kubernetes: A Short Introduction (2019)
PDF
An Introduction to the Kubernetes API
PPTX
2016 - Continuously Delivering Microservices in Kubernetes using Jenkins
PPTX
Zero to Continuous Delivery on Google Cloud
PDF
Continuous Deployment with Jenkins on Kubernetes
PDF
Kubermatic How to Migrate 100 Clusters from On-Prem to Google Cloud Without D...
PPTX
GKE vs OpenStack Magnum
PPTX
Kube Overview and Kube Conformance Certification OpenSource101 Raleigh
PDF
GlueCon kubernetes & container engine
PDF
You got database in my cloud (short version)
PPTX
Tectonic Summit 2016: The Origins of Kubernetes
PDF
Scaling Docker with Kubernetes
PDF
JDD2015: Kubernetes - Beyond the basics - Paul Bakker
PDF
Using Containers for Continuous Integration and Continuous Delivery. KubeCon ...
PPTX
Managing Docker Containers In A Cluster - Introducing Kubernetes
PDF
Kubernetes Architecture - beyond a black box - Part 2
PDF
Using Kubernetes for Continuous Integration and Continuous Delivery. Java2days
Day 2 Kubernetes - Tools for Operability (KubeCon)
KubeCon 2017 Zero Touch Provision
Philipp Krenn, Elastic. From Containers to Kubernetes Operators
Kubernetes: A Short Introduction (2019)
An Introduction to the Kubernetes API
2016 - Continuously Delivering Microservices in Kubernetes using Jenkins
Zero to Continuous Delivery on Google Cloud
Continuous Deployment with Jenkins on Kubernetes
Kubermatic How to Migrate 100 Clusters from On-Prem to Google Cloud Without D...
GKE vs OpenStack Magnum
Kube Overview and Kube Conformance Certification OpenSource101 Raleigh
GlueCon kubernetes & container engine
You got database in my cloud (short version)
Tectonic Summit 2016: The Origins of Kubernetes
Scaling Docker with Kubernetes
JDD2015: Kubernetes - Beyond the basics - Paul Bakker
Using Containers for Continuous Integration and Continuous Delivery. KubeCon ...
Managing Docker Containers In A Cluster - Introducing Kubernetes
Kubernetes Architecture - beyond a black box - Part 2
Using Kubernetes for Continuous Integration and Continuous Delivery. Java2days
Ad

Similar to Using Spinnaker to Create a Development Workflow on Kubernetes - Paul Czarkowski (20)

PDF
Kube Your Enthusiasm - Paul Czarkowski
PDF
Kube Your Enthusiasm
PDF
kubernetes.pdf
PDF
Kubernetes for the PHP developer
PDF
Docker Madison, Introduction to Kubernetes
PPTX
01 - VMUGIT - Lecce 2018 - Fabio Rapposelli, VMware
PPTX
Kubernetes
PDF
JavaOne 2016: Kubernetes introduction for Java Developers
PDF
Kubernetes for Java Developers
PDF
Kubernetes for Java developers
PDF
Kubernetes in Action First Edition Marko Luksa
PPTX
Kubernetes Introduction
PDF
TDC2018FLN | Trilha Containers - Kubernetes para usuarios Docker.
PDF
Kubernetes_Webinar_Slide_Deck.pdf
PDF
Kubernetes Basics - ICP Workshop Batch II
TXT
Introduction about Kubernates Cluster
PDF
Kubernetes in Action First Edition Marko Luksa
PDF
Kubernetes From Scratch .pdf
PDF
Kubernetes in Action First Edition Marko Luksa
PDF
Kubernetes - introduction
Kube Your Enthusiasm - Paul Czarkowski
Kube Your Enthusiasm
kubernetes.pdf
Kubernetes for the PHP developer
Docker Madison, Introduction to Kubernetes
01 - VMUGIT - Lecce 2018 - Fabio Rapposelli, VMware
Kubernetes
JavaOne 2016: Kubernetes introduction for Java Developers
Kubernetes for Java Developers
Kubernetes for Java developers
Kubernetes in Action First Edition Marko Luksa
Kubernetes Introduction
TDC2018FLN | Trilha Containers - Kubernetes para usuarios Docker.
Kubernetes_Webinar_Slide_Deck.pdf
Kubernetes Basics - ICP Workshop Batch II
Introduction about Kubernates Cluster
Kubernetes in Action First Edition Marko Luksa
Kubernetes From Scratch .pdf
Kubernetes in Action First Edition Marko Luksa
Kubernetes - introduction
Ad

More from VMware Tanzu (20)

PDF
Spring into AI presented by Dan Vega 5/14
PDF
What AI Means For Your Product Strategy And What To Do About It
PDF
Make the Right Thing the Obvious Thing at Cardinal Health 2023
PPTX
Enhancing DevEx and Simplifying Operations at Scale
PDF
Spring Update | July 2023
PPTX
Platforms, Platform Engineering, & Platform as a Product
PPTX
Building Cloud Ready Apps
PDF
Spring Boot 3 And Beyond
PDF
Spring Cloud Gateway - SpringOne Tour 2023 Charles Schwab.pdf
PDF
Simplify and Scale Enterprise Apps in the Cloud | Boston 2023
PDF
Simplify and Scale Enterprise Apps in the Cloud | Seattle 2023
PPTX
tanzu_developer_connect.pptx
PDF
Tanzu Virtual Developer Connect Workshop - French
PDF
Tanzu Developer Connect Workshop - English
PDF
Virtual Developer Connect Workshop - English
PDF
Tanzu Developer Connect - French
PDF
Simplify and Scale Enterprise Apps in the Cloud | Dallas 2023
PDF
SpringOne Tour: Deliver 15-Factor Applications on Kubernetes with Spring Boot
PDF
SpringOne Tour: The Influential Software Engineer
PDF
SpringOne Tour: Domain-Driven Design: Theory vs Practice
Spring into AI presented by Dan Vega 5/14
What AI Means For Your Product Strategy And What To Do About It
Make the Right Thing the Obvious Thing at Cardinal Health 2023
Enhancing DevEx and Simplifying Operations at Scale
Spring Update | July 2023
Platforms, Platform Engineering, & Platform as a Product
Building Cloud Ready Apps
Spring Boot 3 And Beyond
Spring Cloud Gateway - SpringOne Tour 2023 Charles Schwab.pdf
Simplify and Scale Enterprise Apps in the Cloud | Boston 2023
Simplify and Scale Enterprise Apps in the Cloud | Seattle 2023
tanzu_developer_connect.pptx
Tanzu Virtual Developer Connect Workshop - French
Tanzu Developer Connect Workshop - English
Virtual Developer Connect Workshop - English
Tanzu Developer Connect - French
Simplify and Scale Enterprise Apps in the Cloud | Dallas 2023
SpringOne Tour: Deliver 15-Factor Applications on Kubernetes with Spring Boot
SpringOne Tour: The Influential Software Engineer
SpringOne Tour: Domain-Driven Design: Theory vs Practice

Recently uploaded (20)

PDF
Upgrade and Innovation Strategies for SAP ERP Customers
PDF
2025 Textile ERP Trends: SAP, Odoo & Oracle
PDF
Odoo Companies in India – Driving Business Transformation.pdf
PPTX
Embracing Complexity in Serverless! GOTO Serverless Bengaluru
PDF
Why TechBuilder is the Future of Pickup and Delivery App Development (1).pdf
PPTX
Transform Your Business with a Software ERP System
PDF
Adobe Premiere Pro 2025 (v24.5.0.057) Crack free
PPTX
ai tools demonstartion for schools and inter college
PPTX
CHAPTER 2 - PM Management and IT Context
PDF
PTS Company Brochure 2025 (1).pdf.......
PPTX
history of c programming in notes for students .pptx
PPT
Introduction Database Management System for Course Database
PDF
Wondershare Filmora 15 Crack With Activation Key [2025
PDF
Navsoft: AI-Powered Business Solutions & Custom Software Development
PDF
T3DD25 TYPO3 Content Blocks - Deep Dive by André Kraus
PDF
Adobe Illustrator 28.6 Crack My Vision of Vector Design
PPTX
Operating system designcfffgfgggggggvggggggggg
PPTX
L1 - Introduction to python Backend.pptx
PDF
Digital Systems & Binary Numbers (comprehensive )
PDF
SAP S4 Hana Brochure 3 (PTS SYSTEMS AND SOLUTIONS)
Upgrade and Innovation Strategies for SAP ERP Customers
2025 Textile ERP Trends: SAP, Odoo & Oracle
Odoo Companies in India – Driving Business Transformation.pdf
Embracing Complexity in Serverless! GOTO Serverless Bengaluru
Why TechBuilder is the Future of Pickup and Delivery App Development (1).pdf
Transform Your Business with a Software ERP System
Adobe Premiere Pro 2025 (v24.5.0.057) Crack free
ai tools demonstartion for schools and inter college
CHAPTER 2 - PM Management and IT Context
PTS Company Brochure 2025 (1).pdf.......
history of c programming in notes for students .pptx
Introduction Database Management System for Course Database
Wondershare Filmora 15 Crack With Activation Key [2025
Navsoft: AI-Powered Business Solutions & Custom Software Development
T3DD25 TYPO3 Content Blocks - Deep Dive by André Kraus
Adobe Illustrator 28.6 Crack My Vision of Vector Design
Operating system designcfffgfgggggggvggggggggg
L1 - Introduction to python Backend.pptx
Digital Systems & Binary Numbers (comprehensive )
SAP S4 Hana Brochure 3 (PTS SYSTEMS AND SOLUTIONS)

Using Spinnaker to Create a Development Workflow on Kubernetes - Paul Czarkowski

  • 1. Kubernetes is a platform for ______ Cards Against Kubernetes @pczarkowski
  • 2. Kubernetes is a platform for ______ Cards Against Kubernetes @pczarkowski
  • 3. Kubernetes is a platform for ______ Cards Against Kubernetes Five Dollar Footlongs ™. Cards Against Kubernetes @pczarkowski
  • 4. Kubernetes is a platform for ______ Cards Against Kubernetes Cards Against Kubernetes @pczarkowski
  • 5. Kubernetes is a platform for ______ Cards Against Kubernetes Spring Cloud Kubernetes Cards Against Kubernetes @pczarkowski
  • 6. Kubernetes is a platform for ______ Cards Against Kubernetes Building Platforms. Cards Against Kubernetes @pczarkowski
  • 7. Kubernetes is a platform for ______ Cards Against Kubernetes Building Platforms. Cards Against Kubernetes @pczarkowski
  • 8. Kubernetes is a platform for ______ Cards Against Kubernetes Building Platforms. Cards Against Kubernetes @pczarkowski
  • 9. Kubernetes is a platform for ______ Cards Against Kubernetes Automated container deployment, scaling, and management. Cards Against Kubernetes @pczarkowski
  • 10. Kubernetes is a platform for ______ Cards Against Kubernetes Automated operations. Cards Against Kubernetes @pczarkowski
  • 11. Kubernetes is a platform for ______ Cards Against Kubernetes Automated operations. Cards Against Kubernetes devops. Cards Against Kubernetes Site ReliabilityEngineering. Cards Against Kubernetes @pczarkowski
  • 12. “Every line of code is a piece of Technical Debt”
  • 13. Kubernetes is a platform for ______ Cards Against Kubernetes Reducing Infrastructure Code Cards Against Kubernetes @pczarkowski
  • 14. Kubernetes is a platform for ______ Cards Against Kubernetes Reducing Infrastructure Code Kards Against Humanity Reducing Toil Cards Against Kubernetes @pczarkowski
  • 15. Kubernetes is a platform for ______ Cards Against Kubernetes Reducing Infrastructure Code Kards Against Humanity Reducing Toil Running Applications Cards Against Kubernetes @pczarkowski
  • 16. Cover w/ Image Kubernetes is a platform for ■ Running Applications ■ Reducing [Infra] Code ■ Reducing Toil @pczarkowski
  • 17. APP APP APP APP Kubernetes is a platform for ■ Continuous Integration ■ Continuous Delivery @pczarkowski
  • 21. Embedded OS (Windows & Linux) NSX-T CPI (15 methods) v1 v2 v3 ... CVEs Product Updates Java | .NET | NodeJS Pivotal Application Service (PAS) Application Code & Frameworks Buildpacks | Spring Boot | Spring Cloud | Steeltoe Elastic | Packaged Software | Spark Pivotal Container Service (PKS) >cf push >kubectl run YOU build the containerWE build the container vSphere Azure & Azure StackGoogle CloudAWSOpenstack Pivotal Network “3Rs” Github Concourse Concourse Pivotal Services Marketplace Pivotal and Partner Products Continuous delivery Public Cloud Services Customer Managed Services OpenServiceBrokerAPI Repair — CVEs Repave Rotate — Credhub @pczarkowski
  • 22. BOSH Reliable and consistent operational experience for any cloud. BOSH GCP Service Broker Harbor NSX-T Kubernetes K8s Cluster K8s Cluster K8s Cluster PKS Control Plane Use the PKS CLI and API to create, operate, and scale your clusters. VMware GCP Azure Openstack AWS PKSControlPlane GCP Service Broker Bring Google Cloud Platform services to your containers. Extend your workloads with machine learning, AI, and data services from Google. Built with open-source Kubernetes Constant compatibility with the latest stable release of Google Kubernetes Engine—no proprietary extensions. Harbor An enterprise-class container registry. Includes vulnerability scanning, identity management, and more. NSX-T Network management, security, and load balancing out-of-the-box with VMware NSX-T. Multi-cloud, multi-hypervisor. Enterprise-Grade Kubernetes @pczarkowski
  • 24. App / Container Deployment, Services & Routing cf push App myapp.mydomain.net Pivotal Cloud Foundry Elastic Runtime Pivotal Container Service kubectl run ???? ????
  • 26. cf push App myapp.mydomain.net Pivotal Cloud Foundry Elastic Runtime Pivotal Container Service docker build docker push kubectl run kubectl expose ???? ???? App / Container Deployment, Services & Routing
  • 29. You use Kubernetes API objects to describe your desired state.
  • 33. API Users Storage Compute NetworkDatabase AccessArtifacts @pczarkowski
  • 36. API Users Storage Compute NetworkDatabase AccessArtifacts @pczarkowski
  • 38. API Server Users Control Plane Data Plane etcd @pczarkowski
  • 39. API Server Users Control Plane Data Plane etcd Cloud Ctrl Manager Kubelet kube-proxy docker @pczarkowski
  • 40. API Server Users Control Plane Data Plane etcd Cloud Ctrl Manager Kubelet kube-proxy docker Scheduler @pczarkowski
  • 41. API Server Users Control Plane Data Plane etcd Cloud Ctrl Manager Kubelet kube-proxy docker Scheduler Controller Manager @pczarkowski
  • 42. Worker Master API Server Users Control Plane Data Plane etcd Cloud Ctrl Manager Kubelet kube-proxy docker Scheduler Controller Manager @pczarkowski
  • 43. Master Master Master API Server Users Control Plane Data Plane etcd Cloud Ctrl Manager Worker Kubelet kube-proxy docker Scheduler Controller Manager Worker Kubelet kube-proxy docker Worker Kubelet kube-proxy docker @pczarkowski
  • 44. Master Master Master API Server Users Control Plane Data Plane etcd Cloud Ctrl Manager Worker Kubelet kube-proxy docker Scheduler Controller Manager Worker Kubelet kube-proxy docker Worker Kubelet kube-proxy docker Flannel Flannel Flannel @pczarkowski
  • 46. Unix Philosophy: Do one thing. Do it well. @pczarkowski
  • 48. Imperative $ kubectl run hello --image=paulczar/go-hello $ kubectl scale hello --replicas=3 $ kubectl create service clusterip hello --tcp=80:80 @pczarkowski
  • 49. Declarative $ kubectl apply -f hello.yaml @pczarkowski
  • 52. apiVersion: v1 kind: Pod metadata: name: hello spec: containers: - image: paulczar/go-hello imagePullPolicy: Always name: hello @pczarkowski
  • 54. ● Pods ● Services ● Volumes @pczarkowski
  • 55. POD
  • 56. one or more containers that share a network and storage
  • 57. the minimum scalable unit of your application
  • 58. MASTER Node 1 Node 2 Node 3 Node 4 hello kubelet kubelet kubelet kubelet Scheduler Pod Name: hello Image: hello1 @pczarkowski
  • 59. MASTER Node 1 Node 2 Node 3 Node 4 hello kubelet kubelet kubelet kubelet Scheduler hello Pod Name: hello Image: hello1 @pczarkowski
  • 60. MASTER Node 1 Node 2 Node 3 Node 4 hello kubelet kubelet kubelet kubelet Scheduler Pod Name: hello Image: hello1 @pczarkowski
  • 62. MASTER Node 1 Node 2 Node 3 Node 4 hello-a kubelet kubelet kubelet kubelet Scheduler Controller Manager Replica Set Name: hello Image: hello1 Size: 3 hello-ghello-s Pod Name: hello-a Image: hello1 Pod Name: hello-b Image: hello1 Pod Name: hello-c Image: hello1 @pczarkowski
  • 63. MASTER Node 1 Node 2 Node 3 Node 4 hello-a kubelet kubelet kubelet kubelet Scheduler Controller Manager Replica Set Name: hello Image: hello1 Size: 3 hello-ghello-s hello-d Pod Name: hello-a Image: hello1 Pod Name: hello-b Image: hello1 Pod Name: hello-d Image: hello1 @pczarkowski
  • 64. MASTER Node 1 Node 2 Node 3 Node 4 hello-a kubelet kubelet kubelet kubelet Scheduler Controller Manager Replica Set Name: hello Image: hello1 Size: 5 hello-ghello-s hello-d hello-t hello-z Pod Name: hello-a Image: hello1 Pod Name: hello-a Image: hello1 Pod Name: hello-a Image: hello1 Pod Name: hello-a Image: hello1 Pod Name: hello-a Image: hello1 @pczarkowski
  • 65. MASTER Node 1 Node 2 Node 3 Node 4 kubelet kubelet kubelet kubelet Scheduler Controller Manager Replica Set Name: hello Image: hello1 Size: 0 @pczarkowski
  • 67. MASTER Node 1 Node 2 Node 3 Node 4 hello-A-c kubelet kubelet kubelet kubelet Scheduler Controller Manager Deployment Name: hello Image: hello1 Size: 3 hello-A-ghello-A-s Replica Set Name: hello-A Image: hello1 Size: 3 @pczarkowski
  • 68. MASTER Node 1 Node 2 Node 3 Node 4 hello-A-c kubelet kubelet kubelet kubelet Scheduler Controller Manager Deployment Name: hello Image: hello2 Size: 3 hello-A-ghello-A-s Replica Set Name: hello-A Image: hello1 Size: 3 Replica Set Name: hello-B Image: hello2 Size: 3 hello-B-g hello-B-r hello-B-c @pczarkowski
  • 69. MASTER Node 1 Node 2 Node 3 Node 4 kubelet kubelet kubelet kubelet Scheduler Controller Manager Deployment Name: hello Image: hello2 Size: 3 Replica Set Name: hello-A Image: hello1 Size: 0 Replica Set Name: hello-B Image: hello2 Size: 3 hello-B-g hello-B-r hello-B-c @pczarkowski
  • 71. MASTER Node 1 Node 2 Node 3 Node 4 hello-1 kubelet kubelet kubelet kubelet Scheduler Controller Manager StatefulSet Name: db Image: hello1 Size: 3 Pod Name: hello-1 Image: hello1 @pczarkowski
  • 72. MASTER Node 1 Node 2 Node 3 Node 4 hello-1 kubelet kubelet kubelet kubelet Scheduler Controller Manager StatefulSet Name: hello Image: hello1 Size: 3 hello-2 Pod Name: hello-1 Image: hello1 Pod Name: hello-2 Image: hello1 @pczarkowski
  • 73. MASTER Node 1 Node 2 Node 3 Node 4 hello-1 kubelet kubelet kubelet kubelet Scheduler Controller Manager StatefulSet Name: hello Image: hello1 Size: 3 hello-3hello-2 Pod Name: hello-1 Image: hello1 Pod Name: hello-2 Image: hello1 Pod Name: hello-3 Image: hello1 @pczarkowski
  • 74. MASTER Node 1 Node 2 Node 3 Node 4 db-1 kubelet kubelet kubelet kubelet Scheduler Controller Manager StatefulSet Name: db Image: cassandra Size: 3 db-3db-2 Pod Name: hello-a Image: Pod Name: hello-b Image: Pod Name: db-1 Image: ... vol vol vol Pod Name: hello-a Image: Pod Name: hello-b Image: PVC Name: db-1 Image: ... @pczarkowski
  • 76. $ kubectl run hello --image=paulczar/go-hello @pczarkowski
  • 77. ● kubectl run created a deployment “deployments.apps/hello” NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE deployment.apps/hello 1 1 1 1 1m ● The deployment created a replicaset “replicaset.apps/hello-64f6bf9dd4” NAME DESIRED CURRENT READY AGE replicaset.apps/hello-64f6bf9dd4 1 1 1 1m ● Which created a pod “pod/hello-64f6bf9dd4-tq5dq” NAME READY STATUS RESTARTS AGE pod/hello-64f6bf9dd4-tq5dq 1/1 Running 0 2s @pczarkowski
  • 78. $ kubectl scale --replicas=3 deployment/hello @pczarkowski
  • 79. $ kubectl scale --replicas=3 deployment/hello deployment.extensions/hello scaled $ kubectl get all NAME READY STATUS RESTARTS AGE pod/hello-64f6bf9dd4-2bndq 1/1 Running 0 15m pod/hello-64f6bf9dd4-4kq9l 0/1 ContainerCreating 0 2s pod/hello-64f6bf9dd4-8lkcs 1/1 Running 0 5s NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE deployment.apps/hello 3 3 2 3 16m NAME DESIRED CURRENT READY AGE replicaset.apps/hello-64f6bf9dd4 3 3 2 16m @pczarkowski
  • 80. $ kubectl edit deployment hello ... spec: containers: - env: - name: MESSAGE value: HELLO I LOVE YOU!!!! image: paulczar/go-hello imagePullPolicy: Always name: hello @pczarkowski
  • 81. $ kubectl get all NAME READY STATUS RESTARTS AGE pod/hello-5c75b546c7-4lwnn 1/1 Running 0 1m pod/hello-5c75b546c7-bwxxq 1/1 Running 0 1m pod/hello-5c75b546c7-sl2pg 1/1 Running 0 1m NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE deployment.apps/hello 3 3 3 3 23m NAME DESIRED CURRENT READY AGE replicaset.apps/hello-5c75b546c7 3 3 3 1m replicaset.apps/hello-64f6bf9dd4 0 0 0 23m @pczarkowski
  • 82. $ kubectl port-forward deployment/hello 8080 Forwarding from 127.0.0.1:8080 -> 8080 $ curl localhost:8080 <html><head><title>HELLO I LOVE YOU!!!!</title></head><body>HELLO I LOVE YOU!!!!!</body></html> @pczarkowski
  • 84. $ kubectl expose deployment hello --type=LoadBalancer --port 80 --target-port 8080 @pczarkowski
  • 85. kubectl expose deployment hello ● creates a service with a ClusterIP that acts as an internal loadbalancer to all pods in the “hello” deployment --type=LoadBalancer ● Creates a NodePort ● Configures a LoadBalancer to access the pods via the NodePort $ kubectl get services NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE hello LoadBalancer 10.39.248.123 35.184.17.129 80:30468/TCP 5m $ curl 35.184.17.129 <html><head><title>HELLO I LOVE YOU!!!!</title></head><body>HELLO I LOVE YOU!!!!!</body></html> @pczarkowski
  • 86. Service track Pods based on metadata and provides connectivity and service discovery (DNS, Env variables) for them. Type ClusterIP (default) exposes service on a cluster-internal IP. Container Container Pod app=bacon Container Container Pod app=bacon Service app=bacon 10.3.55.7 @pczarkowski
  • 87. Service track Pods based on metadata and provides connectivity and service discovery (DNS, Env variables) for them. Type NodePort extends ClusterIP to expose services on each node’s IP via a static port. Container Container Pod app=bacon Container Container Pod app=bacon Service app=bacon 10.3.55.7 192.168.0.5:4530 K8s Worker K8s Worker 192.168.0.6:4530 @pczarkowski
  • 88. Service track Pods based on metadata and provides connectivity and service discovery (DNS, Env variables) for them. Type LoadBalancer extends NodePort to configure a cloud provider’s load balancer using the cloud-controller-manager. Container Container Pod app=bacon Container Container Pod app=bacon Service app=bacon 10.3.55.7 192.168.0.5:4530 K8s Worker K8s Worker 192.168.0.6:4530 Load Balancer 33.6.5.22:80 @pczarkowski
  • 89. Ingress a controller that manages an external entity to provide load balancing, SSL termination and name-based virtual hosting to services based on a set of rules. Ingress Service app=bacon https://example.com Service app=eggs /bacon /eggs @pczarkowski
  • 91. Container Container Pod Volume Is [effectively] a Directory, possibly with data in it, available to all containers in a Pod. Usually Shares lifecycle of a Pod (Created when Pod is created, destroyed when Pod is destroyed). Persistent Volumes outlive Pods. Can be mounted from local disk, or from a network storage device such as a EBS volume, iscsi, NFS, etc. @pczarkowski
  • 92. Config Map / Secret
  • 93. $ kubectl create configmap hello --from-file=index.html @pczarkowski
  • 94. kubectl create configmap hello --from-file=index.html ● creates a configmap called “hello” containing the contents index.html $ kubectl get configmap hello -o yaml apiVersion: v1 kind: ConfigMap metadata: name: hello data: index.html: "<html>n<head>nt<title>Hello to my friends</title>n</head>n<body>ntHello to my friendsn</body>n</html>nn" @pczarkowski
  • 95. kubectl create secret generic hello --from-file=index.html ● creates a secret called “hello” containing a base64 hash of contents index.html $ kubectl get secret hello -o yaml apiVersion: v1 kind: Secret metadata: name: hello data: index.html: PGh0bWw+CjxoZWFkPgoJPHRpdGxlPkhlbGxvIHRvIG15IGZyaWVuZHM8L3RpdGxlPgo8L2hlYWQ+Cjxib2R5 PgoJSGVsbG8gdG8gbXkgZnJpZW5kcwo8L2JvZHk+CjwvaHRtbD4KCg== @pczarkowski
  • 96. Provides key-value pairs to be injected into a pod much like user-data is injected into a Virtual Machine in the cloud. Allows you to do last minute configuration of applications running on Kubernetes such as setting a database host, or a admin password. ConfigMaps store values as strings, Secrets store them as byte arrays (serialized as base64 encoded strings). Secrets are [currently] not encrypted by default. This is likely to change. Can be injected as files in a Volume, or as Environment Variables. ConfigMaps/Secrets (user-data) @pczarkowski
  • 97. Helm
  • 98. Helm is the best way to find, share, and use software built for Kubernetes @pczarkowski
  • 100. Discover & launch great Kubernetes-ready apps Search charts 231 charts ready to deploy Wordpress, Jenkins, Kubeless... Secure | https://hub.kubeapps.com @pczarkowski
  • 101. apiVersion: v1 kind: ConfigMap metadata: name: {{ .Chart.name }}-cm data: db: {{ .Value.db }} apiVersion: apps/v1beta1 kind: Deployment metadata: name: {{ .Chart.name }}-app labels: app: {{ .Chart.name }} ... ... spec: containers: - image: paulczar/hello name: hello volumeMounts: - name: config mountPath: /etc/hello volumes: - name: config configMap: name: {{ .Chart.name }}-cm apiVersion: v1 kind: Service metadata: name: {{ .Chart.name }}-svc labels: app: {{ .Chart.name }}-world spec: ports: - port: {{ .Value.port }} protocol: TCP targetPort: 8080 selector: app: {{ .Chart.name }}-world type: NodePort @pczarkowski
  • 102. $ helm install --name staging . --set db=’user:pass@staging.mysql/dbname’ $ helm install --name production . --set db=’user:pass@production.mysql/dbname’ @pczarkowski
  • 109. Cluster Management ● Server Group ● Cluster ● Applications ● Load Balancer ● Firewall Pipelines ● Pipeline ● Stage ● Deployment Strategies @pczarkowski
  • 110. Multi-Cloud Inventory ● Server Group ● Cluster ● Applications ● Load Balancer ● Firewall Actions and Reactions ● Pipeline ● Stage ● Deployment Strategies @pczarkowski
  • 112. Cluster Management ● Server Group ● Cluster ● Applications ● Load Balancer ● Firewall Deployment Management ● Pipeline ● Stage ● Deployment Strategies Deployment Strategies
  • 118. Transforming How The World Builds Software © Copyright 2018 Pivotal Software, Inc. All rights Reserved.@pczarkowski