Cloud Native Operations With Kubernetes Paul Czarkowski @pczarkowski pczarkowski@pivotal.io © Copyright 2018 Pivotal Software, Inc. All rights Reserved.

Cloud Native Operations With Kubernetes Paul Czarkowski @pczarkowski pczarkowski@pivotal.io © Copyright 2018 Pivotal Software, Inc. All rights Reserved.

Operations is the Secret sauce

Operations as a Competitive Advantage

Just not Traditional Operations.

https://go.forrester.com/blogs/ceos-and-software/

The Agile/DevOps Journey

Months BUSINESS Months DEVELOPMENT Months TEST / QA Operations

Weeks BUSINESS Months DEVELOPMENT Months TEST / QA Operations

Weeks Months Operations BUSINESS DEVELOPMENT TEST / QA

Weeks BUSINESS Months DEVELOPMENT TEST / QA Operations

Weeks BUSINESS DEVELOPMENT TEST / QA Operations

https://www.sketchplanations.com/post/175174474143/conways-law-im-paraphrasing-here-but-the-gist

Hack Conway’s Law

CHANGE

Users API Storage Admin DBA Systems Admin Network Engineer Security QA

Users API Artifacts Database Storage 1 Compute Network Access 2 Creative Commons [1] Jon Trillana [2] Simon Child

Operations as a Platform

Platform as a Product

Take business requirements and turn them into features Application Team App1 Messaging Build common services for App Teams Platform Team App Platform ML ? App2 Creds/Certs App3 Middleware ELK Container Services DBaaS Container Hosts | Kubernetes ? Infrastructure Team Abstract infrastructure complexity with easy consumption IaaS Infra Services Virtual Infrastructure Physical Infrastructure ?

Orchestration and scheduling Observability CI / CD Access Control

APP APP APP APP Production

This is Cloud Native Operations

Kubernetes

Controllers

Controllers make Kubernetes great.

Desired State Actual State

Unix Philosophy: Do one thing. Do it well.

A Kubernetes pod is fragile.

The ReplicaSet Controller Adds resiliency to your Pods.

The Deployment Controller Adds upgradability to your ReplicaSets.

You can write custom controllers very easily.

Kubernetes is an API for Operations

DNS A record please Hi, we need a DNS record for bacon.example.com To point to IP 22.33.44.55. Thanks.

external-dns controller https://github.com/kubernetes-incubator/external-dns

cert-manager controller (/operator) https://github.com/jetstack/cert-manager

Operators extend Kubernetes to support custom resources

https://github.com/operator-framework/awesome-operators

Controllers and Operators turn Kubernetes Into an API for Operations

Let’s run Kubernetes

“Let somebody else Do the hard stuff” - Me

One Big Cluster or Many Smaller Clusters One [or two] Big Cluster[s] Many Smaller Clusters ● All teams co-located on cluster, “namespaces” separate them. ● Each “team” or “business unit” gets its own cluster. ● Higher chance of noisy neighbor, other multi-tenancy issues. ● Dedicated resources to each cluster reduces noisy neighbor etc. ● Better utilization of resources (less servers, higher bin-packing) ● Resources can be customized at the cluster for the specific use cases. ● Cluster Upgrades affect everyone. ● ● Large Blast radius during cluster issues / outages. Cluster Upgrades only affect one team, easier to coordinate. ● Cluster issues/outages restricted to one team. Monolithic approach to infrastructure ● Microservices approach to Infrastructure ●

One Big Cluster or Many Smaller Clusters One [or two] Big Cluster[s] Many Smaller Clusters ● Kops ● Google Container Engine ● Pivotal Container Service - Essentials ● Pivotal Container Service - Enterprise ● OpenShift ● Elastic Container Service ● Kubespray ● Azure Container Service ● DIY chef/puppet/ansible ● Pivotal Container Service - Cloud

https://k8s.af

Start with the idea of doing many smaller clusters.

One Big Cluster or Many Smaller Clusters One [or two] Big Cluster[s] Many Smaller Clusters

APP APP APP APP Production

APP APP APP APP

APP APP APP APP

APP APP APP APP

APP APP APP APP

APP APP APP APP

APP APP APP APP

APP APP APP APP

APP APP APP APP

APP APP APP APP

A P A P P P A P A P P P A P A P P P A P A P P P A P A P P P A P A P P P A P A P P P A P A P P P

We’ve spent 10 years figuring out how to do agile operations

Platform Operations A P A P P P Kube Env #2 Repo Helm Chart Repo A P A P P P Kube Env #1 Repo A P A P P P A P A P P P

Developer Workflow App Env Repo #1 App Source Code App Env Repo #2

DEMO TIME

Transforming How The World Builds Software © Copyright 2019 Pivotal Software, Inc. All rights Reserved.