from code to kubernetes
TRANSCRIPT
![Page 1: From Code to Kubernetes](https://reader034.vdocuments.mx/reader034/viewer/2022051404/58e800e31a28abf13f8b5d0b/html5/thumbnails/1.jpg)
From Code to Kubernetes
![Page 2: From Code to Kubernetes](https://reader034.vdocuments.mx/reader034/viewer/2022051404/58e800e31a28abf13f8b5d0b/html5/thumbnails/2.jpg)
About UsArt Richards
CTO - truckin.io
![Page 4: From Code to Kubernetes](https://reader034.vdocuments.mx/reader034/viewer/2022051404/58e800e31a28abf13f8b5d0b/html5/thumbnails/4.jpg)
Agenda
![Page 5: From Code to Kubernetes](https://reader034.vdocuments.mx/reader034/viewer/2022051404/58e800e31a28abf13f8b5d0b/html5/thumbnails/5.jpg)
● Scenario and Architecture● Technologies● Challenges● Results● Foundations● Infrastructure as Code● Configuration Management● Building and Deployments● Application Debugging using Weavescope● Demo - From code to Kubernetes● Future● QA
![Page 6: From Code to Kubernetes](https://reader034.vdocuments.mx/reader034/viewer/2022051404/58e800e31a28abf13f8b5d0b/html5/thumbnails/6.jpg)
git push
![Page 7: From Code to Kubernetes](https://reader034.vdocuments.mx/reader034/viewer/2022051404/58e800e31a28abf13f8b5d0b/html5/thumbnails/7.jpg)
Scenario and Architecture
![Page 8: From Code to Kubernetes](https://reader034.vdocuments.mx/reader034/viewer/2022051404/58e800e31a28abf13f8b5d0b/html5/thumbnails/8.jpg)
Distributed Teams
![Page 9: From Code to Kubernetes](https://reader034.vdocuments.mx/reader034/viewer/2022051404/58e800e31a28abf13f8b5d0b/html5/thumbnails/9.jpg)
Early stages products
![Page 10: From Code to Kubernetes](https://reader034.vdocuments.mx/reader034/viewer/2022051404/58e800e31a28abf13f8b5d0b/html5/thumbnails/10.jpg)
Greenfield projects
![Page 11: From Code to Kubernetes](https://reader034.vdocuments.mx/reader034/viewer/2022051404/58e800e31a28abf13f8b5d0b/html5/thumbnails/11.jpg)
One man's operations team
Priorities vs Resources
![Page 12: From Code to Kubernetes](https://reader034.vdocuments.mx/reader034/viewer/2022051404/58e800e31a28abf13f8b5d0b/html5/thumbnails/12.jpg)
Deployments Lifecycle
![Page 13: From Code to Kubernetes](https://reader034.vdocuments.mx/reader034/viewer/2022051404/58e800e31a28abf13f8b5d0b/html5/thumbnails/13.jpg)
10+Non-production deployments per day
![Page 14: From Code to Kubernetes](https://reader034.vdocuments.mx/reader034/viewer/2022051404/58e800e31a28abf13f8b5d0b/html5/thumbnails/14.jpg)
8 ProjectsFrontend, Backend API, Android
Development, Test, Staging, Demo and Production
![Page 15: From Code to Kubernetes](https://reader034.vdocuments.mx/reader034/viewer/2022051404/58e800e31a28abf13f8b5d0b/html5/thumbnails/15.jpg)
WeeklyProduction deployments
(mobile, frontend and backend)
![Page 16: From Code to Kubernetes](https://reader034.vdocuments.mx/reader034/viewer/2022051404/58e800e31a28abf13f8b5d0b/html5/thumbnails/16.jpg)
Technologies
![Page 17: From Code to Kubernetes](https://reader034.vdocuments.mx/reader034/viewer/2022051404/58e800e31a28abf13f8b5d0b/html5/thumbnails/17.jpg)
Applications
![Page 18: From Code to Kubernetes](https://reader034.vdocuments.mx/reader034/viewer/2022051404/58e800e31a28abf13f8b5d0b/html5/thumbnails/18.jpg)
Infrastructure
![Page 19: From Code to Kubernetes](https://reader034.vdocuments.mx/reader034/viewer/2022051404/58e800e31a28abf13f8b5d0b/html5/thumbnails/19.jpg)
Challenges
![Page 20: From Code to Kubernetes](https://reader034.vdocuments.mx/reader034/viewer/2022051404/58e800e31a28abf13f8b5d0b/html5/thumbnails/20.jpg)
● CI/CD Pipeline
● Infrastructure as Code
● Isolated Environments (Dev, Test, Demo, Staging, Production)
● Unified orchestrator for builds and deployments processes
● Integrations
● Easy application debugging
● Automation
![Page 21: From Code to Kubernetes](https://reader034.vdocuments.mx/reader034/viewer/2022051404/58e800e31a28abf13f8b5d0b/html5/thumbnails/21.jpg)
Results
![Page 22: From Code to Kubernetes](https://reader034.vdocuments.mx/reader034/viewer/2022051404/58e800e31a28abf13f8b5d0b/html5/thumbnails/22.jpg)
![Page 23: From Code to Kubernetes](https://reader034.vdocuments.mx/reader034/viewer/2022051404/58e800e31a28abf13f8b5d0b/html5/thumbnails/23.jpg)
Foundations
![Page 24: From Code to Kubernetes](https://reader034.vdocuments.mx/reader034/viewer/2022051404/58e800e31a28abf13f8b5d0b/html5/thumbnails/24.jpg)
IaaSCloud Provider
ResourcesNetwork, Instances, IAM, Disk, Registry, Kubernetes Cluster
Software, Packages and ConfigsSalt Master, Salt Minion, Docker, Postgresql and Elasticsearch
Pro
visi
onin
g O
rder
Desired StateMinions, API, Reactor, Integrations
![Page 25: From Code to Kubernetes](https://reader034.vdocuments.mx/reader034/viewer/2022051404/58e800e31a28abf13f8b5d0b/html5/thumbnails/25.jpg)
Let's talk about provisioning
![Page 27: From Code to Kubernetes](https://reader034.vdocuments.mx/reader034/viewer/2022051404/58e800e31a28abf13f8b5d0b/html5/thumbnails/27.jpg)
Infrastructure as Code
![Page 28: From Code to Kubernetes](https://reader034.vdocuments.mx/reader034/viewer/2022051404/58e800e31a28abf13f8b5d0b/html5/thumbnails/28.jpg)
IaaSCloud Provider
ResourcesNetwork, Instances, IAM, Disk, Registry, Kubernetes Cluster
Software, Packages and ConfigsSalt Master, Salt Minion, Docker, Postgresql and Elasticsearch
Pro
visi
onin
g O
rder
Desired StateMinions, API, Reactor, Integrations
![Page 30: From Code to Kubernetes](https://reader034.vdocuments.mx/reader034/viewer/2022051404/58e800e31a28abf13f8b5d0b/html5/thumbnails/30.jpg)
Basic network resources configuration file
variable
● Command line tool (apply, plan, destroy)
● Multiples Providers
● Config based resources
● Usage of Variables
● Dependencies Graph
● Execution Plan
● Resource Creation in Parallel
● Multiples Provisioners
● Detailed Output
dependency
Terraform output
![Page 31: From Code to Kubernetes](https://reader034.vdocuments.mx/reader034/viewer/2022051404/58e800e31a28abf13f8b5d0b/html5/thumbnails/31.jpg)
Configure 'Em AllNetwork, Firewall, Subnetworks, Instances,
Buckets, Disks, Kubernetes Cluster, Services Accounts and IAM
![Page 32: From Code to Kubernetes](https://reader034.vdocuments.mx/reader034/viewer/2022051404/58e800e31a28abf13f8b5d0b/html5/thumbnails/32.jpg)
Configuration Management
![Page 33: From Code to Kubernetes](https://reader034.vdocuments.mx/reader034/viewer/2022051404/58e800e31a28abf13f8b5d0b/html5/thumbnails/33.jpg)
IaaSCloud Provider
ResourcesNetwork, Instances, IAM, Disk, Registry, Kubernetes Cluster
Software, Packages and ConfigsSalt Master, Salt Minion, Docker, Postgresql and Elasticsearch
Pro
visi
onin
g O
rder
Desired StateMinions, API, Reactor, Integrations
![Page 35: From Code to Kubernetes](https://reader034.vdocuments.mx/reader034/viewer/2022051404/58e800e31a28abf13f8b5d0b/html5/thumbnails/35.jpg)
SaltStack Open Sourcehttps://docs.saltstack.com/en/latest/
Master
MinionOperator
MinionPostgresql
MinionBuilder
MinionElastic
G@roles:builder and G@environment:test
![Page 36: From Code to Kubernetes](https://reader034.vdocuments.mx/reader034/viewer/2022051404/58e800e31a28abf13f8b5d0b/html5/thumbnails/36.jpg)
Selectors
Master
MinionBuilder
Executed imperatively via command line or reactively via Salt Reactor.
salt cli selector command
![Page 37: From Code to Kubernetes](https://reader034.vdocuments.mx/reader034/viewer/2022051404/58e800e31a28abf13f8b5d0b/html5/thumbnails/37.jpg)
Salt Pillars"Offer global values that can be distributed to minions"
![Page 38: From Code to Kubernetes](https://reader034.vdocuments.mx/reader034/viewer/2022051404/58e800e31a28abf13f8b5d0b/html5/thumbnails/38.jpg)
![Page 39: From Code to Kubernetes](https://reader034.vdocuments.mx/reader034/viewer/2022051404/58e800e31a28abf13f8b5d0b/html5/thumbnails/39.jpg)
![Page 40: From Code to Kubernetes](https://reader034.vdocuments.mx/reader034/viewer/2022051404/58e800e31a28abf13f8b5d0b/html5/thumbnails/40.jpg)
Salt States"The SLS is a representation of the state in which a system should be in, and is
set up to contain this data in a simple format."
![Page 41: From Code to Kubernetes](https://reader034.vdocuments.mx/reader034/viewer/2022051404/58e800e31a28abf13f8b5d0b/html5/thumbnails/41.jpg)
state ID
modulename.command
arguments
![Page 42: From Code to Kubernetes](https://reader034.vdocuments.mx/reader034/viewer/2022051404/58e800e31a28abf13f8b5d0b/html5/thumbnails/42.jpg)
![Page 43: From Code to Kubernetes](https://reader034.vdocuments.mx/reader034/viewer/2022051404/58e800e31a28abf13f8b5d0b/html5/thumbnails/43.jpg)
Using defined pillars within states
● Introducing the map.jinja file
● Passing pillars values when compiling states
![Page 44: From Code to Kubernetes](https://reader034.vdocuments.mx/reader034/viewer/2022051404/58e800e31a28abf13f8b5d0b/html5/thumbnails/44.jpg)
![Page 45: From Code to Kubernetes](https://reader034.vdocuments.mx/reader034/viewer/2022051404/58e800e31a28abf13f8b5d0b/html5/thumbnails/45.jpg)
Output to MinionParse + Merge
SaltStack Compilation Process
+ =Pillarsdictionaries
Statesjinja2
Low Data
Parse
![Page 46: From Code to Kubernetes](https://reader034.vdocuments.mx/reader034/viewer/2022051404/58e800e31a28abf13f8b5d0b/html5/thumbnails/46.jpg)
Gitfs"The gitfs backend allows Salt to serve files from git repositories."
![Page 47: From Code to Kubernetes](https://reader034.vdocuments.mx/reader034/viewer/2022051404/58e800e31a28abf13f8b5d0b/html5/thumbnails/47.jpg)
push 15s
Master
Gitfs
![Page 48: From Code to Kubernetes](https://reader034.vdocuments.mx/reader034/viewer/2022051404/58e800e31a28abf13f8b5d0b/html5/thumbnails/48.jpg)
Putting all together
![Page 49: From Code to Kubernetes](https://reader034.vdocuments.mx/reader034/viewer/2022051404/58e800e31a28abf13f8b5d0b/html5/thumbnails/49.jpg)
Desired State● 8 VMs
○ Salt Master○ Operator○ Builder○ Postgresql○ Elasticsearch○ 3 Kubernetes nodes
● 2 Persistent Data Disks: 500GB attached to PG and ELS● 1 Kubernetes Cluster● Network
○ Required Firewall Rules○ 2 Subnets
● 2 IAM/Service Accounts: Pull/Push Docker Registry
![Page 50: From Code to Kubernetes](https://reader034.vdocuments.mx/reader034/viewer/2022051404/58e800e31a28abf13f8b5d0b/html5/thumbnails/50.jpg)
Complete Cloud Provision Flow
NetworkFirewall, Subnets, Static IPs,
...
InstancesSalt Master, Salt Minion,
Postgresql, Elasticsearch, Builder, Operator
KubernetesCluster
Nodes, Firewall Rules, K8S Master and Workers
● $ terraform apply
Salt states are applied just after an instance is created, based on its "role" specified in the grains config
Core resources are created during this phase
Creates the initial cluster state based on the number of nodes specified
![Page 51: From Code to Kubernetes](https://reader034.vdocuments.mx/reader034/viewer/2022051404/58e800e31a28abf13f8b5d0b/html5/thumbnails/51.jpg)
![Page 52: From Code to Kubernetes](https://reader034.vdocuments.mx/reader034/viewer/2022051404/58e800e31a28abf13f8b5d0b/html5/thumbnails/52.jpg)
Work is done!
![Page 53: From Code to Kubernetes](https://reader034.vdocuments.mx/reader034/viewer/2022051404/58e800e31a28abf13f8b5d0b/html5/thumbnails/53.jpg)
Google Cloud Admin Panel
![Page 54: From Code to Kubernetes](https://reader034.vdocuments.mx/reader034/viewer/2022051404/58e800e31a28abf13f8b5d0b/html5/thumbnails/54.jpg)
![Page 55: From Code to Kubernetes](https://reader034.vdocuments.mx/reader034/viewer/2022051404/58e800e31a28abf13f8b5d0b/html5/thumbnails/55.jpg)
![Page 57: From Code to Kubernetes](https://reader034.vdocuments.mx/reader034/viewer/2022051404/58e800e31a28abf13f8b5d0b/html5/thumbnails/57.jpg)
Kubernetes Dashboard
![Page 58: From Code to Kubernetes](https://reader034.vdocuments.mx/reader034/viewer/2022051404/58e800e31a28abf13f8b5d0b/html5/thumbnails/58.jpg)
![Page 59: From Code to Kubernetes](https://reader034.vdocuments.mx/reader034/viewer/2022051404/58e800e31a28abf13f8b5d0b/html5/thumbnails/59.jpg)
![Page 60: From Code to Kubernetes](https://reader034.vdocuments.mx/reader034/viewer/2022051404/58e800e31a28abf13f8b5d0b/html5/thumbnails/60.jpg)
Show me the flow!
![Page 61: From Code to Kubernetes](https://reader034.vdocuments.mx/reader034/viewer/2022051404/58e800e31a28abf13f8b5d0b/html5/thumbnails/61.jpg)
Salt API
https
http
s
ssh
Builder
Operator
runnersreactor
Event Hubhttps
![Page 62: From Code to Kubernetes](https://reader034.vdocuments.mx/reader034/viewer/2022051404/58e800e31a28abf13f8b5d0b/html5/thumbnails/62.jpg)
Building and Deploying
![Page 63: From Code to Kubernetes](https://reader034.vdocuments.mx/reader034/viewer/2022051404/58e800e31a28abf13f8b5d0b/html5/thumbnails/63.jpg)
Kubernetes Objects"Kubernetes Objects are persistent entities in the Kubernetes system. Kubernetes uses these entities to represent the state of your cluster."
![Page 64: From Code to Kubernetes](https://reader034.vdocuments.mx/reader034/viewer/2022051404/58e800e31a28abf13f8b5d0b/html5/thumbnails/64.jpg)
Kubernetes objects
● Abstracts: deployments, services, replica sets, ingress, ...
● Generated on the fly by Salt using templates
● Final .yaml file compiled including pillars and arguments
● $ kubectl apply -f mysite-development.yaml
● Garbage collector
![Page 65: From Code to Kubernetes](https://reader034.vdocuments.mx/reader034/viewer/2022051404/58e800e31a28abf13f8b5d0b/html5/thumbnails/65.jpg)
deploymentV1.yaml
![Page 66: From Code to Kubernetes](https://reader034.vdocuments.mx/reader034/viewer/2022051404/58e800e31a28abf13f8b5d0b/html5/thumbnails/66.jpg)
Builder
1 2
3
4 5
67
8
Code to Image FlowRegistry
Reactor
push
state.apply
notifynotify
notify
push notify
![Page 67: From Code to Kubernetes](https://reader034.vdocuments.mx/reader034/viewer/2022051404/58e800e31a28abf13f8b5d0b/html5/thumbnails/67.jpg)
Operator
Kubernetes Deployment Flow
Registry
Reactor (Post Build)
Pullkubectlstate.apply12 4
notify3
5
notify6
![Page 69: From Code to Kubernetes](https://reader034.vdocuments.mx/reader034/viewer/2022051404/58e800e31a28abf13f8b5d0b/html5/thumbnails/69.jpg)
Build
Build
![Page 70: From Code to Kubernetes](https://reader034.vdocuments.mx/reader034/viewer/2022051404/58e800e31a28abf13f8b5d0b/html5/thumbnails/70.jpg)
Rollback
![Page 71: From Code to Kubernetes](https://reader034.vdocuments.mx/reader034/viewer/2022051404/58e800e31a28abf13f8b5d0b/html5/thumbnails/71.jpg)
Application Debugginghttps://www.weave.works/products/weave-scope/
![Page 72: From Code to Kubernetes](https://reader034.vdocuments.mx/reader034/viewer/2022051404/58e800e31a28abf13f8b5d0b/html5/thumbnails/72.jpg)
![Page 73: From Code to Kubernetes](https://reader034.vdocuments.mx/reader034/viewer/2022051404/58e800e31a28abf13f8b5d0b/html5/thumbnails/73.jpg)
![Page 74: From Code to Kubernetes](https://reader034.vdocuments.mx/reader034/viewer/2022051404/58e800e31a28abf13f8b5d0b/html5/thumbnails/74.jpg)
![Page 75: From Code to Kubernetes](https://reader034.vdocuments.mx/reader034/viewer/2022051404/58e800e31a28abf13f8b5d0b/html5/thumbnails/75.jpg)
![Page 76: From Code to Kubernetes](https://reader034.vdocuments.mx/reader034/viewer/2022051404/58e800e31a28abf13f8b5d0b/html5/thumbnails/76.jpg)
DemoLive from code to Kubernetes!
![Page 77: From Code to Kubernetes](https://reader034.vdocuments.mx/reader034/viewer/2022051404/58e800e31a28abf13f8b5d0b/html5/thumbnails/77.jpg)
FutureWhat must be improved?
● Error Handling● Credentials Management● Logging and Monitoring● On Demand Environments● Terraform File Refactoring● Implement Production● Rollout Deployments ● Postgresql Cluster● Elasticsearch Cluster● ...
![Page 78: From Code to Kubernetes](https://reader034.vdocuments.mx/reader034/viewer/2022051404/58e800e31a28abf13f8b5d0b/html5/thumbnails/78.jpg)
Wrap upWhat I've seen so far?
● Automated provision
● Infrastructure as Code
● Event driven environment
● Fast delivery cycle
● Isolated environments
● Application Debugging
● ChatOps
![Page 79: From Code to Kubernetes](https://reader034.vdocuments.mx/reader034/viewer/2022051404/58e800e31a28abf13f8b5d0b/html5/thumbnails/79.jpg)
Final Words
![Page 80: From Code to Kubernetes](https://reader034.vdocuments.mx/reader034/viewer/2022051404/58e800e31a28abf13f8b5d0b/html5/thumbnails/80.jpg)
Doesn't have to be perfect from day 0!
![Page 81: From Code to Kubernetes](https://reader034.vdocuments.mx/reader034/viewer/2022051404/58e800e31a28abf13f8b5d0b/html5/thumbnails/81.jpg)
Pick up the right people
"When you get into one of these groups, there's only a couple of ways you can get out: one is death, the other is mental institutions..." - Devops Engineer testimonial
![Page 82: From Code to Kubernetes](https://reader034.vdocuments.mx/reader034/viewer/2022051404/58e800e31a28abf13f8b5d0b/html5/thumbnails/82.jpg)
LinksSaltstack - https://saltstack.com
Salt States - https://docs.saltstack.com/en/latest/topics/tutorials/starting_states.html
Salt Pillars - https://docs.saltstack.com/en/latest/topics/pillar/
Terraform - https://www.terraform.io/intro/index.html
Weavescope - https://www.weave.works/products/weave-scope
Kubernetesio - http://kubernetes.io
Jenkins CI - https://jenkins.io
Docker - https://docker.com
Google Cloud Platform - cloud.google.com
GCP Calculator - https://cloud.google.com/products/calculator/
![Page 83: From Code to Kubernetes](https://reader034.vdocuments.mx/reader034/viewer/2022051404/58e800e31a28abf13f8b5d0b/html5/thumbnails/83.jpg)
Danke Schön!
![Page 84: From Code to Kubernetes](https://reader034.vdocuments.mx/reader034/viewer/2022051404/58e800e31a28abf13f8b5d0b/html5/thumbnails/84.jpg)
Questions?