SlideShare a Scribd company logo
Architecting the Future
Abstractions and Metadata
Dan Barker @barkerd427
danbarker.codes
Architecting the Future: Abstractions and Metadata - KCDC
The current data center is...challenging...
RHEL
6.9
Dev
RHEL
6.8
Test
RHEL
6.6
Prod
Dev Test Prod
RHEL
6.7
Prod
Admin Admin Admin Admin Admin Admin
Dev
RHEL
6.7
Dev
RHEL
6.4
Dev
RHEL
6.8
Dev
Ubuntu
Trusty
RHEL
6.9
Dev
RHEL
6.6
Dev
Ubuntu
Trusty
RHEL
6.7
Dev
RHEL
6.4
Dev
RHEL
6.8
Dev
Ubuntu
Trusty
RHEL
6.9
Dev
RHEL
6.6
Dev
RHEL
6.7
Dev
RHEL
6.4
Dev
RHEL
6.8
Dev
Ubuntu
Trusty
RHEL
6.9
Dev
RHEL
6.6
Dev
@barkerd427
Architecting the Future: Abstractions and Metadata - KCDC
The new data center is understandable and usable.
Developer Access Production Controlled
Network
Storage
Compute
Platform
Deployment Pipeline
RHEL
6.9
App1
RHEL
6.9
App1
RHEL
6.9
App1
RHEL
6.9
App1
RHEL
6.9
App1
RHEL
6.9
App1
RHEL
6.9
App2
RHEL
6.9
App2
RHEL
6.9
App2
RHEL
6.9
App2
RHEL
6.9
App2
RHEL
6.9
App2
@barkerd427
Docker - the early
● Docker is an
abstraction
○ cgroups
○ Namespaces
@barkerd427
● Not Included
○ Metadata
○ Volumes
○ Secrets
○ Services
○ Network
Docker - the latter
● Volumes
● Secrets
● Networks
@barkerd427
● Plugins
● Services
● Labels
https://devopscube.com
http://isagoksu.com/
Kubernetes (k8s)
● PersistentVolumes
● Services
● Pods
● Secrets
@barkerd427
● Ingress
● DaemonSets
● ReplicaSets
● Deployments
Now with AES-CBC and
Secretbox encryption!!!
Kubernetes Architecture
https://www.slideshare.net/erialc_w/kubernetes-50626679
OpenShift
● Routes > Ingress
● DeploymentConfig
> Deployments
@barkerd427
● ImageStream
● BuildConfig
http://blog.
openshift.
com
Architecting the Future: Abstractions and Metadata - KCDC
Services make
your app usable
@barkerd427
Services
● Identifies pods using label selectors
○ Any label
○ Specific to avoid errant selections
● Passes requests to pods internally
○ Routes and Services are different
● Abstraction for a Route to pass traffic
@barkerd427
Services
http://blog.openshift.com
One Route, One Service, One Application
Route
Service
Pod
@barkerd427
The Route directs to the Service application0
➜ ~ oc export routes application0
apiVersion: v1
kind: Route
[...]
spec:
host: application0-presentation...
to:
kind: Service
name: application0
weight: 100
[...]
@barkerd427
The Service matches on the label “deploymentconfig” with the value “application0”.
➜ ~ oc export svc application0
apiVersion: v1
kind: Service
spec:
selector:
deploymentconfig: application0
@barkerd427
The Pod has many labels.
➜ ~ oc export -o yaml po/application0-1-ao16l
apiVersion: v1
kind: Pod
metadata:
labels:
app: application0
deploymentconfig: application0
environment: dev
partition: customerA
release: stable
tier: frontend
[...]
@barkerd427
The Service now matches on the label “tier” with the value “frontend”.
➜ ~ oc export svc application0
apiVersion: v1
kind: Service
spec:
selector:
tier: frontend
@barkerd427
One Route, One Service, Two Applications
Route
Application
Application
Service
Service
@barkerd427
Curling the same Route results in two different applications responding. @barkerd427
The Pod has many labels.
➜ ~ oc export -o yaml po/application0-beta-1-ao16l
apiVersion: v1
kind: Pod
metadata:
labels:
app: application0-beta
deploymentconfig: application0-beta
environment: dev
partition: customerA
release: stable
tier: frontend
[...]
@barkerd427
We’ve deleted application1 and added application0-beta. @barkerd427
ImageStreams
are an image
abstraction
@barkerd427
ImageStreams
● Contains images from:
○ Integrated registry
○ Other ImageStreams
○ External registries
● Automatic event triggers
http://blog.openshift.com
@barkerd427
ImageStreams - Metadata
● Commands
● Entrypoint
● EnvVars
@barkerd427
● Layers
● Labels
● Ports
http://blog.openshift.com
ImageStreams
Architecting the Future: Abstractions and Metadata - KCDC
CoreOS
Operators are
magical
(not really)
@barkerd427
Operators
● Represents human
operational knowledge
in software
● Uses 3rd-party
resources
○ Controller of controllers and
resources
@barkerd427
● Identical model to k8s
controllers
○ OODA Loop
● Not supported in
OpenShift
● CustomResource
Definitions
○ Extends Kubernetes API
● Now Tech Preview!!!
Operators
● Deployed into k8s
cluster
● Interactions through
new API
○ kubectl get prometheuses
○ kubectl get alertmanagers
@barkerd427
● Abstraction around k8s
primitives
○ Users just want to use a MySQL
cluster.
● Complex tasks that can
be performed
○ Rotating credentials, certs, versions,
backups
Architecting the Future: Abstractions and Metadata - KCDC
Architecting the Future: Abstractions and Metadata - KCDC
Deployment
Pipeline’s have
fallen behind
@barkerd427
Pipelines
● Stages
● Steps
● Application
● EnvironmentSet
@barkerd427
● PipelineTemplate
● PipelineConfig
● BuildConfig
● DeployConfig
An Application includes a Pipeline, based on an opinionated PipelineTemplate. These combine as a PipelineConfig.
apiVersion: v1
kind: Application
name: app1
cap:
template:
name: approvedTemplates/Tomcat8.yaml
pipeline:
notifications:
mattermost:
team: cloud
channel: general
on_success: never
on_failure: always
dependencies:
- name: authn
dnsName: authn
- name: key-management
username: reference_to_username
password: reference_to_password
stages:
- name: build
steps:
- action: build
baseImage:
version: 8.0.41
- name: dev
approvers:
- role: app1-dev
steps:
- action: deploy
params:
environment: dev
apiVersion: v1
kind: PipelineTemplate
name: Tomcat8
labels:
type: application
build:
manager: maven
version: latest
builderImage: java8-builder
version: latest
baseImage: tomcat8
version: latest
deploy:
deploymentType: canary
maxUnavailable: 10%
maxSurge: 20%
apiVersion: v1
kind: PipelineConfig
name: app1-pipeline
labels:
type: application
pipeline:
notifications:
mattermost:
team: cloud
channel: general
on_success: never
on_failure: always
dependencies:
- name: authn
dnsName: authn
- name: key-management
username: reference_to_username
password: reference_to_password
stages:
- name: build
steps:
- action: build
manager: maven
builderImage: java8-builder
baseImage: tomcat8
version: 8.0.41
- name: dev
approvers:
- role: app1-dev
steps:
- action: deploy
params:
environment: dev
@barkerd427
An Application and PipelineTemplate also combine to create a DeploymentConfig.
apiVersion: v1
kind: Application
name: app1
cap:
template:
name: approvedTemplates/Tomcat8.yaml
pipeline:
notifications:
mattermost:
team: cloud
channel: general
on_success: never
on_failure: always
dependencies:
- name: authn
dnsName: authn
- name: key-management
username: reference_to_username
password: reference_to_password
stages:
- name: build
steps:
- action: build
baseImage:
version: 8.0.41
- name: dev
approvers:
- role: app1-dev
steps:
- action: deploy
params:
environment: dev
apiVersion: v1
kind: PipelineTemplate
name: Tomcat8
labels:
type: application
build:
manager: maven
version: latest
builderImage: java8-builder
version: latest
baseImage: tomcat8
version: latest
deploy:
deploymentType: canary
maxUnavailable: 10%
maxSurge: 20%
apiVersion: v1
kind: DeploymentConfig
metadata:
name: app1-pipeline
type: application
spec:
replicas: 2
selector:
name: frontend
template: { ... }
triggers:
- type: ConfigChange
- imageChangeParams:
automatic: true
containerNames:
- helloworld
from:
kind: ImageStreamTag
name: hello-openshift:latest
type: ImageChange
strategy:
type: Rolling
@barkerd427
The value of Pipelines
● Abstract audit and compliance
○ Approvals added dynamically
● Trivialities eliminated
○ Tabs vs. spaces
○ Semicolons or not
● Security checks occur early and often
○ Feedback is important
@barkerd427
The value of Pipelines
● Test all the things!
● Nimble security
● Common artifact repositories
○ Restrict dependencies
○ Automated security vulnerability notification
● Standardized/Centralized approval system
● Applications will become secure by default
@barkerd427
Architecting the Future: Abstractions and Metadata - KCDC
Thanks!
Contact me:
Dan Barker
drbarker@dstsystems.com
dan@danbarker.codes
danbarker.codes
@barkerd427

