Sign up or log in to bookmark your favorites and sync them to your phone or calendar.

AppOps/AppDev - KubeCon [clear filter]
Thursday, December 7


The Road to More Usable Kubernetes - Joe Beda, Heptio
At KubeCon EU, in Berlin, I got up on stage and stated that "Kubernetes Sucks (but all software sucks)". While we still have work to do, in the past several months the community has done great work to solve a whole host of issues to make Kubernetes “suck less.” In this talk I will outline the ways that the community has made this happen both in the core project and in the wider ecosystem.

Things are still developing, but here are the areas that I want to highlight. Hopefully we'll have talks on many of these so that I can highlight where and when folks can find out more. I won't be able to cover everything happening in the ecosystem but I can hint at the diversity and commitment to solving these issues.

* *Simpler application description.* As a community we are continuing to build more tcapable and simpler tools for describing applications through projects like ksonnet, OpenCompose, Kompose, and Helm.
* *Serverless platforms.* Through “function as a service” like systems we can abstract much of the nitty gritty around getting code packaged and running. In addition, scaling can be easy and automatic as code is run only when needed.
* *Simpler cluster install and admin.* kubeadm and how it is becoming a common toolkit. Similar work is ongoing to explore the idea of standardizing the description of a cluster at the infrastructure level through projects like Kubicorn. In addition, new APIs, such as the certificates API, are key building blocks for getting secure clusters up and running.
* *Curated development experiences.* Systems like Draft help to automate the build/launch/update cycle for development workflows. Others are also exploring ways to connect developers to clusters.
* *Making Kubernetes boring.* Kubernetes is maturing as a platform. As that happens, things in the "nucleus" are slowing down. In the past 6 months we've seen a concerted effort to encourage new features to be built with extensibility mechanisms as much as possible. This allows those projects to move fast while enabling exploration of the problem space.
* *Conformance.* Another key enabler for widespread Kubernetes adoption is conformance. There has been a wide set of folks involved in describing what should get to be called "Kubernetes". Tools like Sonobuoy point the direction to making this be an automated process that anyone can run against any cluster.
* *Observability.* Prometheus continues to be the go-to OSS solution for monitoring in the Kubernetes world. In additions, systems like linkerd and Istio/envoy enable introspection at the microservice mesh level.

We still have many challenges. Many of these are going to take long concerted efforts to fix. We are trapped, in some ways, by our promise of backward compatibility. It is often better to live with something annoying than to force breaking changes on our user base.

*Call to action:* Great job community! But the job isn't done. Let's keep working hard to bring Kubernetes to a larger and larger set of users and environments.

avatar for Joe Beda

Joe Beda

CTO, Heptio
Joe is the CTO and co-founder of Heptio. H started his career at Microsoft working on Internet Explorer (he was young and naive). Throughout his 7 years at Microsoft and 10 years at Google, Joe has worked on GUI frameworks, real-time voice and chat, telephony, machine learning for... Read More →

Thursday December 7, 2017 11:10am - 11:45am
Ballroom A, Level 1


Squash: A Debugger for Kubernetes Apps - Idit Levine, solo.io
Squash is a tool for debugging distributed applications.

Most cloud native applications written today follow the microservice architecture. These applications are distributed by nature, and therefore hard to debug.

Microservice engineers debug their applications by printing values of select variables into log files. This leaves them with the daunting task of sorting through reams of log data, which at best provide a partial view of the state of application. This approach is cumbersome, time consuming and works better with "easy" bugs.

Many advanced tools to debug monolitic applications exist in the market, and provide users with powerful ways to dissect their programs and to interact with them on the fly. However, these tools cannot be used directly for debugging applications that follow the microservice architecture pattern.

Squash is designed to bring the strength of modern debuggers and the convenience of their IDEs to microservices developers. Squash uses popular, powerful and mature debuggers (gdb, dlv, java debugging) and integrates them seamlessly with Kubernetes. This allows devs to use the debugger of their choice, and the IDEs that support it, to develop microservices on any platform.

