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 *

  • Quality gates - @jbaruch | jfrog.com/shownotes | gocenter.io

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… Your Feedback We want to hear from you what we need to improve! @jbaruch | jfrog.com/shownotes | gocenter.io

Twitter ads and Q&A jfrog.com/ shownotes @jbaruch @jbaruch | gocenter.io jfrog.com/shownotes | gocenter.io Munich #k8s meetup