More Related Content

PDF
Architecting the Future: Abstractions and Metadata - BSidesKC
Daniel Barker
 
PDF
Architecting the Future: Abstractions and Metadata - CodeStock
Daniel Barker
 
PDF
Architecting the Future: Abstractions and Metadata - STL SilverLinings
Daniel Barker
 
PDF
Becoming a Plumber: Building Deployment Pipelines - RevConf
Daniel Barker
 
PDF
Becoming A Plumber: Building Deployment Pipelines - LISA17
Daniel Barker
 
PDF
Becoming a Plumber: Building Deployment Pipelines - All Day DevOps
Daniel Barker
 
PDF
Php Conference Brazil - Phalcon Giant Killer
Jackson F. de A. Mafra
 
PPTX
[Part 1] automation of home appliances using raspberry pi – software installa...
Azilen Technologies Pvt. Ltd.
 
Architecting the Future: Abstractions and Metadata - BSidesKC
Daniel Barker
 
Architecting the Future: Abstractions and Metadata - CodeStock
Daniel Barker
 
Architecting the Future: Abstractions and Metadata - STL SilverLinings
Daniel Barker
 
Becoming a Plumber: Building Deployment Pipelines - RevConf
Daniel Barker
 
Becoming A Plumber: Building Deployment Pipelines - LISA17
Daniel Barker
 
