There has been a surge of interest in containers, microservices, and Kubernetes in recent years, fueled by the need for developers to share apps that will scale and run in a consistent manner across many different environments. Whether it’s dev, staging, testing, or production, developers need assurance that the code they deploy to one environment is going to work in another. Containers, microservices, and Kubernetes provide such assurance.
In this episode of the O’Reilly Media Podcast, I talk with JP Phillips, platform engineer at IBM Cloud. IBM is driving development in the container space, as shown through last year’s launch of Istio, an open cloud service that allows developers to connect, manage, and secure networks of different microservices. Istio, a joint collaboration between IBM, Google, and Lyft, (in conjunction with the Cloud Native Computing Foundation), is platform agnostic and runs on Kubernetes platforms, such as IBM’s Cloud Container Service. Interest in the platform is growing. IBM's Daniel Berg, who is giving a talk on Istio at the upcoming OSCON conference in Portland, recently led a hands-on workshop at KubeCon in Copenhagen to help developers learn how Istio can solve common challenges with microservices deployed within Kubernetes.
Phillips explains that containers enable a “consistent delivery mechanism” for applications, and Kubernetes extends that capability by creating a “unified language” that everyone can speak. This, in turn, helps teams fully utilize all available capacity to consistently run systems at scale. In our talk, Phillips and I also discuss how enterprise developers can get started using these tools, and some of the reasons behind their rapid adoption.
Here are some highlights from our discussion:
Bring team confidence to enterprise developers
The way they’ve designed Kubernetes and its use of containers to actually run apps has become very powerful. It really gives team confidence that the process of moving an app from a laptop through all the different environments and into production is going to be successful at the end of the day...[developers] are not going to run into a lot of issues where ‘it worked on my laptop, why doesn’t it work in production?’
Automated monitoring a key use case of Kubernetes for the enterprise
In Kubernetes, there’s the concept of a cluster autoscaler so you can configure it such that if you’re at a certain capacity or you’re hitting certain levels of CPU, it will automatically add another node to your cluster. The newer project is the horizontal pod autoscaler, which lets you capture custom metrics such that you can tell the queuing system ‘if I hit a certain threshold, then I need more workers; scale my workers up by X amount.’ It’s this notion of being able to put the system on autopilot so you’re not having to constantly monitor it, and it’s being more proactive. The more legacy approach is, ‘let’s create alerts and let’s create monitoring.’ Well, in that case, you have to have people looking at the dashboards, you have to have an individual responding to an alert.
The future of containers and Kubernetes
To me, the most exciting work is taking place in the extended ecosystem. So, you have projects like Helm, which is all about packaging your app and being able to configure it the same way across environments. Istio, which was a project co-developed by Google, IBM, and Lyft, essentially gives you a network control plan for your microservices, and it's using the on-board proxy technology developed by Lyft. Cilium is a very new project; it's a network and security API, so it sort of has ties into projects like Istio. And then there's Jaeger, which is distributed tracing. ... Tracing is the one where it's sort of like the third leg that is becoming more and more popular. So, having a system like Jaeger be easily deployed into your Kubernetes environment really gives you more insight into your microservices. I think that's going to play a huge role.
Plethora of resources to learn how to become productive with containers and Kubernetes
Phillips recommends the following resources, which he visits regularly, for those looking to better understand containers and Kubernetes, and where it can provide value to their work:
- Containers Code Patterns
- TGI Kubernetes (weekly YouTube series hosted by Joe Beda, one of the Kubernetes creators)
- Kubernetes: Up and Running (O’Reilly book)
- Kubernetes The Hard Way (GitHub tutorial by Kelsey Hightower)
- KubeWeekly (newsletter with links to posts, articles, podcasts, YouTube videos)
- Lachlan Evenson (GitHub repo where he takes projects for a spin)
- CNCF (offers Kubernetes certification for administrators and, soon, app developers)
- Katacoda (offers tasks and a playground in which to learn Kubernetes)
This post is part of a collaboration between O'Reilly and IBM. See our statement of editorial independence.