Kubernetes and Docker are two of the top open source projects, and they’re built around abstractions and metadata. These two concepts are the key to architecting in the future. Come with me as I dig a little deeper into these concepts within k8s and Docker and provide some examples from my own work.
Report
Share
Report
Share
1 of 48
Download to read offline
More Related Content
Architecting the Future: Abstractions and Metadata - All Things Open
4. The current data center is...challenging...
RHEL
7.4
Dev
RHEL
7.3
Test
RHEL
7.1
Prod
Dev Test Prod
RHEL
7.2
Prod
Admin Admin Admin Admin Admin Admin
Dev
RHEL
7.2
Dev
RHEL
7.1
Dev
RHEL
7.3
Dev
Ubuntu
Trusty
RHEL
7.4
Dev
RHEL
6.6
Dev
Ubuntu
Trusty
RHEL
7.3
Dev
RHEL
7.4
Dev
RHEL
7.2
Dev
Ubuntu
Trusty
RHEL
6.9
Dev
RHEL
7.1
Dev
RHEL
7.4
Dev
RHEL
7.1
Dev
RHEL
7.3
Dev
Ubuntu
Trusty
RHEL
6.9
Dev
RHEL
7.2
Dev
@barkerd427
6. The new data center is understandable and usable.
Developer Access Production Controlled
Network
Storage
Compute
Platform
Deployment Pipeline
RHEL
7.4
App1
RHEL
7.4
App1
RHEL
7.4
App1
RHEL
7.4
App1
RHEL
7.4
App1
RHEL
7.4
App1
RHEL
7.4
App2
RHEL
7.4
App2
RHEL
7.4
App2
RHEL
7.4
App2
RHEL
7.4
App2
RHEL
7.4
App2
@barkerd427
7. Docker - the early
● Docker is an
abstraction
○ cgroups
○ Namespaces
@barkerd427
● Not Included
○ Metadata
○ Volumes
○ Secrets
○ Services
○ Network
23. 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 in Beta!!!
24. 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
28. Istio
● Service Mesh
○ Traffic Management
○ Observability
○ Policy Enforcement
○ Service Identity and Security
● Kubernetes support and limited VM support
33. 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
34. 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
38. 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
40. One Route, One Service, One Application
Route
Service
Pod
@barkerd427
41. 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
42. The Service matches on the label “deploymentconfig” with the value “application0”.
➜ ~ oc export svc application0
apiVersion: v1
kind: Service
spec:
selector:
deploymentconfig: application0
@barkerd427
43. 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
44. 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
45. One Route, One Service, Two Applications
Route
Application
Application
Service
Service
@barkerd427
46. Curling the same Route results in two different applications responding. @barkerd427
47. 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