Becoming a Plumber: Building Deployment Pipelines - All Day DevOps
Daniel Barker
 
Php Conference Brazil - Phalcon Giant Killer
Jackson F. de A. Mafra
 
[Part 1] automation of home appliances using raspberry pi – software installa...
Azilen Technologies Pvt. Ltd.
 

What's hot (20)

PDF
Modern Release Engineering in a Nutshell - Why Researchers should Care!
Bram Adams
 
PDF
All the Laravel Things – Up & Running to Making $$
Joe Ferguson
 
PDF
Eclipse pdt indigo release review
Giang Nguyễn
 
PDF
What’s new in laravel 9
Katy Slemon
 
PDF
OpenDaylight Developers Experience 1.5: Eclipse Setup, HOT reload, future plans
Michael Vorburger
 
PPTX
Mavenized RCP
Marc Jimenez
 
PDF
Developing PHP Applications Faster
Adam Culp
 
PDF
Dvwkbm lab2 cli1
Saranga Tripathy
 
PDF
Laravel Forge: Hello World to Hello Production
Joe Ferguson
 
PPTX
Phalcon - Giant Killer
Jackson F. de A. Mafra
 
PPTX
PHP Conference - Phalcon hands-on
Jackson F. de A. Mafra
 
PDF
Creating Sentiment Line Chart with Watson
Dev_Events
 
