SlideShare a Scribd company logo
Copyright @ 2019 JFrog - All rights reserved
Kubernetes is hard!
Lessons learned taking our apps
to Kubernetes
Eldad Assis | DevOps Architect | JFrog
Copyright @ 2019 JFrog - All rights reserved. ALL TOGETHER NOW!
Me
Email: eldada@jfrog.com
Twitter: @eldadak
LinkedIn: Eldad Assis
What I do
- I (try to) solve problems @ JFrog
- DevOps Architect
- Bringing Dev and Ops closer for over 15 years
- Doing CI/CD since the turn of the century
Copyright @ 2019 JFrog - All rights reserved. ALL TOGETHER NOW!
● Docker
Containers
● Kubernetes
An open-source system for automating deployment, scaling, and
management of containerized applications.
No deep diving. No Demo… sorry
Come see me after the talk for more!
For this talk, I assume you know a bit
Recommended knowledge
Copyright @ 2019 JFrog - All rights reserved. ALL TOGETHER NOW!
1. I need a running environment. Now!
a. Developers, QA, Support, Product Managers, Solution… anyone!
2. Per branch CI/CD
a. Full CI to Integrate my branch with other products development
branches
3. Better utilize our resources for dev and production
4. Support a new distribution for JFrog products
Why? (The problems we wanted to solve)
The journey to Kubernetes begins...
Copyright @ 2019 JFrog - All rights reserved. ALL TOGETHER NOW!
Why? (Taking containers to production)
Docker in development vs production
Docker container Docker container
Networking
Security
Monitoring
Logging
Auto scaling
Auto healing
Development
Production
Copyright @ 2019 JFrog - All rights reserved. ALL TOGETHER NOW!
● Start small
● Get the application ready before jumping into Kubernetes
● Security - control what’s running in your cluster
● Limits
● Health probes
● Visibility - usable and accessible monitoring and logging systems
● Spread the word and work with the community!
The End
What you should take from here
Copyright @ 2019 JFrog - All rights reserved. ALL TOGETHER NOW!
Kubernetes - the myth
ZZZZ….
Copyright @ 2019 JFrog - All rights reserved. ALL TOGETHER NOW!
Kubernetes - the reality
Hmmm….
Copyright @ 2019 JFrog - All rights reserved. ALL TOGETHER NOW!
1. See a tweet on a new technology! (WOW - THIS IS COOL!)
2. See video showing how easy it is (LOOKS EASY!)
3. Try running it yourself (HMM… )
4. Fail miserably (WOW - THIS IS HARD!)
5. Feel stupid
6. Try again (GO TO 3)
How I started
A recipe for a successful new technology adoption
Copyright @ 2019 JFrog - All rights reserved. ALL TOGETHER NOW!
● Start with a small application example (nginx hello world)
● Use existing demos
○ Understand it. What each line in the yaml actually means
● Set a minimal goal for getting your app to run in Kubernetes
● Get comfortable before you move on
○ Start with managed K8s for easy setup (AKS, EKS, GKE)
Where should I start?
Start small!
Copyright @ 2019 JFrog - All rights reserved. ALL TOGETHER NOW!
A lot has to be done on your application before you
can comfortably run it in Kubernetes
Here are some key points to consider when planning
your move to Kubernetes
Start with the application!
Is your application ready to run in Kubernetes?
Copyright @ 2019 JFrog - All rights reserved. ALL TOGETHER NOW!
● Logging
○ STDOUT/STDERR
○ Handling multiple log files
● Data Persistency
○ What kind of data needs persistency (if at all)?
● Proper handling of termination signals to init a proper shutdown
○ Controlled shutdown of the application
○ Easier recovery (after a controlled shutdown)
● Survive a restart
○ Managing leftovers from previous run
Is your app ready for Kubernetes?
It’s not just pushing it to Docker...
Copyright @ 2019 JFrog - All rights reserved. ALL TOGETHER NOW!
● Improve durability and availability
● Support running multiple instances of your application with load balancing between them
○ Scaling up and down will be easy (horizontal scaling)
● Rolling upgrades for zero downtime
○ Backward compatibility
● Zero service unavailability due to pod rescheduling
○ Cluster scaling (down)
○ Pod evicted or crashed
○ Unplanned outage of a node
Is your app ready for Kubernetes?
High availability as the new default!
Copyright @ 2019 JFrog - All rights reserved. ALL TOGETHER NOW!
I. Codebase - One codebase tracked in revision control, many deploys
II. Dependencies - Explicitly declare and isolate dependencies
III. Config - Store config in the environment
IV. Backing services - Treat backing services as attached resources
V. Build, release, run - Strictly separate build and run stages
VI. Processes - Execute the app as one or more stateless processes
Is your app ready for Kubernetes?
The Twelve-Factor App (https://12factor.net/)
VII. Port binding - Export services via port binding
VIII. Concurrency - Scale out via the process model
IX. Disposability - Maximize robustness with fast startup and graceful shutdown
X. Dev/prod parity - Keep development, staging, and production as similar as possible
XI. Logs - Treat logs as event streams
XII. Admin processes - Run admin/management tasks as one-off processes
Copyright @ 2019 JFrog - All rights reserved. ALL TOGETHER NOW!
● Your application is rarely the only thing in its pod
○ OS packages, OSS libs, 3rd party processes
● Security vulnerabilities
● Do you use public images from unknown sources?
● FOSS licenses compliance
Security
What’s running in your cluster?
Copyright @ 2019 JFrog - All rights reserved. ALL TOGETHER NOW!
Once your application is ready, let’s talk about to how to properly
manage your applications run-time and configuration in Kubernetes
And now - Kubernetes
Properly running in Kubernetes
Copyright @ 2019 JFrog - All rights reserved. ALL TOGETHER NOW!
● Pod limits. Always!
● The app inside might need its own limits. For example:
○ Java apps
■ Limit the java process with `-Xms=1g -Xmx=2g`
■ Pod memory limit should be higher than Xmx
○ RabbitMQ
■ [rabbitmq.conf]
total_memory_available_override_value = 1GB
○ MongoDB
■ --wiredTigerCacheSizeGB=1
Know your limits
There might be more than you know….
…
resources:
requests:
memory: "1Gi"
cpu: "100m"
limits:
memory: "2Gi"
cpu: "250m"
...
Copyright @ 2019 JFrog - All rights reserved. ALL TOGETHER NOW!
● The total sum of limits on a node can be way over 100%
● This allows for resource sharing between pods
● Pods will crash! Nodes will crash!
● See out of resources handling by Kubernetes
● Be prepared
○ Think about the requested and limits values
○ Spread your application across nodes using multiple
replicas (HA)
○ Use pods priority and preemption to take control
Know your limits - don’t overload
There might be more than you know….
…
resources:
requests:
memory: "64Mi"
cpu: "20m"
limits:
memory: "2Gi"
cpu: "4"
...
Copyright @ 2019 JFrog - All rights reserved. ALL TOGETHER NOW!
● Your application must have a reliable metric for health
● readinessProbe
○ Is the app ready to start serving
● livenessProbe
○ Is the app good to continue serving
● Types
○ Exec - return 0 on success
○ Http - return < 400 on success
○ Tcp - succeed to open a socket on a given port
● For complex checks, write a script and use the exec probe
Know your app’s health
Application’s readiness and health
…
readinessProbe:
httpGet:
path: /api/system/health
port: 8080
…
livenessProbe:
exec:
command:
- mongo
- --eval
- "db.adminCommand('ping')"
…
livenessProbe:
tcpSocket:
port: 5672
…
Copyright @ 2019 JFrog - All rights reserved. ALL TOGETHER NOW!
● Init Containers - run before main container
○ Prepare storage
○ Setup configuration
● Sidecar containers - run alongside main container
○ Maintenance
○ Log collection
○ Monitoring
○ Proxy
Multiple containers in a Pod
When a single container is not enough
Application pod example.
Multiple artifactory logs forwarded by a
Fluentbit container to a log aggregator.
Pod
Application
container
Fluentbit
container
Logs
Log
collector
Copyright @ 2019 JFrog - All rights reserved. ALL TOGETHER NOW!
● Your application is made up of multiple components
○ Each represented as a yaml file or snippet
● Versioning of an application that’s made up of several yaml files is challenging
● Having all configuration in the yaml files is great, but
○ How can I use the same yaml for different environments?
■ Local (minikube)
■ Dev cluster
■ Production
● Rolling back to earlier versions of the application
Managing an application’s lifecycle
The static nature of the yaml descriptors is challenging
Copyright @ 2019 JFrog - All rights reserved. ALL TOGETHER NOW!
● https://helm.sh/
● Helm is the package manager for Kubernetes. Like ‘yum’ for
CentOS/RedHat
● Describes the whole application in a single package - helm
chart (template yamls)
● Default configuration values (values.yaml)
● Single version for every chart (Chart.yaml)
Here comes Helm!
Dynamic control over your application’s deployment
Copyright @ 2019 JFrog - All rights reserved. ALL TOGETHER NOW!
● Use same chart for dev, staging and production!
○ Each environment’s config managed in its own copy of values.yaml
that is version controlled (values-stg.yaml, values-prod.yaml)
○ The default values.yaml should be for dev or local, so a developer can
use it locally without hassle
○ Everything is configurable!
● External charts as requirements (dependencies)
○ 3rd parties like databases
Helm - YES!
Use same chart in all environments
Copyright @ 2019 JFrog - All rights reserved. ALL TOGETHER NOW!
Helm - YES! YES!
Useful helm commands for understanding what the helm is going on...
# Lint your chart for errors and recommendations
$ helm lint <chart path>
# Download a chart for local viewing
$ helm fetch <chart>
# Get a release (application already deployed with helm) actual configuration
$ helm get <release>
# Get the status of all the resources included in a release
$ helm status <release>
# Get the actual resolved configuration without deploying anything
$ helm template <chart>
$ helm install --debug --dry-run <chart>
# Test your release (need to write test pods in your chart)
$ helm test <release>
Copyright @ 2019 JFrog - All rights reserved. ALL TOGETHER NOW!
More Helm charts
Find existing charts
Official Helm charts hub
https://hub.helm.sh/
Copyright @ 2019 JFrog - All rights reserved. ALL TOGETHER NOW!
● No more “ssh to the server and get me the logs”!
● Developers should not need kubectl access to debug their
applications
● Provide your Dev and Ops easy and reliable data
○ Monitoring
○ Logging
● Managed solutions provide OOB tooling
Visibility in Kubernetes?
We are not in Kansas anymore...
Copyright @ 2019 JFrog - All rights reserved. ALL TOGETHER NOW!
Dashboard for nodes
and pods
* Prometheus
* Grafana
Visibility in Kubernetes?
Monitoring
Copyright @ 2019 JFrog - All rights reserved. ALL TOGETHER NOW!
Logs from all pods
EFK stack
* Fluentd
* ElasticSearch
* Kibana
Visibility in Kubernetes?
Logging
Copyright @ 2019 JFrog - All rights reserved. ALL TOGETHER NOW!
Use with your CI
Plug your CI/CD to a Kubernetes cluster for easy environment deployment
Copyright @ 2019 JFrog - All rights reserved. ALL TOGETHER NOW!
● CI/CD for our products using Kubernetes
○ Using internal dev versions with our official Helm charts
○ On demand, fully isolated environment per branch per developer
○ 100’s of custom testing environments a week made up of ~50+ services
● Some of our cloud based applications already running on K8s
○ Internal and external
● Official JFrog Helm charts for all our products
JFrog and Kubernetes
What are we doing with Kubernetes?
Copyright @ 2019 JFrog - All rights reserved. ALL TOGETHER NOW!
● You are not the first one to stumble on that particular problem
● It’s as if you have more developers in your team
● Fast turnaround
● Examples
○ RabbitMQ HA
○ MongoDB (Bitnami)
The community
Use already tested and managed helm charts
Copyright @ 2019 JFrog - All rights reserved. ALL TOGETHER NOW!
● Start small
● Get the application ready before jumping into Kubernetes
● Security - control what’s running in your cluster
● Limits
● Health probes
● Visibility - usable and accessible monitoring and logging systems
● Spread the word and work with the community!
The (real) End
What you should take from here
Copyright @ 2019 JFrog - All rights reserved. ALL TOGETHER NOW!
Smooth sailing...
Copyright © 2018 JFrog. All Rights Reserved | www.swampup.jfrog.com
Copyright @ 2019 JFrog - All rights reserved. ALL TOGETHER NOW!
Be Good!
Questions?

More Related Content

What's hot

How Vanguard Got to a CD-CD World by Craig Schwarzwald
How Vanguard Got to a CD-CD World by Craig SchwarzwaldHow Vanguard Got to a CD-CD World by Craig Schwarzwald
How Vanguard Got to a CD-CD World by Craig Schwarzwald
Sauce Labs
 
Cutting Edge on Development Methodologies in IT
Cutting Edge on Development Methodologies in ITCutting Edge on Development Methodologies in IT
Cutting Edge on Development Methodologies in IT
Andrea Tino
 
Scrum with VS2010
Scrum with VS2010  Scrum with VS2010
Scrum with VS2010
Clemens Reijnen
 
An introduction to DevOps
An introduction to DevOpsAn introduction to DevOps
An introduction to DevOps
Andrea Tino
 
Test Driven Design - GDG DevFest Istanbul 2016
Test Driven Design - GDG DevFest Istanbul 2016Test Driven Design - GDG DevFest Istanbul 2016
Test Driven Design - GDG DevFest Istanbul 2016
Lemi Orhan Ergin
 
How to Measure Success in Continuous Testing by Fernando Vidal and Amir Rozen...
How to Measure Success in Continuous Testing by Fernando Vidal and Amir Rozen...How to Measure Success in Continuous Testing by Fernando Vidal and Amir Rozen...
How to Measure Success in Continuous Testing by Fernando Vidal and Amir Rozen...
Sauce Labs
 
How to Organize Game Developers With Different Planning Needs
How to Organize Game Developers With Different Planning NeedsHow to Organize Game Developers With Different Planning Needs
How to Organize Game Developers With Different Planning Needs
Perforce
 
Continuous Delivery in the World of Enterprise PHP
Continuous Delivery in the World of Enterprise PHPContinuous Delivery in the World of Enterprise PHP
Continuous Delivery in the World of Enterprise PHP
Great Wide Open
 
Scaling at kudo what we have learned along the way
Scaling at kudo what we have learned along the wayScaling at kudo what we have learned along the way
Scaling at kudo what we have learned along the way
Panji Gautama
 
What is quality, and how do we build it in
What is quality, and how do we build it in What is quality, and how do we build it in
What is quality, and how do we build it in
Maryam Umar
 
Agile software development compfest 13
Agile software development compfest 13Agile software development compfest 13
Agile software development compfest 13
Panji Gautama
 
TechTalk 2021: Peningkatan Performa Software Delivery dengan CI/CD
TechTalk 2021: Peningkatan Performa Software Delivery dengan CI/CDTechTalk 2021: Peningkatan Performa Software Delivery dengan CI/CD
TechTalk 2021: Peningkatan Performa Software Delivery dengan CI/CD
DicodingEvent
 
Overview the Challenges and Limitations of Android App Automation with Espres...
Overview the Challenges and Limitations of Android App Automation with Espres...Overview the Challenges and Limitations of Android App Automation with Espres...
Overview the Challenges and Limitations of Android App Automation with Espres...
Sauce Labs
 
Agile - A Super Quick Introduction
Agile - A Super Quick IntroductionAgile - A Super Quick Introduction
Agile - A Super Quick Introduction
Thiago Leych
 
Our Journey: from Waterfall to Agile to DevOps
Our Journey: from Waterfall to Agile to DevOpsOur Journey: from Waterfall to Agile to DevOps
Our Journey: from Waterfall to Agile to DevOps
Andrea Tino
 
Agile+DevOps - do we understand it?
Agile+DevOps - do we understand it?Agile+DevOps - do we understand it?
Agile+DevOps - do we understand it?
toamitkumar
 
How To Review The Sprints Efficiently
How To Review The Sprints EfficientlyHow To Review The Sprints Efficiently
How To Review The Sprints Efficiently
Lemi Orhan Ergin
 
Visual Studio Team Services Release Management Overview
Visual Studio Team Services Release Management OverviewVisual Studio Team Services Release Management Overview
Visual Studio Team Services Release Management Overview
Himanshu Desai
 
Working with Agile technologies and SCRUM
Working with Agile technologies and SCRUMWorking with Agile technologies and SCRUM
Working with Agile technologies and SCRUM
Andrea Tino
 
How to Do Code Reviews at Massive Scale For DevOps
How to Do Code Reviews at Massive Scale For DevOpsHow to Do Code Reviews at Massive Scale For DevOps
How to Do Code Reviews at Massive Scale For DevOps
Perforce
 

What's hot (20)

How Vanguard Got to a CD-CD World by Craig Schwarzwald
How Vanguard Got to a CD-CD World by Craig SchwarzwaldHow Vanguard Got to a CD-CD World by Craig Schwarzwald
How Vanguard Got to a CD-CD World by Craig Schwarzwald
 
Cutting Edge on Development Methodologies in IT
Cutting Edge on Development Methodologies in ITCutting Edge on Development Methodologies in IT
Cutting Edge on Development Methodologies in IT
 
Scrum with VS2010
Scrum with VS2010  Scrum with VS2010
Scrum with VS2010
 
An introduction to DevOps
An introduction to DevOpsAn introduction to DevOps
An introduction to DevOps
 
Test Driven Design - GDG DevFest Istanbul 2016
Test Driven Design - GDG DevFest Istanbul 2016Test Driven Design - GDG DevFest Istanbul 2016
Test Driven Design - GDG DevFest Istanbul 2016
 
How to Measure Success in Continuous Testing by Fernando Vidal and Amir Rozen...
How to Measure Success in Continuous Testing by Fernando Vidal and Amir Rozen...How to Measure Success in Continuous Testing by Fernando Vidal and Amir Rozen...
How to Measure Success in Continuous Testing by Fernando Vidal and Amir Rozen...
 
How to Organize Game Developers With Different Planning Needs
How to Organize Game Developers With Different Planning NeedsHow to Organize Game Developers With Different Planning Needs
How to Organize Game Developers With Different Planning Needs
 
Continuous Delivery in the World of Enterprise PHP
Continuous Delivery in the World of Enterprise PHPContinuous Delivery in the World of Enterprise PHP
Continuous Delivery in the World of Enterprise PHP
 
Scaling at kudo what we have learned along the way
Scaling at kudo what we have learned along the wayScaling at kudo what we have learned along the way
Scaling at kudo what we have learned along the way
 
What is quality, and how do we build it in
What is quality, and how do we build it in What is quality, and how do we build it in
What is quality, and how do we build it in
 
Agile software development compfest 13
Agile software development compfest 13Agile software development compfest 13
Agile software development compfest 13
 
TechTalk 2021: Peningkatan Performa Software Delivery dengan CI/CD
TechTalk 2021: Peningkatan Performa Software Delivery dengan CI/CDTechTalk 2021: Peningkatan Performa Software Delivery dengan CI/CD
TechTalk 2021: Peningkatan Performa Software Delivery dengan CI/CD
 
Overview the Challenges and Limitations of Android App Automation with Espres...
Overview the Challenges and Limitations of Android App Automation with Espres...Overview the Challenges and Limitations of Android App Automation with Espres...
Overview the Challenges and Limitations of Android App Automation with Espres...
 
Agile - A Super Quick Introduction
Agile - A Super Quick IntroductionAgile - A Super Quick Introduction
Agile - A Super Quick Introduction
 
Our Journey: from Waterfall to Agile to DevOps
Our Journey: from Waterfall to Agile to DevOpsOur Journey: from Waterfall to Agile to DevOps
Our Journey: from Waterfall to Agile to DevOps
 
Agile+DevOps - do we understand it?
Agile+DevOps - do we understand it?Agile+DevOps - do we understand it?
Agile+DevOps - do we understand it?
 
How To Review The Sprints Efficiently
How To Review The Sprints EfficientlyHow To Review The Sprints Efficiently
How To Review The Sprints Efficiently
 
Visual Studio Team Services Release Management Overview
Visual Studio Team Services Release Management OverviewVisual Studio Team Services Release Management Overview
Visual Studio Team Services Release Management Overview
 
Working with Agile technologies and SCRUM
Working with Agile technologies and SCRUMWorking with Agile technologies and SCRUM
Working with Agile technologies and SCRUM
 
How to Do Code Reviews at Massive Scale For DevOps
How to Do Code Reviews at Massive Scale For DevOpsHow to Do Code Reviews at Massive Scale For DevOps
How to Do Code Reviews at Massive Scale For DevOps
 

Similar to Kubernetes is Hard! Lessons Learned Taking Our Apps to Kubernetes by Eldad Assis

Kubernetes is hard! Lessons learned taking our apps to Kubernetes - Eldad Ass...
Kubernetes is hard! Lessons learned taking our apps to Kubernetes - Eldad Ass...Kubernetes is hard! Lessons learned taking our apps to Kubernetes - Eldad Ass...
Kubernetes is hard! Lessons learned taking our apps to Kubernetes - Eldad Ass...
Cloud Native Day Tel Aviv
 
Terraform: Tales from the Trenches
Terraform: Tales from the TrenchesTerraform: Tales from the Trenches
Terraform: Tales from the Trenches
Robert Fox
 
Update Strategies for the Edge, by Kat Cosgrove
Update Strategies for the Edge, by Kat CosgroveUpdate Strategies for the Edge, by Kat Cosgrove
Update Strategies for the Edge, by Kat Cosgrove
Cloud Native Day Tel Aviv
 
Node.js Deeper Dive
Node.js Deeper DiveNode.js Deeper Dive
Node.js Deeper Dive
Justin Reock
 
OSDC 2019 | Introducing Kudo – Kubernetes Operators the easy way by Matt Jarvis
OSDC 2019 | Introducing Kudo – Kubernetes Operators the easy way by Matt JarvisOSDC 2019 | Introducing Kudo – Kubernetes Operators the easy way by Matt Jarvis
OSDC 2019 | Introducing Kudo – Kubernetes Operators the easy way by Matt Jarvis
NETWAYS
 
Extending Android's Platform Toolsuite
Extending Android's Platform ToolsuiteExtending Android's Platform Toolsuite
Extending Android's Platform Toolsuite
Opersys inc.
 
Is Android the New King of Embedded OSes at Embedded World 2014
Is Android the New King of Embedded OSes at Embedded World 2014Is Android the New King of Embedded OSes at Embedded World 2014
Is Android the New King of Embedded OSes at Embedded World 2014
Opersys inc.
 
Rejekts 24 EU No GitOps Pain, No Platform Gain
Rejekts 24 EU No GitOps Pain, No Platform GainRejekts 24 EU No GitOps Pain, No Platform Gain
Rejekts 24 EU No GitOps Pain, No Platform Gain
Łukasz Piątkowski
 
Randstad Docker meetup - Serverless
Randstad Docker meetup - ServerlessRandstad Docker meetup - Serverless
Randstad Docker meetup - Serverless
David Delabassee
 
DevOpsDays Tel Aviv DEC 2022 | Building A Cloud-Native Platform Brick by Bric...
DevOpsDays Tel Aviv DEC 2022 | Building A Cloud-Native Platform Brick by Bric...DevOpsDays Tel Aviv DEC 2022 | Building A Cloud-Native Platform Brick by Bric...
DevOpsDays Tel Aviv DEC 2022 | Building A Cloud-Native Platform Brick by Bric...
Haggai Philip Zagury
 
Serverless Java: JJUG CCC 2019
Serverless Java: JJUG CCC 2019Serverless Java: JJUG CCC 2019
Serverless Java: JJUG CCC 2019
Shaun Smith
 
My "Perfect" Toolchain Setup for Grails Projects
My "Perfect" Toolchain Setup for Grails ProjectsMy "Perfect" Toolchain Setup for Grails Projects
My "Perfect" Toolchain Setup for Grails Projects
GR8Conf
 
Java and Serverless - A Match Made In Heaven, Part 1
Java and Serverless - A Match Made In Heaven, Part 1Java and Serverless - A Match Made In Heaven, Part 1
Java and Serverless - A Match Made In Heaven, Part 1
Curity
 
Artifactory Essentials Workshop on August 27, 2020 by JFrog
Artifactory Essentials Workshop on August 27, 2020 by JFrogArtifactory Essentials Workshop on August 27, 2020 by JFrog
Artifactory Essentials Workshop on August 27, 2020 by JFrog
Cloud Study Network
 
Is Android the New Embedded Linux? at AnDevCon VI
Is Android the New Embedded Linux? at AnDevCon VIIs Android the New Embedded Linux? at AnDevCon VI
Is Android the New Embedded Linux? at AnDevCon VI
Opersys inc.
 
Hexagonal architecture
Hexagonal architectureHexagonal architecture
Hexagonal architecture
Nicolas Guignard
 
Meetup 2020 - Back to the Basics part 101 : IaC
Meetup 2020 - Back to the Basics part 101 : IaCMeetup 2020 - Back to the Basics part 101 : IaC
Meetup 2020 - Back to the Basics part 101 : IaC
DamienCarpy
 
Kubernetes 101
Kubernetes 101Kubernetes 101
Kubernetes 101
Stanislav Pogrebnyak
 
Is Android the New Embedded Linux? at AnDevCon V
Is Android the New Embedded Linux? at AnDevCon VIs Android the New Embedded Linux? at AnDevCon V
Is Android the New Embedded Linux? at AnDevCon V
Opersys inc.
 
From shipping rpms to helm charts - Lessons learned and best practices
From shipping rpms to helm charts - Lessons learned and best practicesFrom shipping rpms to helm charts - Lessons learned and best practices
From shipping rpms to helm charts - Lessons learned and best practices
Ankush Chadha, MBA, MS
 

Similar to Kubernetes is Hard! Lessons Learned Taking Our Apps to Kubernetes by Eldad Assis (20)

Kubernetes is hard! Lessons learned taking our apps to Kubernetes - Eldad Ass...
Kubernetes is hard! Lessons learned taking our apps to Kubernetes - Eldad Ass...Kubernetes is hard! Lessons learned taking our apps to Kubernetes - Eldad Ass...
Kubernetes is hard! Lessons learned taking our apps to Kubernetes - Eldad Ass...
 
Terraform: Tales from the Trenches
Terraform: Tales from the TrenchesTerraform: Tales from the Trenches
Terraform: Tales from the Trenches
 
Update Strategies for the Edge, by Kat Cosgrove
Update Strategies for the Edge, by Kat CosgroveUpdate Strategies for the Edge, by Kat Cosgrove
Update Strategies for the Edge, by Kat Cosgrove
 
Node.js Deeper Dive
Node.js Deeper DiveNode.js Deeper Dive
Node.js Deeper Dive
 
OSDC 2019 | Introducing Kudo – Kubernetes Operators the easy way by Matt Jarvis
OSDC 2019 | Introducing Kudo – Kubernetes Operators the easy way by Matt JarvisOSDC 2019 | Introducing Kudo – Kubernetes Operators the easy way by Matt Jarvis
OSDC 2019 | Introducing Kudo – Kubernetes Operators the easy way by Matt Jarvis
 
Extending Android's Platform Toolsuite
Extending Android's Platform ToolsuiteExtending Android's Platform Toolsuite
Extending Android's Platform Toolsuite
 
Is Android the New King of Embedded OSes at Embedded World 2014
Is Android the New King of Embedded OSes at Embedded World 2014Is Android the New King of Embedded OSes at Embedded World 2014
Is Android the New King of Embedded OSes at Embedded World 2014
 
Rejekts 24 EU No GitOps Pain, No Platform Gain
Rejekts 24 EU No GitOps Pain, No Platform GainRejekts 24 EU No GitOps Pain, No Platform Gain
Rejekts 24 EU No GitOps Pain, No Platform Gain
 
Randstad Docker meetup - Serverless
Randstad Docker meetup - ServerlessRandstad Docker meetup - Serverless
Randstad Docker meetup - Serverless
 
DevOpsDays Tel Aviv DEC 2022 | Building A Cloud-Native Platform Brick by Bric...
DevOpsDays Tel Aviv DEC 2022 | Building A Cloud-Native Platform Brick by Bric...DevOpsDays Tel Aviv DEC 2022 | Building A Cloud-Native Platform Brick by Bric...
DevOpsDays Tel Aviv DEC 2022 | Building A Cloud-Native Platform Brick by Bric...
 
Serverless Java: JJUG CCC 2019
Serverless Java: JJUG CCC 2019Serverless Java: JJUG CCC 2019
Serverless Java: JJUG CCC 2019
 
My "Perfect" Toolchain Setup for Grails Projects
My "Perfect" Toolchain Setup for Grails ProjectsMy "Perfect" Toolchain Setup for Grails Projects
My "Perfect" Toolchain Setup for Grails Projects
 
Java and Serverless - A Match Made In Heaven, Part 1
Java and Serverless - A Match Made In Heaven, Part 1Java and Serverless - A Match Made In Heaven, Part 1
Java and Serverless - A Match Made In Heaven, Part 1
 
Artifactory Essentials Workshop on August 27, 2020 by JFrog
Artifactory Essentials Workshop on August 27, 2020 by JFrogArtifactory Essentials Workshop on August 27, 2020 by JFrog
Artifactory Essentials Workshop on August 27, 2020 by JFrog
 
Is Android the New Embedded Linux? at AnDevCon VI
Is Android the New Embedded Linux? at AnDevCon VIIs Android the New Embedded Linux? at AnDevCon VI
Is Android the New Embedded Linux? at AnDevCon VI
 
Hexagonal architecture
Hexagonal architectureHexagonal architecture
Hexagonal architecture
 
Meetup 2020 - Back to the Basics part 101 : IaC
Meetup 2020 - Back to the Basics part 101 : IaCMeetup 2020 - Back to the Basics part 101 : IaC
Meetup 2020 - Back to the Basics part 101 : IaC
 
Kubernetes 101
Kubernetes 101Kubernetes 101
Kubernetes 101
 
Is Android the New Embedded Linux? at AnDevCon V
Is Android the New Embedded Linux? at AnDevCon VIs Android the New Embedded Linux? at AnDevCon V
Is Android the New Embedded Linux? at AnDevCon V
 
From shipping rpms to helm charts - Lessons learned and best practices
From shipping rpms to helm charts - Lessons learned and best practicesFrom shipping rpms to helm charts - Lessons learned and best practices
From shipping rpms to helm charts - Lessons learned and best practices
 

More from AgileSparks

What Do Agile Leaders Do by Kurt Bittner
What Do Agile Leaders Do by Kurt Bittner What Do Agile Leaders Do by Kurt Bittner
What Do Agile Leaders Do by Kurt Bittner
AgileSparks
 
Distributed Teams by Kevin Goldsmith
Distributed Teams by Kevin GoldsmithDistributed Teams by Kevin Goldsmith
Distributed Teams by Kevin Goldsmith
AgileSparks
 
A Back-End Approach to Customer Driven by Adi Gostynski
A Back-End Approach to Customer Driven by Adi GostynskiA Back-End Approach to Customer Driven by Adi Gostynski
A Back-End Approach to Customer Driven by Adi Gostynski
AgileSparks
 
Jira Portfolio by Elad Ben-Noam
Jira Portfolio by Elad Ben-NoamJira Portfolio by Elad Ben-Noam
Jira Portfolio by Elad Ben-Noam
AgileSparks
 
Agile Hiring at Scale by Yon Bergman
Agile Hiring at Scale by Yon Bergman Agile Hiring at Scale by Yon Bergman
Agile Hiring at Scale by Yon Bergman
AgileSparks
 
Are We Really Using Our Resources in The Most Effective Way? by Perry Yaqubo...
Are We Really Using Our Resources in The Most Effective Way?  by Perry Yaqubo...Are We Really Using Our Resources in The Most Effective Way?  by Perry Yaqubo...
Are We Really Using Our Resources in The Most Effective Way? by Perry Yaqubo...
AgileSparks
 
Honest Experimentation by Jonathan Bertfield
 Honest Experimentation by Jonathan Bertfield Honest Experimentation by Jonathan Bertfield
Honest Experimentation by Jonathan Bertfield
AgileSparks
 
Creating a Culture of Ownership and Trust with Visibility and Transparency by...
Creating a Culture of Ownership and Trust with Visibility and Transparency by...Creating a Culture of Ownership and Trust with Visibility and Transparency by...
Creating a Culture of Ownership and Trust with Visibility and Transparency by...
AgileSparks
 
Real Innovation is with Real Customers by Baat Enosh
Real Innovation is with Real Customers by Baat EnoshReal Innovation is with Real Customers by Baat Enosh
Real Innovation is with Real Customers by Baat Enosh
AgileSparks
 
True Continuous Improvement with Toyota Kata by Jesper Boeg
True Continuous Improvement with Toyota Kata by Jesper BoegTrue Continuous Improvement with Toyota Kata by Jesper Boeg
True Continuous Improvement with Toyota Kata by Jesper Boeg
AgileSparks
 
Homo-Adaptus Agile Worker by Lior Frenkel
Homo-Adaptus Agile Worker by Lior FrenkelHomo-Adaptus Agile Worker by Lior Frenkel
Homo-Adaptus Agile Worker by Lior Frenkel
AgileSparks
 
Intel CHD Case Study by Ronen Ezra
Intel CHD Case Study by Ronen EzraIntel CHD Case Study by Ronen Ezra
Intel CHD Case Study by Ronen Ezra
AgileSparks
 
Leading Innovation by Jonathan Bertfield
Leading Innovation by Jonathan BertfieldLeading Innovation by Jonathan Bertfield
Leading Innovation by Jonathan Bertfield
AgileSparks
 
Organization architecture autonomy and accountability
Organization architecture autonomy and accountability Organization architecture autonomy and accountability
Organization architecture autonomy and accountability
AgileSparks
 
Tribal Unity, Agile Israel 2017
Tribal Unity, Agile Israel 2017Tribal Unity, Agile Israel 2017
Tribal Unity, Agile Israel 2017
AgileSparks
 
The mindful manager, Agile Israel 2017
The mindful manager, Agile Israel 2017The mindful manager, Agile Israel 2017
The mindful manager, Agile Israel 2017
AgileSparks
 
Agile Israel 2017 bugs zero by Arlo Belshee
Agile Israel 2017 bugs zero by Arlo BelsheeAgile Israel 2017 bugs zero by Arlo Belshee
Agile Israel 2017 bugs zero by Arlo Belshee
AgileSparks
 
Agile בעידן הדיגיטלי
Agile בעידן הדיגיטליAgile בעידן הדיגיטלי
Agile בעידן הדיגיטלי
AgileSparks
 
Agile Israel 2017 by VO
Agile Israel 2017 by VO Agile Israel 2017 by VO
Agile Israel 2017 by VO
AgileSparks
 
Agile Israel 2017
Agile Israel 2017  Agile Israel 2017
Agile Israel 2017
AgileSparks
 

More from AgileSparks (20)

What Do Agile Leaders Do by Kurt Bittner
What Do Agile Leaders Do by Kurt Bittner What Do Agile Leaders Do by Kurt Bittner
What Do Agile Leaders Do by Kurt Bittner
 
Distributed Teams by Kevin Goldsmith
Distributed Teams by Kevin GoldsmithDistributed Teams by Kevin Goldsmith
Distributed Teams by Kevin Goldsmith
 
A Back-End Approach to Customer Driven by Adi Gostynski
A Back-End Approach to Customer Driven by Adi GostynskiA Back-End Approach to Customer Driven by Adi Gostynski
A Back-End Approach to Customer Driven by Adi Gostynski
 
Jira Portfolio by Elad Ben-Noam
Jira Portfolio by Elad Ben-NoamJira Portfolio by Elad Ben-Noam
Jira Portfolio by Elad Ben-Noam
 
Agile Hiring at Scale by Yon Bergman
Agile Hiring at Scale by Yon Bergman Agile Hiring at Scale by Yon Bergman
Agile Hiring at Scale by Yon Bergman
 
Are We Really Using Our Resources in The Most Effective Way? by Perry Yaqubo...
Are We Really Using Our Resources in The Most Effective Way?  by Perry Yaqubo...Are We Really Using Our Resources in The Most Effective Way?  by Perry Yaqubo...
Are We Really Using Our Resources in The Most Effective Way? by Perry Yaqubo...
 
Honest Experimentation by Jonathan Bertfield
 Honest Experimentation by Jonathan Bertfield Honest Experimentation by Jonathan Bertfield
Honest Experimentation by Jonathan Bertfield
 
Creating a Culture of Ownership and Trust with Visibility and Transparency by...
Creating a Culture of Ownership and Trust with Visibility and Transparency by...Creating a Culture of Ownership and Trust with Visibility and Transparency by...
Creating a Culture of Ownership and Trust with Visibility and Transparency by...
 
Real Innovation is with Real Customers by Baat Enosh
Real Innovation is with Real Customers by Baat EnoshReal Innovation is with Real Customers by Baat Enosh
Real Innovation is with Real Customers by Baat Enosh
 
True Continuous Improvement with Toyota Kata by Jesper Boeg
True Continuous Improvement with Toyota Kata by Jesper BoegTrue Continuous Improvement with Toyota Kata by Jesper Boeg
True Continuous Improvement with Toyota Kata by Jesper Boeg
 
Homo-Adaptus Agile Worker by Lior Frenkel
Homo-Adaptus Agile Worker by Lior FrenkelHomo-Adaptus Agile Worker by Lior Frenkel
Homo-Adaptus Agile Worker by Lior Frenkel
 
Intel CHD Case Study by Ronen Ezra
Intel CHD Case Study by Ronen EzraIntel CHD Case Study by Ronen Ezra
Intel CHD Case Study by Ronen Ezra
 
Leading Innovation by Jonathan Bertfield
Leading Innovation by Jonathan BertfieldLeading Innovation by Jonathan Bertfield
Leading Innovation by Jonathan Bertfield
 
Organization architecture autonomy and accountability
Organization architecture autonomy and accountability Organization architecture autonomy and accountability
Organization architecture autonomy and accountability
 
Tribal Unity, Agile Israel 2017
Tribal Unity, Agile Israel 2017Tribal Unity, Agile Israel 2017
Tribal Unity, Agile Israel 2017
 
The mindful manager, Agile Israel 2017
The mindful manager, Agile Israel 2017The mindful manager, Agile Israel 2017
The mindful manager, Agile Israel 2017
 
Agile Israel 2017 bugs zero by Arlo Belshee
Agile Israel 2017 bugs zero by Arlo BelsheeAgile Israel 2017 bugs zero by Arlo Belshee
Agile Israel 2017 bugs zero by Arlo Belshee
 
Agile בעידן הדיגיטלי
Agile בעידן הדיגיטליAgile בעידן הדיגיטלי
Agile בעידן הדיגיטלי
 
Agile Israel 2017 by VO
Agile Israel 2017 by VO Agile Israel 2017 by VO
Agile Israel 2017 by VO
 
Agile Israel 2017
Agile Israel 2017  Agile Israel 2017
Agile Israel 2017
 

Recently uploaded

Detail Presentation on Effective leadership and Followership
Detail Presentation on Effective leadership and FollowershipDetail Presentation on Effective leadership and Followership
Detail Presentation on Effective leadership and Followership
Rashed Barakzai
 
TMU biyezheng degree offer diploma Transcript
TMU biyezheng degree offer diploma TranscriptTMU biyezheng degree offer diploma Transcript
TMU biyezheng degree offer diploma Transcript
usuga3
 
CAPACITY BUILDING:HOW TO GROW YOUR INFLUENCE, INCOME & IMPACT
CAPACITY BUILDING:HOW TO GROW YOUR INFLUENCE, INCOME & IMPACTCAPACITY BUILDING:HOW TO GROW YOUR INFLUENCE, INCOME & IMPACT
CAPACITY BUILDING:HOW TO GROW YOUR INFLUENCE, INCOME & IMPACT
Tochi22
 
Body Language & Communication for Restaurant staffptx
Body Language & Communication for Restaurant staffptxBody Language & Communication for Restaurant staffptx
Body Language & Communication for Restaurant staffptx
VishalHariharan1
 
Lucknow Girls Call Vijay Khand 08630512678 Provide Best And Top Girl Service ...
Lucknow Girls Call Vijay Khand 08630512678 Provide Best And Top Girl Service ...Lucknow Girls Call Vijay Khand 08630512678 Provide Best And Top Girl Service ...
Lucknow Girls Call Vijay Khand 08630512678 Provide Best And Top Girl Service ...
hemakumarinn
 
Mastering the Art of Planning, Leading, and Participating in Effective Meetin...
Mastering the Art of Planning, Leading, and Participating in Effective Meetin...Mastering the Art of Planning, Leading, and Participating in Effective Meetin...
Mastering the Art of Planning, Leading, and Participating in Effective Meetin...
Timothy Hackman
 
100 quotes that will be changed your life.pdf
100 quotes that will be changed your life.pdf100 quotes that will be changed your life.pdf
100 quotes that will be changed your life.pdf
MatsikoAlex
 
Pune Girls Call Pune 0X0000000X Unlimited Short Providing Girls Service Avail...
Pune Girls Call Pune 0X0000000X Unlimited Short Providing Girls Service Avail...Pune Girls Call Pune 0X0000000X Unlimited Short Providing Girls Service Avail...
Pune Girls Call Pune 0X0000000X Unlimited Short Providing Girls Service Avail...
sabanihahanshni
 
Lucknow Girls Call Kakori 08630512678 Provide Best And Top Girl Service And N...
Lucknow Girls Call Kakori 08630512678 Provide Best And Top Girl Service And N...Lucknow Girls Call Kakori 08630512678 Provide Best And Top Girl Service And N...
Lucknow Girls Call Kakori 08630512678 Provide Best And Top Girl Service And N...
eshikajshani
 
Contingency Theory - Case Study-by arab.pdf
Contingency Theory  - Case Study-by arab.pdfContingency Theory  - Case Study-by arab.pdf
Contingency Theory - Case Study-by arab.pdf
hannyhosny
 
Nashik Girls Call Nashik 0X0000000X Provide Best And Top Girl Service And No1...
Nashik Girls Call Nashik 0X0000000X Provide Best And Top Girl Service And No1...Nashik Girls Call Nashik 0X0000000X Provide Best And Top Girl Service And No1...
Nashik Girls Call Nashik 0X0000000X Provide Best And Top Girl Service And No1...
jafsa9823#S07
 
Heavy Duty Stair Climbing Trolleys By Corvids India.pdf
Heavy Duty Stair Climbing Trolleys By Corvids India.pdfHeavy Duty Stair Climbing Trolleys By Corvids India.pdf
Heavy Duty Stair Climbing Trolleys By Corvids India.pdf
Corvids India
 
Behavior Based Safety for Safety Improving Safety Culture
Behavior Based Safety for Safety Improving Safety CultureBehavior Based Safety for Safety Improving Safety Culture
Behavior Based Safety for Safety Improving Safety Culture
aerblog
 
UoB degree offer diploma Transcript
UoB degree offer diploma TranscriptUoB degree offer diploma Transcript
UoB degree offer diploma Transcript
eufoewy
 
Lucknow Girls Call Charbagh 08630512678 Provide Best And Top Girl Service And...
Lucknow Girls Call Charbagh 08630512678 Provide Best And Top Girl Service And...Lucknow Girls Call Charbagh 08630512678 Provide Best And Top Girl Service And...
Lucknow Girls Call Charbagh 08630512678 Provide Best And Top Girl Service And...
bangaloreakshitakaus
 
100 quotes that will be changed your life.pdf
100 quotes that will be changed your life.pdf100 quotes that will be changed your life.pdf
100 quotes that will be changed your life.pdf
MatsikoAlex
 
Distributed leadership in Ghorahi Cement Industry.pptx
Distributed leadership in Ghorahi Cement Industry.pptxDistributed leadership in Ghorahi Cement Industry.pptx
Distributed leadership in Ghorahi Cement Industry.pptx
Er. Kushal Ghimire
 
Electronic Payment System.pptx - E-commerce
Electronic Payment System.pptx - E-commerceElectronic Payment System.pptx - E-commerce
Electronic Payment System.pptx - E-commerce
nk4kcfq9bf
 
Zoho_Final Report_MGT489: Strategic Management_SmM4.pdf
Zoho_Final Report_MGT489: Strategic Management_SmM4.pdfZoho_Final Report_MGT489: Strategic Management_SmM4.pdf
Zoho_Final Report_MGT489: Strategic Management_SmM4.pdf
Mohammad Tauhidul Islam Khan Rifat
 

Recently uploaded (19)

Detail Presentation on Effective leadership and Followership
Detail Presentation on Effective leadership and FollowershipDetail Presentation on Effective leadership and Followership
Detail Presentation on Effective leadership and Followership
 
TMU biyezheng degree offer diploma Transcript
TMU biyezheng degree offer diploma TranscriptTMU biyezheng degree offer diploma Transcript
TMU biyezheng degree offer diploma Transcript
 
CAPACITY BUILDING:HOW TO GROW YOUR INFLUENCE, INCOME & IMPACT
CAPACITY BUILDING:HOW TO GROW YOUR INFLUENCE, INCOME & IMPACTCAPACITY BUILDING:HOW TO GROW YOUR INFLUENCE, INCOME & IMPACT
CAPACITY BUILDING:HOW TO GROW YOUR INFLUENCE, INCOME & IMPACT
 
Body Language & Communication for Restaurant staffptx
Body Language & Communication for Restaurant staffptxBody Language & Communication for Restaurant staffptx
Body Language & Communication for Restaurant staffptx
 
Lucknow Girls Call Vijay Khand 08630512678 Provide Best And Top Girl Service ...
Lucknow Girls Call Vijay Khand 08630512678 Provide Best And Top Girl Service ...Lucknow Girls Call Vijay Khand 08630512678 Provide Best And Top Girl Service ...
Lucknow Girls Call Vijay Khand 08630512678 Provide Best And Top Girl Service ...
 
Mastering the Art of Planning, Leading, and Participating in Effective Meetin...
Mastering the Art of Planning, Leading, and Participating in Effective Meetin...Mastering the Art of Planning, Leading, and Participating in Effective Meetin...
Mastering the Art of Planning, Leading, and Participating in Effective Meetin...
 
100 quotes that will be changed your life.pdf
100 quotes that will be changed your life.pdf100 quotes that will be changed your life.pdf
100 quotes that will be changed your life.pdf
 
Pune Girls Call Pune 0X0000000X Unlimited Short Providing Girls Service Avail...
Pune Girls Call Pune 0X0000000X Unlimited Short Providing Girls Service Avail...Pune Girls Call Pune 0X0000000X Unlimited Short Providing Girls Service Avail...
Pune Girls Call Pune 0X0000000X Unlimited Short Providing Girls Service Avail...
 
Lucknow Girls Call Kakori 08630512678 Provide Best And Top Girl Service And N...
Lucknow Girls Call Kakori 08630512678 Provide Best And Top Girl Service And N...Lucknow Girls Call Kakori 08630512678 Provide Best And Top Girl Service And N...
Lucknow Girls Call Kakori 08630512678 Provide Best And Top Girl Service And N...
 
Contingency Theory - Case Study-by arab.pdf
Contingency Theory  - Case Study-by arab.pdfContingency Theory  - Case Study-by arab.pdf
Contingency Theory - Case Study-by arab.pdf
 
Nashik Girls Call Nashik 0X0000000X Provide Best And Top Girl Service And No1...
Nashik Girls Call Nashik 0X0000000X Provide Best And Top Girl Service And No1...Nashik Girls Call Nashik 0X0000000X Provide Best And Top Girl Service And No1...
Nashik Girls Call Nashik 0X0000000X Provide Best And Top Girl Service And No1...
 
Heavy Duty Stair Climbing Trolleys By Corvids India.pdf
Heavy Duty Stair Climbing Trolleys By Corvids India.pdfHeavy Duty Stair Climbing Trolleys By Corvids India.pdf
Heavy Duty Stair Climbing Trolleys By Corvids India.pdf
 
Behavior Based Safety for Safety Improving Safety Culture
Behavior Based Safety for Safety Improving Safety CultureBehavior Based Safety for Safety Improving Safety Culture
Behavior Based Safety for Safety Improving Safety Culture
 
UoB degree offer diploma Transcript
UoB degree offer diploma TranscriptUoB degree offer diploma Transcript
UoB degree offer diploma Transcript
 
Lucknow Girls Call Charbagh 08630512678 Provide Best And Top Girl Service And...
Lucknow Girls Call Charbagh 08630512678 Provide Best And Top Girl Service And...Lucknow Girls Call Charbagh 08630512678 Provide Best And Top Girl Service And...
Lucknow Girls Call Charbagh 08630512678 Provide Best And Top Girl Service And...
 
100 quotes that will be changed your life.pdf
100 quotes that will be changed your life.pdf100 quotes that will be changed your life.pdf
100 quotes that will be changed your life.pdf
 
Distributed leadership in Ghorahi Cement Industry.pptx
Distributed leadership in Ghorahi Cement Industry.pptxDistributed leadership in Ghorahi Cement Industry.pptx
Distributed leadership in Ghorahi Cement Industry.pptx
 
Electronic Payment System.pptx - E-commerce
Electronic Payment System.pptx - E-commerceElectronic Payment System.pptx - E-commerce
Electronic Payment System.pptx - E-commerce
 
Zoho_Final Report_MGT489: Strategic Management_SmM4.pdf
Zoho_Final Report_MGT489: Strategic Management_SmM4.pdfZoho_Final Report_MGT489: Strategic Management_SmM4.pdf
Zoho_Final Report_MGT489: Strategic Management_SmM4.pdf
 

Kubernetes is Hard! Lessons Learned Taking Our Apps to Kubernetes by Eldad Assis

  • 1. Copyright @ 2019 JFrog - All rights reserved Kubernetes is hard! Lessons learned taking our apps to Kubernetes Eldad Assis | DevOps Architect | JFrog
  • 2. Copyright @ 2019 JFrog - All rights reserved. ALL TOGETHER NOW! Me Email: eldada@jfrog.com Twitter: @eldadak LinkedIn: Eldad Assis What I do - I (try to) solve problems @ JFrog - DevOps Architect - Bringing Dev and Ops closer for over 15 years - Doing CI/CD since the turn of the century
  • 3. Copyright @ 2019 JFrog - All rights reserved. ALL TOGETHER NOW! ● Docker Containers ● Kubernetes An open-source system for automating deployment, scaling, and management of containerized applications. No deep diving. No Demo… sorry Come see me after the talk for more! For this talk, I assume you know a bit Recommended knowledge
  • 4. Copyright @ 2019 JFrog - All rights reserved. ALL TOGETHER NOW! 1. I need a running environment. Now! a. Developers, QA, Support, Product Managers, Solution… anyone! 2. Per branch CI/CD a. Full CI to Integrate my branch with other products development branches 3. Better utilize our resources for dev and production 4. Support a new distribution for JFrog products Why? (The problems we wanted to solve) The journey to Kubernetes begins...
  • 5. Copyright @ 2019 JFrog - All rights reserved. ALL TOGETHER NOW! Why? (Taking containers to production) Docker in development vs production Docker container Docker container Networking Security Monitoring Logging Auto scaling Auto healing Development Production
  • 6. Copyright @ 2019 JFrog - All rights reserved. ALL TOGETHER NOW! ● Start small ● Get the application ready before jumping into Kubernetes ● Security - control what’s running in your cluster ● Limits ● Health probes ● Visibility - usable and accessible monitoring and logging systems ● Spread the word and work with the community! The End What you should take from here
  • 7. Copyright @ 2019 JFrog - All rights reserved. ALL TOGETHER NOW! Kubernetes - the myth ZZZZ….
  • 8. Copyright @ 2019 JFrog - All rights reserved. ALL TOGETHER NOW! Kubernetes - the reality Hmmm….
  • 9. Copyright @ 2019 JFrog - All rights reserved. ALL TOGETHER NOW! 1. See a tweet on a new technology! (WOW - THIS IS COOL!) 2. See video showing how easy it is (LOOKS EASY!) 3. Try running it yourself (HMM… ) 4. Fail miserably (WOW - THIS IS HARD!) 5. Feel stupid 6. Try again (GO TO 3) How I started A recipe for a successful new technology adoption
  • 10. Copyright @ 2019 JFrog - All rights reserved. ALL TOGETHER NOW! ● Start with a small application example (nginx hello world) ● Use existing demos ○ Understand it. What each line in the yaml actually means ● Set a minimal goal for getting your app to run in Kubernetes ● Get comfortable before you move on ○ Start with managed K8s for easy setup (AKS, EKS, GKE) Where should I start? Start small!
  • 11. Copyright @ 2019 JFrog - All rights reserved. ALL TOGETHER NOW! A lot has to be done on your application before you can comfortably run it in Kubernetes Here are some key points to consider when planning your move to Kubernetes Start with the application! Is your application ready to run in Kubernetes?
  • 12. Copyright @ 2019 JFrog - All rights reserved. ALL TOGETHER NOW! ● Logging ○ STDOUT/STDERR ○ Handling multiple log files ● Data Persistency ○ What kind of data needs persistency (if at all)? ● Proper handling of termination signals to init a proper shutdown ○ Controlled shutdown of the application ○ Easier recovery (after a controlled shutdown) ● Survive a restart ○ Managing leftovers from previous run Is your app ready for Kubernetes? It’s not just pushing it to Docker...
  • 13. Copyright @ 2019 JFrog - All rights reserved. ALL TOGETHER NOW! ● Improve durability and availability ● Support running multiple instances of your application with load balancing between them ○ Scaling up and down will be easy (horizontal scaling) ● Rolling upgrades for zero downtime ○ Backward compatibility ● Zero service unavailability due to pod rescheduling ○ Cluster scaling (down) ○ Pod evicted or crashed ○ Unplanned outage of a node Is your app ready for Kubernetes? High availability as the new default!
  • 14. Copyright @ 2019 JFrog - All rights reserved. ALL TOGETHER NOW! I. Codebase - One codebase tracked in revision control, many deploys II. Dependencies - Explicitly declare and isolate dependencies III. Config - Store config in the environment IV. Backing services - Treat backing services as attached resources V. Build, release, run - Strictly separate build and run stages VI. Processes - Execute the app as one or more stateless processes Is your app ready for Kubernetes? The Twelve-Factor App (https://12factor.net/) VII. Port binding - Export services via port binding VIII. Concurrency - Scale out via the process model IX. Disposability - Maximize robustness with fast startup and graceful shutdown X. Dev/prod parity - Keep development, staging, and production as similar as possible XI. Logs - Treat logs as event streams XII. Admin processes - Run admin/management tasks as one-off processes
  • 15. Copyright @ 2019 JFrog - All rights reserved. ALL TOGETHER NOW! ● Your application is rarely the only thing in its pod ○ OS packages, OSS libs, 3rd party processes ● Security vulnerabilities ● Do you use public images from unknown sources? ● FOSS licenses compliance Security What’s running in your cluster?
  • 16. Copyright @ 2019 JFrog - All rights reserved. ALL TOGETHER NOW! Once your application is ready, let’s talk about to how to properly manage your applications run-time and configuration in Kubernetes And now - Kubernetes Properly running in Kubernetes
  • 17. Copyright @ 2019 JFrog - All rights reserved. ALL TOGETHER NOW! ● Pod limits. Always! ● The app inside might need its own limits. For example: ○ Java apps ■ Limit the java process with `-Xms=1g -Xmx=2g` ■ Pod memory limit should be higher than Xmx ○ RabbitMQ ■ [rabbitmq.conf] total_memory_available_override_value = 1GB ○ MongoDB ■ --wiredTigerCacheSizeGB=1 Know your limits There might be more than you know…. … resources: requests: memory: "1Gi" cpu: "100m" limits: memory: "2Gi" cpu: "250m" ...
  • 18. Copyright @ 2019 JFrog - All rights reserved. ALL TOGETHER NOW! ● The total sum of limits on a node can be way over 100% ● This allows for resource sharing between pods ● Pods will crash! Nodes will crash! ● See out of resources handling by Kubernetes ● Be prepared ○ Think about the requested and limits values ○ Spread your application across nodes using multiple replicas (HA) ○ Use pods priority and preemption to take control Know your limits - don’t overload There might be more than you know…. … resources: requests: memory: "64Mi" cpu: "20m" limits: memory: "2Gi" cpu: "4" ...
  • 19. Copyright @ 2019 JFrog - All rights reserved. ALL TOGETHER NOW! ● Your application must have a reliable metric for health ● readinessProbe ○ Is the app ready to start serving ● livenessProbe ○ Is the app good to continue serving ● Types ○ Exec - return 0 on success ○ Http - return < 400 on success ○ Tcp - succeed to open a socket on a given port ● For complex checks, write a script and use the exec probe Know your app’s health Application’s readiness and health … readinessProbe: httpGet: path: /api/system/health port: 8080 … livenessProbe: exec: command: - mongo - --eval - "db.adminCommand('ping')" … livenessProbe: tcpSocket: port: 5672 …
  • 20. Copyright @ 2019 JFrog - All rights reserved. ALL TOGETHER NOW! ● Init Containers - run before main container ○ Prepare storage ○ Setup configuration ● Sidecar containers - run alongside main container ○ Maintenance ○ Log collection ○ Monitoring ○ Proxy Multiple containers in a Pod When a single container is not enough Application pod example. Multiple artifactory logs forwarded by a Fluentbit container to a log aggregator. Pod Application container Fluentbit container Logs Log collector
  • 21. Copyright @ 2019 JFrog - All rights reserved. ALL TOGETHER NOW! ● Your application is made up of multiple components ○ Each represented as a yaml file or snippet ● Versioning of an application that’s made up of several yaml files is challenging ● Having all configuration in the yaml files is great, but ○ How can I use the same yaml for different environments? ■ Local (minikube) ■ Dev cluster ■ Production ● Rolling back to earlier versions of the application Managing an application’s lifecycle The static nature of the yaml descriptors is challenging
  • 22. Copyright @ 2019 JFrog - All rights reserved. ALL TOGETHER NOW! ● https://helm.sh/ ● Helm is the package manager for Kubernetes. Like ‘yum’ for CentOS/RedHat ● Describes the whole application in a single package - helm chart (template yamls) ● Default configuration values (values.yaml) ● Single version for every chart (Chart.yaml) Here comes Helm! Dynamic control over your application’s deployment
  • 23. Copyright @ 2019 JFrog - All rights reserved. ALL TOGETHER NOW! ● Use same chart for dev, staging and production! ○ Each environment’s config managed in its own copy of values.yaml that is version controlled (values-stg.yaml, values-prod.yaml) ○ The default values.yaml should be for dev or local, so a developer can use it locally without hassle ○ Everything is configurable! ● External charts as requirements (dependencies) ○ 3rd parties like databases Helm - YES! Use same chart in all environments
  • 24. Copyright @ 2019 JFrog - All rights reserved. ALL TOGETHER NOW! Helm - YES! YES! Useful helm commands for understanding what the helm is going on... # Lint your chart for errors and recommendations $ helm lint <chart path> # Download a chart for local viewing $ helm fetch <chart> # Get a release (application already deployed with helm) actual configuration $ helm get <release> # Get the status of all the resources included in a release $ helm status <release> # Get the actual resolved configuration without deploying anything $ helm template <chart> $ helm install --debug --dry-run <chart> # Test your release (need to write test pods in your chart) $ helm test <release>
  • 25. Copyright @ 2019 JFrog - All rights reserved. ALL TOGETHER NOW! More Helm charts Find existing charts Official Helm charts hub https://hub.helm.sh/
  • 26. Copyright @ 2019 JFrog - All rights reserved. ALL TOGETHER NOW! ● No more “ssh to the server and get me the logs”! ● Developers should not need kubectl access to debug their applications ● Provide your Dev and Ops easy and reliable data ○ Monitoring ○ Logging ● Managed solutions provide OOB tooling Visibility in Kubernetes? We are not in Kansas anymore...
  • 27. Copyright @ 2019 JFrog - All rights reserved. ALL TOGETHER NOW! Dashboard for nodes and pods * Prometheus * Grafana Visibility in Kubernetes? Monitoring
  • 28. Copyright @ 2019 JFrog - All rights reserved. ALL TOGETHER NOW! Logs from all pods EFK stack * Fluentd * ElasticSearch * Kibana Visibility in Kubernetes? Logging
  • 29. Copyright @ 2019 JFrog - All rights reserved. ALL TOGETHER NOW! Use with your CI Plug your CI/CD to a Kubernetes cluster for easy environment deployment
  • 30. Copyright @ 2019 JFrog - All rights reserved. ALL TOGETHER NOW! ● CI/CD for our products using Kubernetes ○ Using internal dev versions with our official Helm charts ○ On demand, fully isolated environment per branch per developer ○ 100’s of custom testing environments a week made up of ~50+ services ● Some of our cloud based applications already running on K8s ○ Internal and external ● Official JFrog Helm charts for all our products JFrog and Kubernetes What are we doing with Kubernetes?
  • 31. Copyright @ 2019 JFrog - All rights reserved. ALL TOGETHER NOW! ● You are not the first one to stumble on that particular problem ● It’s as if you have more developers in your team ● Fast turnaround ● Examples ○ RabbitMQ HA ○ MongoDB (Bitnami) The community Use already tested and managed helm charts
  • 32. Copyright @ 2019 JFrog - All rights reserved. ALL TOGETHER NOW! ● Start small ● Get the application ready before jumping into Kubernetes ● Security - control what’s running in your cluster ● Limits ● Health probes ● Visibility - usable and accessible monitoring and logging systems ● Spread the word and work with the community! The (real) End What you should take from here
  • 33. Copyright @ 2019 JFrog - All rights reserved. ALL TOGETHER NOW! Smooth sailing... Copyright © 2018 JFrog. All Rights Reserved | www.swampup.jfrog.com
  • 34. Copyright @ 2019 JFrog - All rights reserved. ALL TOGETHER NOW! Be Good! Questions?