0.1.0 • Published 4 years ago

@pulumi/query-kubernetes v0.1.0

Weekly downloads
45
License
Apache-2.0
Repository
github
Last release
4 years ago

Build Status Slack NPM version License

Kubernetes SDK for Pulumi Query

A relational TypeScript SDK for querying Kubernetes resources in any cluster, either on-prem or in any cloud.

Users write a program using the relational query SDK, and then run them with the pulumi query subcommand of the Pulumi CLI. There are many examples. This one finds all distinct versions of MySQL running in your cluster:

import * as kq from "@pulumi/query-kubernetes";

// Find all distinct versions of MySQL running in your cluster.
const mySqlVersions = kq
    .list("v1", "Pod")
    .flatMap(pod => pod.spec.containers)
    .map(container => container.image)
    .filter(imageName => imageName.includes("mysql"))
    .distinct();

mySqlVersions.forEach(console.log);

pulumi query will inspect your local kubeconfig file for the active context, and run the query programmatically against the resources in the cluster it points to.

Use cases

Operations:

  • Which applications are scheduled on nodes that report high memory pressure? (See example.)
  • What is the difference between the last two rollouts of a Deployment? (See example.)
  • Which applications are currently emitting logs that contain the text "ERROR:", and why?

Security and Compliance:

  • Which Service Accounts have access to this Secret?
  • Which CertificateSigningRequests were approved this week, and what are they being used for? (See example.)

Governance:

  • Which Services are publicly exposed to the Internet?
  • How many distinct versions of the mysql container are running in all of my clusters? (See example.)

Requirements

  • Pulumi CLI version > 1.5.0.

Getting Started

The directory sdk/nodejs/examples/list contains many example queries.

cd sdk/nodejs/examples/list
yarn install

Now from that directory, you can run pulumi query. The default example prints a simple report of all namespaces live in the cluster of your active $KUBECONFIG context.

PULUMI_DEBUG_COMMANDS=true pulumi query

Once you've done this, have a look at the queries directory, which contains many more interesting sample queries which you can modify to your uses.