PDF
Openshift cheat rhce_r3v1 rhce
Darnette A
 
PDF
The Bash Dashboard (Or: How to Use Bash for Data Analysis)
Bram Adams
 
PPTX
C++ for the Web
Patrick Charrier
 
PDF
Rational Rhapsody Workflow Integration with Visual Studio
Frank Braun
 
PDF
API Testing following the Test Pyramid
Elias Nogueira
 
PDF
Phalcon / Zephir Introduction at PHPConfTW2013
Rack Lin
 
PPTX
Phalcon 2 - PHP Brazil Conference
Jackson F. de A. Mafra
 
PDF
Patterns and Tools for Database Versioning, Migration, Data Loading and Test ...
Alan Pinstein
 
Modern Release Engineering in a Nutshell - Why Researchers should Care!
Bram Adams
 
All the Laravel Things – Up & Running to Making $$
Joe Ferguson
 
Eclipse pdt indigo release review
Giang Nguyễn
 
What’s new in laravel 9
Katy Slemon
 
OpenDaylight Developers Experience 1.5: Eclipse Setup, HOT reload, future plans
Michael Vorburger
 
Mavenized RCP
Marc Jimenez
 
Developing PHP Applications Faster
Adam Culp
 
Dvwkbm lab2 cli1
Saranga Tripathy
 
Laravel Forge: Hello World to Hello Production
Joe Ferguson
 
Phalcon - Giant Killer
Jackson F. de A. Mafra
 
PHP Conference - Phalcon hands-on
Jackson F. de A. Mafra
 
Creating Sentiment Line Chart with Watson
Dev_Events
 
Openshift cheat rhce_r3v1 rhce
Darnette A
 
The Bash Dashboard (Or: How to Use Bash for Data Analysis)
Bram Adams
 
C++ for the Web
Patrick Charrier
 
Rational Rhapsody Workflow Integration with Visual Studio
Frank Braun
 
API Testing following the Test Pyramid
Elias Nogueira
 
Phalcon / Zephir Introduction at PHPConfTW2013
Rack Lin
 
Phalcon 2 - PHP Brazil Conference
Jackson F. de A. Mafra
 
Patterns and Tools for Database Versioning, Migration, Data Loading and Test ...
Alan Pinstein
 
Ad

Similar to Architecting the Future: Abstractions and Metadata - KCDC (20)

PDF
Architecting the Future: Abstractions and Metadata - GlueCon
Daniel Barker
 
PDF
Architecting The Future - WeRise Women in Technology
Daniel Barker
 
PDF
Architecting the Future: Abstractions and Metadata - All Things Open
Daniel Barker
 
PDF
OpenShift Taiwan Vol.1 Technology Overview
Jason Peng
 
PPTX
Open shift enterprise 3.1 paas on kubernetes
Samuel Terburg
 
PPTX
Interop 2017 - Managing Containers in Production
Brian Gracely
 
PDF
CI/CD Across Multiple Environments
Karl Isenberg
 
PDF
Why do we even have Kubernetes?
Sean Walberg
 
PPTX
Orchestration with Kubernetes
Kunal Kerkar
 
PDF
[WSO2Con Asia 2018] Deploying Applications in K8S and Docker
WSO2
 
PPTX
OpenShift Enterprise 3.1 vs kubernetes
Samuel Terburg
 
PDF
Openbar 7 - Leuven - OpenShift - The Enterprise Container Platform - Piros
Openbar
 
PDF
KubeCon 2017: Kubernetes from Dev to Prod
Subhas Dandapani
 
PDF
Openshift Container Platform: First ItalyMeetup
Giuseppe Bonocore
 
PDF
The Self-Service Developer - GOTOCon CPH
Laszlo Fogas
 
PDF
Rackspace::Solve NYC - The Future of Applications with Ken Cochrane, Engineer...
Rackspace
 
