A presentation at Docker NYC Meetup May 2019 in in New York, NY, USA by Baruch Sadogursky
Go, go, kubernetes Building a Kubernetes Powered Central Go Modules Repository
Let’s go on a trip through history @jbaruch | jfrog.com/shownotes | gocenter.io
A quick history of go Go 1.8 Introduction of Go plugins Go 1.0 Go 1.10 First major milestone as a long term stable release Changes to the toolchain, runtime, and libs Go 1.5 First release to no longer use C (except for cgo) Support for Vendoring 2012 2015 @jbaruch 2017 | jfrog.com/shownotes | gocenter.io 2018
One thing missing Dependency Management… @jbaruch | jfrog.com/shownotes | gocenter.io
“Tis impossible to be sure of anything but Death and Taxes” - Christopher Bullock @jbaruch | jfrog.com/shownotes | gocenter.io
A quick history of go Go 1.8 Introduction of Go plugins Go 1.0 Go 1.10 First major milestone as a long term stable release Changes to the toolchain, runtime, and libs Go 1.5 Go 1.11 First release to no longer use C (except for cgo) Go Modules! Support for Vendoring 2012 2015 2017 @jbaruch | jfrog.com/shownotes 2018 | gocenter.io 2018
So, what are modules? Official Dependency Management No more GOPATH @jbaruch | jfrog.com/shownotes | In one single tool gocenter.io
Vendoring is a really, really bad idea But why not use vendoring? @jbaruch | jfrog.com/shownotes | gocenter.io
Forking is not always good, bad forking is always bad And that’s what vendoring is @jbaruch | jfrog.com/shownotes | gocenter.io
In software Immutable and repeatable are really important Immutable dependencies The best way to guarantee issues is force push Lost Dependencies Who doesn’t remember left-pad with Node.js? Trust Do you trust your colleagues? What about the rest of the Internet? @jbaruch | jfrog.com/shownotes | gocenter.io
Who am i? • Head of Developer Relations • Chief Sticker Officer Baruch Sadogursky, Chief Sticker Officer @jbaruch @jbaruch | jfrog.com/shownotes | gocenter.io
shownotes Slides Video Links Comments Ratings Raffle! https://jfrog.com/shownotes @jbaruch | jfrog.com/shownotes | gocenter.io
#1 What is gocenter actually? @jbaruch | jfrog.com/shownotes | gocenter.io
What is gocenter actually? @jbaruch | jfrog.com/shownotes | gocenter.io
#2 How we got to kubernetes @jbaruch | jfrog.com/shownotes | gocenter.io
Why did we choose kubernetes? • Make use of a proven orchestration platform • Leverage out-of-thebox features @jbaruch | jfrog.com/shownotes | gocenter.io
Running on google cloud platform Most mature Kubernetes offering Easy to deploy using existing tools and techniques @jbaruch | jfrog.com/shownotes | Lots of troubleshooting tools like BigQuery and StackDriver gocenter.io
Who needs state anyway? 1. 2. 3. 4. 5. 6. 7. Port binding 8. Concurrency 9. Disposability 10. Dev/Prod parity 11. Logs 12. Admin processes Codebase Dependencies Config Backing services Build, release, run Processes @jbaruch | jfrog.com/shownotes | gocenter.io
But we didn’t build everything ourselves @jbaruch | jfrog.com/shownotes | gocenter.io Dependencies
Deployments using helm • Helm Charts are versioned • Separate value files per environment • Having one of the cofounders of Helm at our company also doesn’t hurt @jbaruch | jfrog.com/shownotes | gocenter.io Config
Some best practices we learned while building Limits & Labels Namespaces & Clusters Secrets @jbaruch | jfrog.com/shownotes | gocenter.io Portbinding, Concurrency & Disposability
#3 How we built our infrastructure @jbaruch | jfrog.com/shownotes | gocenter.io
We’re big on those pipelines and promotions concepts If quality requirments are hit CI SERVER 1 If quality requirments are hit 2 Integration If quality requirments are hit 3 System Testing 4 Staging Production *
Number of clusters currently running @jbaruch | 5 jfrog.com/shownotes | gocenter.io Dev/Prod Parity
Running a few microservices Discovery Notifier @jbaruch | jfrog.com/shownotes Processor | gocenter.io
Running a few microservices Validator UI Backend @jbaruch | jfrog.com/shownotes UI | gocenter.io
This is what our cluster looks like @jbaruch | jfrog.com/shownotes | gocenter.io
Load testing • UI: 10K users with 100 requests per second • Backend: Load 10K modules… twice @jbaruch | jfrog.com/shownotes | gocenter.io
Chaos engineering for the poor @jbaruch | jfrog.com/shownotes | gocenter.io
#4 Running at scale @jbaruch | jfrog.com/shownotes | gocenter.io
Node pools, cause even nodes have to relax? @jbaruch | jfrog.com/shownotes | gocenter.io
Deployments using helm https://hub.helm.sh @jbaruch | jfrog.com/shownotes | gocenter.io Build, release, run
Keeping a close eye on container health • FluentD • Prometheus • Grafana Live Dashboard @jbaruch | jfrog.com/shownotes | gocenter.io Logs
Sometimes it’s good to bring a friend along @jbaruch | jfrog.com/shownotes | gocenter.io
We keep in touch with our nodes Kube-Slack Jenkins @jbaruch | jfrog.com/shownotes | gocenter.io Logs & Build, release, run
Scaling on many levels Node Compute Provision nodes when needed Run more microservices Messaging Up and Down Scaling based on queue depth What goes up must come down… usually @jbaruch | jfrog.com/shownotes | gocenter.io Concurrency
#5 Dare to dream @jbaruch | jfrog.com/shownotes | gocenter.io
What’s next for gocenter ChatOps Use Slack to let teams take more control In-Cluster Artifactory Making upgrades more seamless, but… Smart dependency selection Ratings, filters, etc @jbaruch | jfrog.com/shownotes | gocenter.io
Twitter ads and Q&A jfrog.com/ shownotes @jbaruch @jbaruch | jfrog.com/shownotes gocenter.io | gocenter.io
Today, Kubernetes is the defacto standard if you want to run container workloads in a production environment. As we set out to build our next generation of products, and run them smoothly in the cloud, we needed to move to Kubernetes too! In the process of building tools like KubeXray and GoCenter we learned a whole bunch.
Join this talk to learn how to get started with Kubernetes and how we got started at JFrog building our new tools. After the session you will know: – How we got to Kubernetes (and why we chose it) – How to know what you have in your apps and containers (and how we built ours) – How we’re running GoCenter at scale.