SlideShare una empresa de Scribd logo
1 de 34
Descargar para leer sin conexión
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?

Más contenido relacionado

La actualidad más candente

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 SchwarzwaldSauce 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 ITAndrea Tino
 
An introduction to DevOps
An introduction to DevOpsAn introduction to DevOps
An introduction to DevOpsAndrea 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 2016Lemi 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 NeedsPerforce
 
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 PHPGreat 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 wayPanji 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 13Panji 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/CDDicodingEvent
 
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 IntroductionThiago 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 DevOpsAndrea 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 EfficientlyLemi 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 OverviewHimanshu Desai
 
Working with Agile technologies and SCRUM
Working with Agile technologies and SCRUMWorking with Agile technologies and SCRUM
Working with Agile technologies and SCRUMAndrea 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 DevOpsPerforce
 

La actualidad más candente (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 a JFrog's Kubernetes Journey: Lessons Learned Taking Apps to K8s

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 TrenchesRobert 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 CosgroveCloud Native Day Tel Aviv
 
Node.js Deeper Dive
Node.js Deeper DiveNode.js Deeper Dive
Node.js Deeper DiveJustin 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 JarvisNETWAYS
 
Extending Android's Platform Toolsuite
Extending Android's Platform ToolsuiteExtending Android's Platform Toolsuite
Extending Android's Platform ToolsuiteOpersys 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 2014Opersys 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 - ServerlessDavid 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 2019Shaun 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 ProjectsGR8Conf
 
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 1Curity
 
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 JFrogCloud 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 VIOpersys inc.
 
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 : IaCDamienCarpy
 
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 VOpersys 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 practicesAnkush Chadha, MBA, MS
 

Similar a JFrog's Kubernetes Journey: Lessons Learned Taking Apps to K8s (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
 

Más de 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 GoldsmithAgileSparks
 
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 GostynskiAgileSparks
 
Jira Portfolio by Elad Ben-Noam
Jira Portfolio by Elad Ben-NoamJira Portfolio by Elad Ben-Noam
Jira Portfolio by Elad Ben-NoamAgileSparks
 
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 BertfieldAgileSparks
 
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 EnoshAgileSparks
 
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 BoegAgileSparks
 
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 FrenkelAgileSparks
 
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 EzraAgileSparks
 
Leading Innovation by Jonathan Bertfield
Leading Innovation by Jonathan BertfieldLeading Innovation by Jonathan Bertfield
Leading Innovation by Jonathan BertfieldAgileSparks
 
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 2017AgileSparks
 
The mindful manager, Agile Israel 2017
The mindful manager, Agile Israel 2017The mindful manager, Agile Israel 2017
The mindful manager, Agile Israel 2017AgileSparks
 
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 BelsheeAgileSparks
 
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
 

Más de 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
 

Último

Operations Management -- Sustainability and Supply Chain Management.pdf
Operations Management -- Sustainability and Supply Chain Management.pdfOperations Management -- Sustainability and Supply Chain Management.pdf
Operations Management -- Sustainability and Supply Chain Management.pdfcoolsnoopy1
 
Critical thinking categorical syllogism pptx
Critical thinking categorical syllogism pptxCritical thinking categorical syllogism pptx
Critical thinking categorical syllogism pptxcalinagavris17
 
The Role of Histograms in Exploring Data Insights
The Role of Histograms in Exploring Data InsightsThe Role of Histograms in Exploring Data Insights
The Role of Histograms in Exploring Data InsightsCIToolkit
 
Yokoten: Enhancing Performance through Best Practice Sharing
Yokoten: Enhancing Performance through Best Practice SharingYokoten: Enhancing Performance through Best Practice Sharing
Yokoten: Enhancing Performance through Best Practice SharingCIToolkit
 
BoSUSA23 | Chris Spiek & Justin Dickow | Autobooks Product & Engineering
BoSUSA23 | Chris Spiek & Justin Dickow | Autobooks Product & EngineeringBoSUSA23 | Chris Spiek & Justin Dickow | Autobooks Product & Engineering
BoSUSA23 | Chris Spiek & Justin Dickow | Autobooks Product & EngineeringBusiness of Software Conference
 
Mind Mapping: A Visual Approach to Organize Ideas and Thoughts
Mind Mapping: A Visual Approach to Organize Ideas and ThoughtsMind Mapping: A Visual Approach to Organize Ideas and Thoughts
Mind Mapping: A Visual Approach to Organize Ideas and ThoughtsCIToolkit
 
Mastering Management Insights from First Break All the Rules.pptx
Mastering Management Insights from First Break All the Rules.pptxMastering Management Insights from First Break All the Rules.pptx
Mastering Management Insights from First Break All the Rules.pptxAS Design & AST.
 
Leveraging Gap Analysis for Continuous Improvement
Leveraging Gap Analysis for Continuous ImprovementLeveraging Gap Analysis for Continuous Improvement
Leveraging Gap Analysis for Continuous ImprovementCIToolkit
 
Hajra Karrim: Transformative Leadership Driving Innovation and Efficiency in ...
Hajra Karrim: Transformative Leadership Driving Innovation and Efficiency in ...Hajra Karrim: Transformative Leadership Driving Innovation and Efficiency in ...
Hajra Karrim: Transformative Leadership Driving Innovation and Efficiency in ...dsnow9802
 
Management 11th Edition - Chapter 11 - Adaptive Organizational Design
Management 11th Edition - Chapter 11 - Adaptive Organizational DesignManagement 11th Edition - Chapter 11 - Adaptive Organizational Design
Management 11th Edition - Chapter 11 - Adaptive Organizational Designshakkardaddy
 
Adapting to Change: Using PEST Analysis for Better Decision-Making
Adapting to Change: Using PEST Analysis for Better Decision-MakingAdapting to Change: Using PEST Analysis for Better Decision-Making
Adapting to Change: Using PEST Analysis for Better Decision-MakingCIToolkit
 
Overview PMI Infinity - UK Chapter presentation
Overview PMI Infinity - UK Chapter presentationOverview PMI Infinity - UK Chapter presentation
Overview PMI Infinity - UK Chapter presentationPMIUKChapter
 
Exploring Variable Relationships with Scatter Diagram Analysis
Exploring Variable Relationships with Scatter Diagram AnalysisExploring Variable Relationships with Scatter Diagram Analysis
Exploring Variable Relationships with Scatter Diagram AnalysisCIToolkit
 
The Role of Box Plots in Comparing Multiple Data Sets
The Role of Box Plots in Comparing Multiple Data SetsThe Role of Box Plots in Comparing Multiple Data Sets
The Role of Box Plots in Comparing Multiple Data SetsCIToolkit
 
How Technologies will change the relationship with Human Resources
How Technologies will change the relationship with Human ResourcesHow Technologies will change the relationship with Human Resources
How Technologies will change the relationship with Human ResourcesMassimo Canducci
 
Flowcharting: The Three Common Types of Flowcharts
Flowcharting: The Three Common Types of FlowchartsFlowcharting: The Three Common Types of Flowcharts
Flowcharting: The Three Common Types of FlowchartsCIToolkit
 

Último (16)

Operations Management -- Sustainability and Supply Chain Management.pdf
Operations Management -- Sustainability and Supply Chain Management.pdfOperations Management -- Sustainability and Supply Chain Management.pdf
Operations Management -- Sustainability and Supply Chain Management.pdf
 
Critical thinking categorical syllogism pptx
Critical thinking categorical syllogism pptxCritical thinking categorical syllogism pptx
Critical thinking categorical syllogism pptx
 
The Role of Histograms in Exploring Data Insights
The Role of Histograms in Exploring Data InsightsThe Role of Histograms in Exploring Data Insights
The Role of Histograms in Exploring Data Insights
 
Yokoten: Enhancing Performance through Best Practice Sharing
Yokoten: Enhancing Performance through Best Practice SharingYokoten: Enhancing Performance through Best Practice Sharing
Yokoten: Enhancing Performance through Best Practice Sharing
 
BoSUSA23 | Chris Spiek & Justin Dickow | Autobooks Product & Engineering
BoSUSA23 | Chris Spiek & Justin Dickow | Autobooks Product & EngineeringBoSUSA23 | Chris Spiek & Justin Dickow | Autobooks Product & Engineering
BoSUSA23 | Chris Spiek & Justin Dickow | Autobooks Product & Engineering
 
Mind Mapping: A Visual Approach to Organize Ideas and Thoughts
Mind Mapping: A Visual Approach to Organize Ideas and ThoughtsMind Mapping: A Visual Approach to Organize Ideas and Thoughts
Mind Mapping: A Visual Approach to Organize Ideas and Thoughts
 
Mastering Management Insights from First Break All the Rules.pptx
Mastering Management Insights from First Break All the Rules.pptxMastering Management Insights from First Break All the Rules.pptx
Mastering Management Insights from First Break All the Rules.pptx
 
Leveraging Gap Analysis for Continuous Improvement
Leveraging Gap Analysis for Continuous ImprovementLeveraging Gap Analysis for Continuous Improvement
Leveraging Gap Analysis for Continuous Improvement
 
Hajra Karrim: Transformative Leadership Driving Innovation and Efficiency in ...
Hajra Karrim: Transformative Leadership Driving Innovation and Efficiency in ...Hajra Karrim: Transformative Leadership Driving Innovation and Efficiency in ...
Hajra Karrim: Transformative Leadership Driving Innovation and Efficiency in ...
 
Management 11th Edition - Chapter 11 - Adaptive Organizational Design
Management 11th Edition - Chapter 11 - Adaptive Organizational DesignManagement 11th Edition - Chapter 11 - Adaptive Organizational Design
Management 11th Edition - Chapter 11 - Adaptive Organizational Design
 
Adapting to Change: Using PEST Analysis for Better Decision-Making
Adapting to Change: Using PEST Analysis for Better Decision-MakingAdapting to Change: Using PEST Analysis for Better Decision-Making
Adapting to Change: Using PEST Analysis for Better Decision-Making
 
Overview PMI Infinity - UK Chapter presentation
Overview PMI Infinity - UK Chapter presentationOverview PMI Infinity - UK Chapter presentation
Overview PMI Infinity - UK Chapter presentation
 
Exploring Variable Relationships with Scatter Diagram Analysis
Exploring Variable Relationships with Scatter Diagram AnalysisExploring Variable Relationships with Scatter Diagram Analysis
Exploring Variable Relationships with Scatter Diagram Analysis
 
The Role of Box Plots in Comparing Multiple Data Sets
The Role of Box Plots in Comparing Multiple Data SetsThe Role of Box Plots in Comparing Multiple Data Sets
The Role of Box Plots in Comparing Multiple Data Sets
 
How Technologies will change the relationship with Human Resources
How Technologies will change the relationship with Human ResourcesHow Technologies will change the relationship with Human Resources
How Technologies will change the relationship with Human Resources
 
Flowcharting: The Three Common Types of Flowcharts
Flowcharting: The Three Common Types of FlowchartsFlowcharting: The Three Common Types of Flowcharts
Flowcharting: The Three Common Types of Flowcharts
 

JFrog's Kubernetes Journey: Lessons Learned Taking Apps to K8s

  • 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?