PPTX
Application portability with kubernetes
Oleg Chunikhin
 
PDF
Future of Microservices - Jakub Hadvig
WEBtlak
 
PPTX
Container orchestration and microservices world
Karol Chrapek
 
PDF
Effective Platform Building with Kubernetes. Is K8S new Linux?
Wojciech Barczyński
 
Architecting the Future: Abstractions and Metadata - GlueCon
Daniel Barker
 
Architecting The Future - WeRise Women in Technology
Daniel Barker
 
Architecting the Future: Abstractions and Metadata - All Things Open
Daniel Barker
 
OpenShift Taiwan Vol.1 Technology Overview
Jason Peng
 
Open shift enterprise 3.1 paas on kubernetes
Samuel Terburg
 
Interop 2017 - Managing Containers in Production
Brian Gracely
 
CI/CD Across Multiple Environments
Karl Isenberg
 
Why do we even have Kubernetes?
Sean Walberg
 
Orchestration with Kubernetes
Kunal Kerkar
 
[WSO2Con Asia 2018] Deploying Applications in K8S and Docker
WSO2
 
OpenShift Enterprise 3.1 vs kubernetes
Samuel Terburg
 
Openbar 7 - Leuven - OpenShift - The Enterprise Container Platform - Piros
Openbar
 
KubeCon 2017: Kubernetes from Dev to Prod
Subhas Dandapani
 
Openshift Container Platform: First ItalyMeetup
Giuseppe Bonocore
 
The Self-Service Developer - GOTOCon CPH
Laszlo Fogas
 
Rackspace::Solve NYC - The Future of Applications with Ken Cochrane, Engineer...
Rackspace
 
Application portability with kubernetes
Oleg Chunikhin
 
Future of Microservices - Jakub Hadvig
WEBtlak
 
Container orchestration and microservices world
Karol Chrapek
 
Effective Platform Building with Kubernetes. Is K8S new Linux?
Wojciech Barczyński
 
Ad

More from Daniel Barker (11)

PDF
Make just culture just your culture devopsdays raleigh
Daniel Barker
 
PDF
Getting started with ai for free devopsdays rdu
Daniel Barker
 
PDF
Understanding Risk Can Fund Transformation - DOD Dallas
Daniel Barker
 
PDF
Make Just Culture just your culture
Daniel Barker
 
PDF
Monitoring the right way - OSDC - Ignite
Daniel Barker
 
PDF
Monitoring the right way - DevOpsDays Kiev - Ignite
Daniel Barker
 
PDF
Make Just Culture just your culture
Daniel Barker
 
PDF
5 steps to a devops transformation - OSDC
Daniel Barker
 
PDF
Leading Transformations in FinTech STL SilverLinings
Daniel Barker
 
PDF
The ‘new view’ on human error
Daniel Barker
 
PDF
Elastic jenkins
Daniel Barker
 
Make just culture just your culture devopsdays raleigh
Daniel Barker
 
Getting started with ai for free devopsdays rdu
Daniel Barker
 
Understanding Risk Can Fund Transformation - DOD Dallas
Daniel Barker
 
Make Just Culture just your culture
Daniel Barker
 
Monitoring the right way - OSDC - Ignite
Daniel Barker
 
Monitoring the right way - DevOpsDays Kiev - Ignite
Daniel Barker
 
Make Just Culture just your culture
Daniel Barker
 
5 steps to a devops transformation - OSDC
Daniel Barker
 
Leading Transformations in FinTech STL SilverLinings
Daniel Barker
 
The ‘new view’ on human error
Daniel Barker
 
Elastic jenkins
Daniel Barker
 

Recently uploaded (20)

PDF
The Future of Artificial Intelligence (AI)
Mukul
 
PDF
Structs to JSON: How Go Powers REST APIs
Emily Achieng
 
PPTX
The Future of AI & Machine Learning.pptx
pritsen4700
 
PDF
MASTERDECK GRAPHSUMMIT SYDNEY (Public).pdf
Neo4j
 