avatar for Idit Levine

Idit Levine

Founder & CEO, Solo.io
Idit Levine is the founder and CEO of Solo.io, a company that develops tools to help enterprises adopt and extend innovative cloud technologies alongside modernizing their existing IT investments. The Solo.io portfolio of open source and commercial products includes Gloo (commun... Read More →

Thursday December 7, 2017 11:55am - 12:30pm
Meeting Room 10AB, Level 3


Testing Distributed Software on Kubernetes with PowerfulSeal [I] - Mikolaj Pawlikowski, Bloomberg
When it's about distributed systems, testing is hard. But it's more fun when you have a Seal.

Come and meet PowerfulSeal, a simple solution to introduce some chaos to your systems.

PowerfulSeal understands Kubernetes and lets you:
- write simple yaml policies to describe scenarios of destruction
- target specific pods and deployments (k8s integration)
- target specific nodes and take them up and down
- discover things in interactive mode with awesome auto-complete

Don't wait for your software to break, break it yourself, and fix it before it's too late!


Mikolaj Pawlikowski

Software Engineer Project Lead, Bloomberg
Mikolaj Pawlikowski previously built 2 startups, worked as a freelance consultant and collaborated on open source projects like Cozy Cloud. He has been evangelizing containers and their orchestration tirelessly at Bloomberg. In his free time he's researching productivity and happ... Read More →

Thursday December 7, 2017 2:00pm - 2:35pm
Meeting Room 10AB, Level 3


Developing Locally with Kubernetes [I] - Ryan Jarvinen, Independent
This talk will cover several common local development scenarios, and will review the major tradeoffs found when adopting minikube, minishift, draft, and other popular tools for enabling local development of distributed web solutions.

Learn how using Kubernetes locally can help your web teams deliver solutions faster and more reliably.

avatar for Ryan Jarvinen

Ryan Jarvinen

Developer Advocate, Red Hat
Ryan Jarvinen is a Developer Advocate and Open Source Evangelist focusing on improving developer experience in the container community. He lives in Oakland, California and is passionate about open source, open standards, open government, and digital rights. You can reach him as "RyanJ... Read More →

Thursday December 7, 2017 2:45pm - 3:20pm
Meeting Room 10AB, Level 3


Helm Chart Patterns [I] - Vic Iglesias, Google
You will learn about the patterns and best practices we have learned from reviewing and maintaining the charts in the public Helm Charts repo. You will learn how to make your charts reproducible, scalable, flexible, configurable, and composable.

avatar for Vic Iglesias

Vic Iglesias

Solutions Architect, Google
Vic Iglesias is a Staff Solutions Architect at Google with years of experience in both on-premise and in-cloud workload deployment, orchestration and management. He is a maintainer of the Kubernetes Charts repo and focuses on helping customers adopt Container Engine reliably, securely... Read More →

Thursday December 7, 2017 3:50pm - 4:25pm
Ballroom A, Level 1


Developer Tooling for Kubernetes Configuration [I] - Gareth Rushgrove, Puppet
Writing Kubernetes YAML files provides a simple starting point for most users of Kubernetes. Mainly through the power of copy and paste we all get our first examples working. But as usage of Kubernetes grows, spanning teams and time, we build up a lot of those YAML files. Many people reach for templating, or look at higher-level tooling like Helm packages next. But catching errors is still mainly a manual process of running the resulting configuration against a working Kubernetes cluster.

In this talk we’ll look at what’s missing in this workflow, looking for inspiration from developer tooling from other languages and frameworks. In particular we’ll consider:

* Ways of providing feedback about invalid configuration in our text editors
* Validating configuration against the Kubernetes types, especially useful when generating that configuration from templates
* Checking Kubernetes configuration is valid for different versions of Kubernetes
* What unit testing our Kubernetes configuration looks like
* How to integrate all of this together into a continuous integration based workflow

We’ll show examples using straight YAML files, templating and higher-level tooling like Helm and Jsonnet. The talk will also cover the benefits of a standard development environment, especially for new users, and provide tips for those getting started and more experienced users. The audience should come away with ideas for making there Kubernetes experience more efficient and more developer friendly.

avatar for Gareth Rushgrove

Gareth Rushgrove

Director Product Management, Snyk
Gareth works remotely from Cambridge, UK, helping to build interesting tools for people to better manage infrastructure and applications. He currently works at Snyk, working on developer-first security tooling. He has previously worked for the UK Government Digital Service focused... Read More →

Thursday December 7, 2017 4:35pm - 5:10pm
Meeting Room 10AB, Level 3
Friday, December 8


A Scheduling Simulator for Capacity Estimation of Kubernetes Clusters - Avesh Agarwal, Red Hat
Capacity planning is very important for meeting dynamic demands in any clusters. Without having an approximate view of the remaining capacity in a cluster, it is hard for cluster operators to decide if and when the cluster should be provisioned with more capacity or not. In Kubernetes clusters, capacity is associated with worker nodes in terms of resources such as cpu, memory or storage. Discussing capacity in terms of individual resources may be a bit ambiguous because a Pod is the smallest schedulable unit in Kubernetes clusters. Therefore, cluster operators may be more interested in knowing an approximate number of pods of a specific size (amount of resources) that can be scheduled on a cluster. This talk will introduce a new tool, called cluster capacity, that can be used to analyze the capacity of a Kubernetes cluster in this way. First, the talk will discuss about its use cases, followed by its design and implementation as a scheduling simulator. The talk will also include a demo to demonstrate various ways the tool can be run against a Kubernetes cluster. This talk will conclude with the discussion of future directions for this tool.

Friday December 8, 2017 11:10am - 11:45am
Meeting Room 10AB, Level 3


Webhooks for Automated Updates [B] - Rajashree Mandaogane, Rancher Labs
In most software projects, there is a tremendous focus on increasing efficiency and reliability. Rolling updates in Kubernetes is a really good example of how real-time updates to applications can be made reliable, without any downtime. Once you have a reliable system, you then need to make your software development process even more efficient. A key component in efficiency is automation. Automated builds on Docker cloud are a great way to efficiently build images when new code is pushed. In this talk we will discuss how we can take automation one step further. We will make use of the Kuberbnetes API calls, along with Docker Hub's webhooks feature, to automatically start rolling updates of deployments when a new image/tag is pushed to Docker Hub. We will demonstrate how you can write a micro-service that will make these calls after consuming the data pushed by Docker Hub's webhook.

avatar for Rajashree Mandaogane

Rajashree Mandaogane

Software Engineer, Rancher Labs
Rajashree, an NC State graduate is a Software Engineer at Rancher Labs. She loves programming in Golang and working on container orchestration. She lives by the motto, “You’ll never know what you can do, until you try”. This has led her not only to being a developer, but also... Read More →

Friday December 8, 2017 11:55am - 12:30pm
Meeting Room 10AB, Level 3


CrashLoopBackoff, Pending, FailedMount and Friends: Debugging Common Kubernetes Cluster and Application Issues [B] - Joe Thompson, Oteemo
Nothing is more frustrating than deploying a shiny new application on Kubernetes and having it fail immediately (usually five minutes before the big demo). Is it a problem with the pod network? Pods Pending or in CrashLoopBackoff, Services not serving, images not pulling? Maybe you're just plain out of resources. If you're new to Kubernetes, figuring it out from scratch can take hours you don't have. We'll show you how to dig in, identify the problem, resolve it, and learn what to watch for so you aren't taken by surprise next time.

avatar for Joe Thompson

Joe Thompson

Solutions Architect, Mesosphere
I'm a solutions architect for Mesosphere and a regular participant in the Helm and SIG-Apps communities. Prior to Mesosphere, I worked at Capital One, CoreOS and Red Hat (among others), providing practical solutions and training in and for Kubernetes and other cloud environments... Read More →

Friday December 8, 2017 2:00pm - 2:35pm
Meeting Room 10AB, Level 3


One Chart to Rule Them All: Continuous Deployment with Helm at Ticketmaster - Michael Goodness & Raphael Deem, Ticketmaster
As Kubernetes continues to mature, it's increasingly hard for users to keep track of the latest resource types, much less the best way to employ them. ReplicationControllers and Services were easy enough. Then came Deployments and Ingresses. Now we have PodDisruptionBudgets, ClusterRoleBindings, and HorizontalPodAutoscalers. Luckily, we also have Helm to package and deploy these various components (and more) as a single unit.

In this talk we'll dissect the single, flexible Helm chart Ticketmaster developed for use by multiple product teams. We'll show how we use just a handful of variables to enable log collection with Fluentd, metric scraping with Prometheus, and automatic scaling of pods. Then we'll demonstrate the GitLab CI workflow through which we deploy multiple builds of an application to multiple Kubernetes clusters running both on-prem and in AWS.


Raphael Deem

Raphael is a Systems Engineer at Ticketmaster and open source contributor. He is a relative newcomer to the community, having started working with Kubernetes within the last six months. Prior to working at Ticketmaster, he was a remote engineer for Platform.sh, a Paris-based PaaS... Read More →
avatar for Michael Goodness

Michael Goodness

Lead Systems Engineer, Kubernauts, Ticketmaster
Mike is a Lead Systems Engineer on the Kubernauts team at Ticketmaster and a CNCF Ambassador. He began working with Kubernetes in late 2015, and quickly became an avid member of the community. While primarily involved with day-to-day cluster operations, he is also keenly interested... Read More →

Friday December 8, 2017 2:45pm - 3:20pm
Meeting Room 10AB, Level 3


kubectl apply, and The Dark Art of Declarative Object Management [I] - Aaron Levy, CoreOS
kubectl apply is a powerful and commonly used command meant for declaratively managing your applications. However, even if you are using this command today, you may still be surprised by how it functions. In this talk we will go over the inner-workings of the kubectl apply command, and discuss patterns for successfully managing your applications using declarative object management techniques.

We will cover areas such as the interplay between imperative commands (set, scale, edit, etc.) and declarative object management. The different types of patch strategies, and how object merges are calculated. As well as pros/cons of the various approaches, and some subtle gotchas you might run into.

When you leave this talk it will make sense when you describe that your application is managed as a declarative base, with replicas driven imperatively, by an autoscaler that is declaratively configured. In other words, Kubernetes magic.


Aaron Levy

OpenShift Engineering, Red Hat
Aaron Levy is a software engineer at CoreOS, working on all things Kubernetes. He is also the lead maintainer of Bootkube, a kubernetes-incubator project that enables launching self-hosted kubernetes clusters.

Friday December 8, 2017 3:40pm - 4:15pm
Ballroom A, Level 1


ConfigMaps 102: Using ConfigMaps in Dynamic Application Deployments - Trevor McKay, Red Hat
ConfigMaps let you “decouple configuration artifacts from image content”. In other words, if you use ConfigMaps wisely in your apps you’ll never have to respin an image just to change a flag. This is a powerful feature which greatly simplifies creating and managing containerized applications. As powerful as they are, however, use of ConfigMaps has typically required a pretty static application deployment -- for example, ConfigMaps must exist before the apps that reference them, their names must be known ahead of time, and it was only recently that the (wonderful) idea of “optional” ConfigMaps was introduced. In this talk we’ll look at several ways we’ve found to use ConfigMaps dynamically in the context of a management platform for Apache Spark clusters we call Oshinko. You’ll leave armed with new ideas of how to leverage the power of ConfigMaps in dynamic applications with a broader set of deployment options.


Trevor McKay

Principal Software Engineer, Red Hat, Inc.
Trevor McKay is a Principal Software Engineer at Red Hat with a background in distributed computing and big data processing, having worked extensively with Apache Spark on OpenStack and now on Kubernetes. He is passionate about simplifying user experience in general and making analytics... Read More →

Friday December 8, 2017 4:25pm - 5:00pm
Meeting Room 10AB, Level 3