Pulumi Kubespy: Watch Kubernetes Deployments as They Happen
Seattle startup Pulumi has released a tool called kubespy that displays changes made to a Kubernetes object in real time. It’s based on the Pulumi work to support Kubernetes, which it announced a few weeks ago.
In a blog post example, you can watch the changes as nginx is deployed using a naked pod.
“It’s hard for customers to know what’s going on inside a Kubernetes cluster. … People tend to take their YAML files and throw them at the cluster and hope for the best. That means they’re manually polling through logs and crawling through events, trying to figure out what happened,” said Joe Duffy, co-founder and CEO.
Kubespy is available on GitHub and can be used even if you’re not using Pulumi for deployments, to inspect the cluster and give you interactive information such as failure, network connectivity problems and more.
“Think of it as Curl, but for Kubernetes clusters,” Duffy said. “It gives you rich status information that you can use to debug and gain insight.”
So far, kubespy has three commands:
- status — which tracks in real time emits all changes made to the .status field of an arbitrary Kubernetes resource, as a JSON diff.
- changes — which tracks changes to any field in a Kubernetes resource, as a JSON diff.
- trace — which follows changes a complex Kubernetes resource makes throughout a cluster, and aggregates them into a high-level summary, which is updated in real time.
It allows users to query any resources the API server knows about, including CustomResourceDefinitions (CRDs). A second blog post focuses on the trace command, illustrating how you can watch as a service is deleted or an unhealthy pod becomes healthy as a new version is rolled out.
Building on the idea of infrastructure as code, Pulumi is focused on enabling developers and DevOps teams to use the languages and tools they already love to deploy to any public or private infrastructure — and across infrastructures.
“Kubernetes today has a lot of the same challenges we saw in AWS Manager development — lots of YAML, lots of Bash scripts as people are building applications, managing applications,” Duffy said. “As more people are doing multicloud, it requires people to master a lot of different YAML dialects, lots of different tools. That’s where this bash stuff keeps growing out of control, because people are using tools that frankly, were never meant to work together.
“With this new approach, you can do things like provision a GKE Kubernetes cluster, AKS Manager, AKS database in the same program, then provision services in, say, Amazon. You know, like an S3 bucket or a hosted MySQL database then use that for your Kubernetes application. That’s really hard today,” he said. “With Pulumi, you just code up some typescripts — [just a few] lines of code where it used to be thousands of lines of YAML, and we manage all the provisioning and management no matter what the cloud deployment is.”
This lays the foundation for doing a lot more advanced deployment orchestration, he said.
“Customers are so excited about this, they’re having their DevOps teams use different tools to provision Kubernetes clusters, developers using entirely different tools — it’s sort of the wild west. It’s hard for decision-makers to have any control over policies or management, and it’s frustrating for the DevOps teams because there’s configuration sprawl, files popping out everywhere. We see infrastructure as code as a way to tame that and all those YAML files.”
The co-founders worked on .NET in the Common Language Runtime so they understand how to do multi-language runtimes, Duffy said.
The platform is extensible. The engine is written in Go uses a plug-in model where you can plug in your own languages. It doesn’t take an opinion on the language in the IDE.
They’re working with a customer on .NET support and Java is down the road, Duffy said.
“We have ways to take your existing applications and deploy them using Pulumi. If you just want the GitOps experience or the CLI experience, you can take your existing YAML files and deploy them as they are without changing them at all. Maybe you want to convert one YAML file at a time or convert as you go, that type of mixed environment — we call it brownfield — is really important for customers with large investments in Kubernetes. Similarly, we can take Helm charts and just deploy them. If I want to provision an S3 bucket in a Kubernetes app, usually I have to use two different toolchains for that.
“It’s astonishing to me the lengths people will go to get tools to work together that were just not designed to work together. With Pulumi, you can just order the bucket and the deployment and it all works in a unified way. “
Going forward, the company is working to make it a team environment, and in the coming weeks will be releasing tools around deployment orchestration, service meshes and more, he said.
Pulumi is a sponsor of The New Stack.