PDF
OFFOFFBOX™ – A New Era for African Film | Startup Presentation
ambaicciwalkerbrian
 
PDF
Data_Analytics_vs_Data_Science_vs_BI_by_CA_Suvidha_Chaplot.pdf
CA Suvidha Chaplot
 
PDF
AI Unleashed - Shaping the Future -Starting Today - AIOUG Yatra 2025 - For Co...
Sandesh Rao
 
PDF
Security features in Dell, HP, and Lenovo PC systems: A research-based compar...
Principled Technologies
 
PDF
Accelerating Oracle Database 23ai Troubleshooting with Oracle AHF Fleet Insig...
Sandesh Rao
 
PDF
Trying to figure out MCP by actually building an app from scratch with open s...
Julien SIMON
 
PDF
Responsible AI and AI Ethics - By Sylvester Ebhonu
Sylvester Ebhonu
 
PDF
Using Anchore and DefectDojo to Stand Up Your DevSecOps Function
Anchore
 
PDF
CIFDAQ's Market Wrap : Bears Back in Control?
CIFDAQ
 
PPTX
Simple and concise overview about Quantum computing..pptx
mughal641
 
PDF
The Future of Mobile Is Context-Aware—Are You Ready?
iProgrammer Solutions Private Limited
 
PPTX
Dev Dives: Automate, test, and deploy in one place—with Unified Developer Exp...
AndreeaTom
 
PDF
NewMind AI Weekly Chronicles - July'25 - Week IV
NewMind AI
 
PDF
Peak of Data & AI Encore - Real-Time Insights & Scalable Editing with ArcGIS
Safe Software
 
PPTX
New ThousandEyes Product Innovations: Cisco Live June 2025
ThousandEyes
 
PDF
Automating ArcGIS Content Discovery with FME: A Real World Use Case
Safe Software
 
The Future of Artificial Intelligence (AI)
Mukul
 
Structs to JSON: How Go Powers REST APIs
Emily Achieng
 
The Future of AI & Machine Learning.pptx
pritsen4700
 
MASTERDECK GRAPHSUMMIT SYDNEY (Public).pdf
Neo4j
 
OFFOFFBOX™ – A New Era for African Film | Startup Presentation
ambaicciwalkerbrian
 
Data_Analytics_vs_Data_Science_vs_BI_by_CA_Suvidha_Chaplot.pdf
CA Suvidha Chaplot
 
AI Unleashed - Shaping the Future -Starting Today - AIOUG Yatra 2025 - For Co...
Sandesh Rao
 
Security features in Dell, HP, and Lenovo PC systems: A research-based compar...
Principled Technologies
 
Accelerating Oracle Database 23ai Troubleshooting with Oracle AHF Fleet Insig...
Sandesh Rao
 
Trying to figure out MCP by actually building an app from scratch with open s...
Julien SIMON
 
Responsible AI and AI Ethics - By Sylvester Ebhonu
Sylvester Ebhonu
 
Using Anchore and DefectDojo to Stand Up Your DevSecOps Function
Anchore
 
CIFDAQ's Market Wrap : Bears Back in Control?
CIFDAQ
 
Simple and concise overview about Quantum computing..pptx
mughal641
 
The Future of Mobile Is Context-Aware—Are You Ready?
iProgrammer Solutions Private Limited
 
Dev Dives: Automate, test, and deploy in one place—with Unified Developer Exp...
AndreeaTom
 
NewMind AI Weekly Chronicles - July'25 - Week IV
NewMind AI
 
Peak of Data & AI Encore - Real-Time Insights & Scalable Editing with ArcGIS
Safe Software
 
New ThousandEyes Product Innovations: Cisco Live June 2025
ThousandEyes
 
Automating ArcGIS Content Discovery with FME: A Real World Use Case
Safe Software
 

