Out of the box Kubernetes is an Operations platform which is great for flexibility but creates friction for deploying simple applications. Along comes Spinnaker which allows you to easily create custom workflows for testing, building, and deploying your application on Kubernetes. Salvatore Incandela and Fabio Marinelli will give an introduction to Containers and Kubernetes and the default development/deployment workflows that it enables. They will then show you how you can use Spinnaker to simplify and streamline your workflow and help provide a full #gitops style CI/CD.
4. 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
5. 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
6. Cloud Native Design - 12 factors
Codebase
One codebase tracked in revision control, many
deploys
Dependencies
Explicitly declare and isolate dependencies
Configuration
Store config in the environment
Backing services
Treat backing services as attached resources
Build, release, run
Strictly separate build and run stages
Processes
Execute the app as one or more stateless processes
Port Binding
Export services via ports
Concurrency
Scale out via the process model
Disposability
Maximize robustness with fast startup and graceful
shutdown
Dev/Prod Parity
Keep dev to prod as close as possible
Logs
Treat logs as event streams
Admin Processes
Run admin and management tasks as one-off
processes
8. Cloud Native Design - 12 factors
Codebase
One codebase tracked in revision control, many
deploys
Dependencies
Explicitly declare and isolate dependencies
Configuration
Store config in the environment
Backing services
Treat backing services as attached resources
Build, release, run
Strictly separate build and run stages
Processes
Execute the app as one or more stateless processes
Port Binding
Export services via ports
Concurrency
Scale out via the process model
Disposability
Maximize robustness with fast startup and graceful
shutdown
Dev/Prod Parity
Keep dev to prod as close as possible
Logs
Treat logs as event streams
Admin Processes
Run admin and management tasks as one-off
processes
12. Kubernetes
Kubernetes is an open-source platform designed to
automate deploying, scaling, and operating application
containers.
With Kubernetes, you are able to quickly and efficiently
respond to customer demand:
● Deploy your applications quickly and predictably
● Scale your applications on the fly
● Roll out new features seamlessly
● Limit hardware usage to required resources only
● Declarative and immutable configs
https://kubernetes.io/docs/concepts/overview/what-is-kubernetes/
14. Container
Container
Pod
Pod
one or more application containers that are tightly
coupled, sharing network and storage.
Example: a web front-end Pod that consists of an NGINX
container and a PHP-FPM container with a shared unix socket
and a “init” container to transform their config files based on
environment variables.
16. Container
Container
Pod
Deployment
a controller that ensures a set number of replicas of
a Pod is running and provides update and upgrade
workflows for your Pods.
Example: cloud native Node app that scales horizontally and
upgrades 2 pods at a time.
Container
Container
Pod
ReplicaSet
Deployment
17. Container
Container
Pod
statefulset
a controller that manages stateful application
Deployments by providing sticky identity for pods
and strict ordering and uniqueness.
Example: Cassandra database. First pod is ‘cassandra-0’ thus
all other pods in the set can be told to cluster to ‘cassandra-0’
and it will form a ring, plus the storage will survive pod
restarts.
Container
Container
Pod
ReplicaSet
Deployment
Statefulset
19. $ 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
20. 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.
NodePort extends ClusterIP to expose services on
each node’s IP via a static port.
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
33.6.5.22:80
Load Balancer
21. 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