A comprehensive Pulumi resource provider for creating and managing Kubernetes resources and workloads in a running cluster
—
Quality
Pending
Does it follow best practices?
Impact
Pending
No eval scenarios have been run
The Pulumi Kubernetes provider enables declarative management of Kubernetes resources using familiar programming languages. This provider offers comprehensive coverage of the Kubernetes API with type-safe resource management, advanced deployment abstractions, and seamless integration with the Pulumi ecosystem.
@pulumi/kubernetesnpm install @pulumi/kubernetesimport * as kubernetes from "@pulumi/kubernetes";
import * as k8s from "@pulumi/kubernetes"; // Common alias// Core resources (Pod, Service, ConfigMap, etc.)
import { core } from "@pulumi/kubernetes";
// Workload resources (Deployment, StatefulSet, etc.)
import { apps } from "@pulumi/kubernetes";
// Networking resources (Ingress, NetworkPolicy, etc.)
import { networking } from "@pulumi/kubernetes";
// RBAC resources (Role, ClusterRole, etc.)
import { rbac } from "@pulumi/kubernetes";
// Storage resources (StorageClass, PersistentVolume, etc.)
import { storage } from "@pulumi/kubernetes";
// Special capabilities
import { helm, yaml, kustomize } from "@pulumi/kubernetes";import { Provider, ProviderArgs } from "@pulumi/kubernetes";import * as k8s from "@pulumi/kubernetes";
// Create a deployment
const deployment = new k8s.apps.v1.Deployment("nginx", {
spec: {
replicas: 3,
selector: {
matchLabels: { app: "nginx" },
},
template: {
metadata: {
labels: { app: "nginx" },
},
spec: {
containers: [{
name: "nginx",
image: "nginx:1.21",
ports: [{ containerPort: 80 }],
}],
},
},
},
});
// Create a service to expose the deployment
const service = new k8s.core.v1.Service("nginx-service", {
spec: {
selector: { app: "nginx" },
ports: [{ port: 80, targetPort: 80 }],
type: "LoadBalancer",
},
});import * as k8s from "@pulumi/kubernetes";
// Deploy from YAML files
const app = new k8s.yaml.v2.ConfigFile("app", {
files: ["./k8s-manifests.yaml"],
});import * as k8s from "@pulumi/kubernetes";
// Deploy a Helm chart
const chart = new k8s.helm.v4.Chart("nginx", {
chart: "nginx",
repositoryOpts: {
repo: "https://charts.bitnami.com/bitnami",
},
values: {
replicaCount: 3,
service: { type: "LoadBalancer" },
},
});The @pulumi/kubernetes package provides comprehensive access to the Kubernetes API through several key components:
Fundamental Kubernetes resources for basic cluster operations including workload management, configuration, storage, and networking.
// Essential resource constructors
class Pod extends pulumi.CustomResource {
constructor(name: string, args: PodArgs, opts?: pulumi.ResourceOptions);
}
class Service extends pulumi.CustomResource {
constructor(name: string, args: ServiceArgs, opts?: pulumi.ResourceOptions);
}
class ConfigMap extends pulumi.CustomResource {
constructor(name: string, args: ConfigMapArgs, opts?: pulumi.ResourceOptions);
}
class Secret extends pulumi.CustomResource {
constructor(name: string, args: SecretArgs, opts?: pulumi.ResourceOptions);
}Key Resources: Pod, Service, ConfigMap, Secret, Namespace, PersistentVolume, PersistentVolumeClaim, ServiceAccount, Endpoints, Event, LimitRange, Node, PodTemplate, ReplicationController, ResourceQuota
High-level controllers for managing scalable applications, batch processing, and daemon processes across the cluster.
// Workload management resources
class Deployment extends pulumi.CustomResource {
constructor(name: string, args: DeploymentArgs, opts?: pulumi.ResourceOptions);
}
class StatefulSet extends pulumi.CustomResource {
constructor(name: string, args: StatefulSetArgs, opts?: pulumi.ResourceOptions);
}
class Job extends pulumi.CustomResource {
constructor(name: string, args: JobArgs, opts?: pulumi.ResourceOptions);
}
class CronJob extends pulumi.CustomResource {
constructor(name: string, args: CronJobArgs, opts?: pulumi.ResourceOptions);
}Key Resources: Deployment, StatefulSet, DaemonSet, ReplicaSet, Job, CronJob, ControllerRevision
Workload Resources Documentation
Network traffic management, ingress routing, and connectivity policies for secure and scalable cluster networking.
// Network management resources
class Ingress extends pulumi.CustomResource {
constructor(name: string, args: IngressArgs, opts?: pulumi.ResourceOptions);
}
class NetworkPolicy extends pulumi.CustomResource {
constructor(name: string, args: NetworkPolicyArgs, opts?: pulumi.ResourceOptions);
}
class IngressClass extends pulumi.CustomResource {
constructor(name: string, args: IngressClassArgs, opts?: pulumi.ResourceOptions);
}Key Resources: Ingress, NetworkPolicy, IngressClass, IPAddress, ServiceCIDR, ClusterCIDR
Networking Resources Documentation
Dynamic volume provisioning, storage class management, and Container Storage Interface (CSI) driver integration.
// Storage management resources
class StorageClass extends pulumi.CustomResource {
constructor(name: string, args: StorageClassArgs, opts?: pulumi.ResourceOptions);
}
class VolumeAttachment extends pulumi.CustomResource {
constructor(name: string, args: VolumeAttachmentArgs, opts?: pulumi.ResourceOptions);
}
class CSIDriver extends pulumi.CustomResource {
constructor(name: string, args: CSIDriverArgs, opts?: pulumi.ResourceOptions);
}Key Resources: StorageClass, VolumeAttachment, CSIDriver, CSINode, CSIStorageCapacity, VolumeAttributesClass
Storage Resources Documentation
Role-based access control for cluster security, authentication, and authorization management.
// Security and access control resources
class Role extends pulumi.CustomResource {
constructor(name: string, args: RoleArgs, opts?: pulumi.ResourceOptions);
}
class RoleBinding extends pulumi.CustomResource {
constructor(name: string, args: RoleBindingArgs, opts?: pulumi.ResourceOptions);
}
class ClusterRole extends pulumi.CustomResource {
constructor(name: string, args: ClusterRoleArgs, opts?: pulumi.ResourceOptions);
}
class ClusterRoleBinding extends pulumi.CustomResource {
constructor(name: string, args: ClusterRoleBindingArgs, opts?: pulumi.ResourceOptions);
}Key Resources: Role, RoleBinding, ClusterRole, ClusterRoleBinding
Deploy and manage Helm charts as Pulumi resources with full lifecycle management and value customization.
// Helm Chart v4 (recommended)
class Chart extends pulumi.ComponentResource {
constructor(name: string, args: ChartArgs, opts?: pulumi.ComponentResourceOptions);
}
// Helm Release v3 (legacy)
class Release extends pulumi.CustomResource {
constructor(name: string, args: ReleaseArgs, opts?: pulumi.ResourceOptions);
}
interface ChartArgs {
chart: pulumi.Input<string>;
version?: pulumi.Input<string>;
values?: pulumi.Input<any>;
repositoryOpts?: pulumi.Input<RepositoryOptsArgs>;
fetchOpts?: pulumi.Input<FetchOptsArgs>;
}Helm Integration Documentation
Deploy Kubernetes resources from existing YAML files and directories with full Pulumi integration and transformation support.
// YAML ConfigFile for single files
class ConfigFile extends pulumi.ComponentResource {
constructor(name: string, args: ConfigFileArgs, opts?: pulumi.ComponentResourceOptions);
}
// YAML ConfigGroup for multiple files
class ConfigGroup extends pulumi.ComponentResource {
constructor(name: string, args: ConfigGroupArgs, opts?: pulumi.ComponentResourceOptions);
}
interface ConfigFileArgs {
files: pulumi.Input<string[]>;
transformations?: ((o: any, opts: pulumi.CustomResourceOptions) => void)[];
resourcePrefix?: pulumi.Input<string>;
}Deploy applications using Kustomize directory configurations with full customization and multi-environment support.
// Kustomize Directory processing
class Directory extends pulumi.ComponentResource {
constructor(name: string, args: DirectoryArgs, opts?: pulumi.ComponentResourceOptions);
}
interface DirectoryArgs {
directory: pulumi.Input<string>;
transformations?: ((o: any, opts: pulumi.CustomResourceOptions) => void)[];
resourcePrefix?: pulumi.Input<string>;
}Kustomize Integration Documentation
Configure Kubernetes cluster connections, authentication, and advanced provider features for production deployments.
class Provider extends pulumi.ProviderResource {
constructor(name: string, args?: ProviderArgs, opts?: pulumi.ResourceOptions);
}
interface ProviderArgs {
kubeconfig?: pulumi.Input<string>;
context?: pulumi.Input<string>;
cluster?: pulumi.Input<string>;
namespace?: pulumi.Input<string>;
enableServerSideApply?: pulumi.Input<boolean>;
enableConfigMapMutable?: pulumi.Input<boolean>;
deleteUnreachable?: pulumi.Input<boolean>;
helmReleaseSettings?: pulumi.Input<HelmReleaseSettings>;
kubeClientSettings?: pulumi.Input<KubeClientSettings>;
}Provider Configuration Documentation
The package provides comprehensive TypeScript definitions with:
// Type system imports
import * as inputs from "@pulumi/kubernetes/types/input";
import * as outputs from "@pulumi/kubernetes/types/output";
import * as enums from "@pulumi/kubernetes/types/enums";
// Example usage
const deployment: k8s.apps.v1.Deployment = new k8s.apps.v1.Deployment("app", {
spec: {
replicas: 3,
selector: { matchLabels: { app: "nginx" } },
template: {
metadata: { labels: { app: "nginx" } },
spec: {
containers: [{
name: "nginx",
image: "nginx:1.21",
ports: [{ containerPort: 80 }],
}],
restartPolicy: enums.core.v1.RestartPolicy.Always,
},
},
},
});Install the package:
npm install @pulumi/kubernetesConfigure cluster access:
import * as k8s from "@pulumi/kubernetes";
const provider = new k8s.Provider("k8s", {
kubeconfig: "~/.kube/config",
});Deploy your first resource:
const namespace = new k8s.core.v1.Namespace("my-app", {
metadata: { name: "my-application" },
});Use deployment abstractions:
// YAML deployment
const app = new k8s.yaml.v2.ConfigFile("app", {
files: ["./manifests/*.yaml"],
});
// Helm chart deployment
const chart = new k8s.helm.v4.Chart("nginx", {
chart: "nginx",
repositoryOpts: { repo: "https://charts.bitnami.com/bitnami" },
});This comprehensive Kubernetes provider enables you to manage any Kubernetes resource with the full power of Pulumi's programming model, type safety, and infrastructure-as-code capabilities.
Install with Tessl CLI
npx tessl i tessl/npm-pulumi--kubernetes