Architecting the Future: Abstractions and Metadata - KCDC

  • 1. Architecting the Future Abstractions and Metadata Dan Barker @barkerd427 danbarker.codes
  • 3. The current data center is...challenging... RHEL 6.9 Dev RHEL 6.8 Test RHEL 6.6 Prod Dev Test Prod RHEL 6.7 Prod Admin Admin Admin Admin Admin Admin Dev RHEL 6.7 Dev RHEL 6.4 Dev RHEL 6.8 Dev Ubuntu Trusty RHEL 6.9 Dev RHEL 6.6 Dev Ubuntu Trusty RHEL 6.7 Dev RHEL 6.4 Dev RHEL 6.8 Dev Ubuntu Trusty RHEL 6.9 Dev RHEL 6.6 Dev RHEL 6.7 Dev RHEL 6.4 Dev RHEL 6.8 Dev Ubuntu Trusty RHEL 6.9 Dev RHEL 6.6 Dev @barkerd427
  • 5. The new data center is understandable and usable. Developer Access Production Controlled Network Storage Compute Platform Deployment Pipeline RHEL 6.9 App1 RHEL 6.9 App1 RHEL 6.9 App1 RHEL 6.9 App1 RHEL 6.9 App1 RHEL 6.9 App1 RHEL 6.9 App2 RHEL 6.9 App2 RHEL 6.9 App2 RHEL 6.9 App2 RHEL 6.9 App2 RHEL 6.9 App2 @barkerd427
  • 6. Docker - the early ● Docker is an abstraction ○ cgroups ○ Namespaces @barkerd427 ● Not Included ○ Metadata ○ Volumes ○ Secrets ○ Services ○ Network
  • 7. Docker - the latter ● Volumes ● Secrets ● Networks @barkerd427 ● Plugins ● Services ● Labels
  • 10. Kubernetes (k8s) ● PersistentVolumes ● Services ● Pods ● Secrets @barkerd427 ● Ingress ● DaemonSets ● ReplicaSets ● Deployments Now with AES-CBC and Secretbox encryption!!!
  • 12. OpenShift ● Routes > Ingress ● DeploymentConfig > Deployments @barkerd427 ● ImageStream ● BuildConfig
  • 15. Services make your app usable @barkerd427
  • 16. Services ● Identifies pods using label selectors ○ Any label ○ Specific to avoid errant selections ● Passes requests to pods internally ○ Routes and Services are different ● Abstraction for a Route to pass traffic @barkerd427
  • 18. One Route, One Service, One Application Route Service Pod @barkerd427
  • 19. The Route directs to the Service application0 ➜ ~ oc export routes application0 apiVersion: v1 kind: Route [...] spec: host: application0-presentation... to: kind: Service name: application0 weight: 100 [...] @barkerd427
  • 20. The Service matches on the label “deploymentconfig” with the value “application0”. ➜ ~ oc export svc application0 apiVersion: v1 kind: Service spec: selector: deploymentconfig: application0 @barkerd427
  • 21. The Pod has many labels. ➜ ~ oc export -o yaml po/application0-1-ao16l apiVersion: v1 kind: Pod metadata: labels: app: application0 deploymentconfig: application0 environment: dev partition: customerA release: stable tier: frontend [...] @barkerd427
  • 22. The Service now matches on the label “tier” with the value “frontend”. ➜ ~ oc export svc application0 apiVersion: v1 kind: Service spec: selector: tier: frontend @barkerd427
  • 23. One Route, One Service, Two Applications Route Application Application Service Service @barkerd427
  • 24. Curling the same Route results in two different applications responding. @barkerd427
  • 25. The Pod has many labels. ➜ ~ oc export -o yaml po/application0-beta-1-ao16l apiVersion: v1 kind: Pod metadata: labels: app: application0-beta deploymentconfig: application0-beta environment: dev partition: customerA release: stable tier: frontend [...] @barkerd427
  • 26. We’ve deleted application1 and added application0-beta. @barkerd427
  • 28. ImageStreams ● Contains images from: ○ Integrated registry ○ Other ImageStreams ○ External registries ● Automatic event triggers http://blog.openshift.com @barkerd427
  • 29. ImageStreams - Metadata ● Commands ● Entrypoint ● EnvVars @barkerd427 ● Layers ● Labels ● Ports
  • 33. Operators ● Represents human operational knowledge in software ● Uses 3rd-party resources ○ Controller of controllers and resources @barkerd427 ● Identical model to k8s controllers ○ OODA Loop ● Not supported in OpenShift ● CustomResource Definitions ○ Extends Kubernetes API ● Now Tech Preview!!!
  • 34. Operators ● Deployed into k8s cluster ● Interactions through new API ○ kubectl get prometheuses ○ kubectl get alertmanagers @barkerd427 ● Abstraction around k8s primitives ○ Users just want to use a MySQL cluster. ● Complex tasks that can be performed ○ Rotating credentials, certs, versions, backups
  • 38. Pipelines ● Stages ● Steps ● Application ● EnvironmentSet @barkerd427 ● PipelineTemplate ● PipelineConfig ● BuildConfig ● DeployConfig
  • 39. An Application includes a Pipeline, based on an opinionated PipelineTemplate. These combine as a PipelineConfig. apiVersion: v1 kind: Application name: app1 cap: template: name: approvedTemplates/Tomcat8.yaml pipeline: notifications: mattermost: team: cloud channel: general on_success: never on_failure: always dependencies: - name: authn dnsName: authn - name: key-management username: reference_to_username password: reference_to_password stages: - name: build steps: - action: build baseImage: version: 8.0.41 - name: dev approvers: - role: app1-dev steps: - action: deploy params: environment: dev apiVersion: v1 kind: PipelineTemplate name: Tomcat8 labels: type: application build: manager: maven version: latest builderImage: java8-builder version: latest baseImage: tomcat8 version: latest deploy: deploymentType: canary maxUnavailable: 10% maxSurge: 20% apiVersion: v1 kind: PipelineConfig name: app1-pipeline labels: type: application pipeline: notifications: mattermost: team: cloud channel: general on_success: never on_failure: always dependencies: - name: authn dnsName: authn - name: key-management username: reference_to_username password: reference_to_password stages: - name: build steps: - action: build manager: maven builderImage: java8-builder baseImage: tomcat8 version: 8.0.41 - name: dev approvers: - role: app1-dev steps: - action: deploy params: environment: dev @barkerd427
  • 40. An Application and PipelineTemplate also combine to create a DeploymentConfig. apiVersion: v1 kind: Application name: app1 cap: template: name: approvedTemplates/Tomcat8.yaml pipeline: notifications: mattermost: team: cloud channel: general on_success: never on_failure: always dependencies: - name: authn dnsName: authn - name: key-management username: reference_to_username password: reference_to_password stages: - name: build steps: - action: build baseImage: version: 8.0.41 - name: dev approvers: - role: app1-dev steps: - action: deploy params: environment: dev apiVersion: v1 kind: PipelineTemplate name: Tomcat8 labels: type: application build: manager: maven version: latest builderImage: java8-builder version: latest baseImage: tomcat8 version: latest deploy: deploymentType: canary maxUnavailable: 10% maxSurge: 20% apiVersion: v1 kind: DeploymentConfig metadata: name: app1-pipeline type: application spec: replicas: 2 selector: name: frontend template: { ... } triggers: - type: ConfigChange - imageChangeParams: automatic: true containerNames: - helloworld from: kind: ImageStreamTag name: hello-openshift:latest type: ImageChange strategy: type: Rolling @barkerd427
  • 41. The value of Pipelines ● Abstract audit and compliance ○ Approvals added dynamically ● Trivialities eliminated ○ Tabs vs. spaces ○ Semicolons or not ● Security checks occur early and often ○ Feedback is important @barkerd427
  • 42. The value of Pipelines ● Test all the things! ● Nimble security ● Common artifact repositories ○ Restrict dependencies ○ Automated security vulnerability notification ● Standardized/Centralized approval system ● Applications will become secure by default @barkerd427