Important: This documentation covers Yarn 1 (Classic).
For Yarn 2+ docs and migration guide, see yarnpkg.com.

Package detail

@pulumi/kubernetes

pulumi1.6mApache-2.04.23.0TypeScript support: included

Build Status Slack [![NPM

pulumi, kubernetes, category/cloud, kind/native

readme

Build Status Slack NPM version Python version GoDoc License

Pulumi Kubernetes Resource Provider

The Kubernetes resource provider for Pulumi lets you create, deploy, and manage Kubernetes API resources and workloads in a running cluster. For a streamlined Pulumi walkthrough, including language runtime installation and Kubernetes configuration, select "Get Started" below.

Introduction

pulumi-kubernetes provides an SDK to create any of the API resources available in Kubernetes.

This includes the resources you know and love, such as:

  • Deployments
  • ReplicaSets
  • ConfigMaps
  • Secrets
  • Jobs etc.

Kubernetes API Version Support

The pulumi-kubernetes SDK closely tracks the latest upstream release, and provides access to the full API surface, including deprecated endpoints. The SDK API is 100% compatible with the Kubernetes API, and is schematically identical to what Kubernetes users expect.

We support Kubernetes clusters with version >=1.9.0.

How does API support for Kubernetes work?

Pulumi’s Kubernetes SDK is manufactured by automatically wrapping our library functionality around the Kubernetes resource OpenAPI spec as soon as a new version is released! Ultimately, this means that Pulumi users do not have to learn a new Kubernetes API model, nor wait long to work with the latest available versions.

Note: Pulumi also supports alpha and beta APIs.

Visit the FAQ for more details.

References

Prerequisites

  1. Install Pulumi.
  2. Install a language runtime such as Node.js, Python or .NET.
  3. Install a package manager
    • For Node.js, use NPM or Yarn.
    • For Python, use pip.
    • For .NET, use Nuget which is integrated with the dotnet CLI.
  4. Have access to a running Kubernetes cluster
    • If kubectl already works for your running cluster, Pulumi respects and uses this configuration.
    • If you do not have a cluster already running and available, we encourage you to explore Pulumi's SDKs for AWS EKS, Azure AKS, and GCP GKE. Visit the API reference docs in the Pulumi Registry for more details.
  5. Install kubectl.

Installing

This package is available in many languages in the standard packaging formats.

For Node.js use either npm or yarn:

npm:

npm install @pulumi/kubernetes

yarn:

yarn add @pulumi/kubernetes

For Python use pip:

pip install pulumi-kubernetes

For .NET, dependencies will be automatically installed as part of your Pulumi deployments using dotnet build.

To use from Go, use go install to grab the latest version of the library

$ go install github.com/pulumi/pulumi-kubernetes/sdk/v4/go/kubernetes@latest

Quick Examples

The following examples demonstrate how to work with pulumi-kubernetes in a couple of ways.

Examples may include the creation of an AWS EKS cluster, although an EKS cluster is not required to use pulumi/kubernetes. It is simply used to ensure we have access to a running Kubernetes cluster to deploy resources and workloads into.

Deploying a YAML Manifest

This example deploys resources from a YAML manifest file path, using the transient, default kubeconfig credentials on the local machine, just as kubectl does.

import * as k8s from "@pulumi/kubernetes";

const myApp = new k8s.yaml.ConfigFile("app", {
    file: "app.yaml"
});

Deploying a Helm Chart

This example creates an EKS cluster with pulumi/eks, and then deploys a Helm chart from the stable repo using the kubeconfig credentials from the cluster's Pulumi provider.

import * as eks from "@pulumi/eks";
import * as k8s from "@pulumi/kubernetes";

// Create an EKS cluster.
const cluster = new eks.Cluster("my-cluster");

// Deploy Wordpress into our cluster.
const wordpress = new k8s.helm.v3.Chart("wordpress", {
    repo: "stable",
    chart: "wordpress",
    values: {
        wordpressBlogName: "My Cool Kubernetes Blog!",
    },
}, { providers: { "kubernetes": cluster.provider } });

// Export the cluster's kubeconfig.
export const kubeconfig = cluster.kubeconfig;

Deploying a Workload using the Resource API

This example creates a EKS cluster with pulumi/eks, and then deploys an NGINX Deployment and Service using the SDK resource API, and the kubeconfig credentials from the cluster's Pulumi provider.

import * as eks from "@pulumi/eks";
import * as k8s from "@pulumi/kubernetes";

// Create an EKS cluster with the default configuration.
const cluster = new eks.Cluster("my-cluster");

// Create a NGINX Deployment and Service.
const appName = "my-app";
const appLabels = { appClass: appName };
const deployment = new k8s.apps.v1.Deployment(`${appName}-dep`, {
    metadata: { labels: appLabels },
    spec: {
        replicas: 2,
        selector: { matchLabels: appLabels },
        template: {
            metadata: { labels: appLabels },
            spec: {
                containers: [{
                    name: appName,
                    image: "nginx",
                    ports: [{ name: "http", containerPort: 80 }]
                }],
            }
        }
    },
}, { provider: cluster.provider });

const service = new k8s.core.v1.Service(`${appName}-svc`, {
    metadata: { labels: appLabels },
    spec: {
        type: "LoadBalancer",
        ports: [{ port: 80, targetPort: "http" }],
        selector: appLabels,
    },
}, { provider: cluster.provider });

// Export the URL for the load balanced service.
export const url = service.status.loadBalancer.ingress[0].hostname;

// Export the cluster's kubeconfig.
export const kubeconfig = cluster.kubeconfig;

Contributing

If you are interested in contributing, please see the contributing docs.

Code of Conduct

You can read the code of conduct here.

changelog

CHANGELOG

4.23.0 (May 1, 2025)

Changed

4.22.2 (April 15, 2025)

Fixed

4.22.1 (March 14, 2025)

Fixed

4.22.0 (March 13, 2025)

Changed

Fixed

4.21.1 (January 27, 2025)

Added

4.21.0 (January 16, 2025)

Changed

4.20.0 (January 14, 2025)

Added

4.19.0 (December 11, 2024)

Changed

4.18.4 (December 5, 2024)

Changed

Fixed

4.18.3 (October 31, 2024)

Fixed

4.18.2 (October 16, 2024)

Fixed

4.18.1 (September 13, 2024)

Added

Changed

4.18.0 (September 3, 2024)

Added

  • The new enableSecretMutable provider configuration option treats changes to Secrets as updates instead of replacements (similar to the enableConfigMapMutable option).

    The default replacement behavior can be preserved for a particular Secret by setting its immutable field to true. (https://github.com/pulumi/pulumi-kubernetes/issues/2291)

    Note: These options (enableSecretMutable and enableConfigMapMutable) may become the default behavior in a future v5 release of the provider. Programs that depend on the replacement of Secrets and ConfigMaps (e.g. to trigger updates for downstream dependencies like Deployments) are recommended to explicitly specify immutable: true.

  • A warning is now emitted if an object has finalizers which might be blocking deletion. (https://github.com/pulumi/pulumi-kubernetes/issues/1418)

  • EXPERIMENTAL: Generic await logic is now available as an opt-in feature. Running a program with PULUMI_K8S_AWAIT_ALL=true will now cause Pulumi to await readiness for all resources, including custom resources.

    Generic readiness is determined according to some well-known conventions (like the "Ready" condition) as determined by cli-utils.

    Pulumi's current behavior, without this feature enabled, is to assume some resources are immediately available, which can cause downstream resources to fail.

    Existing readiness logic is unaffected by this setting. (https://github.com/pulumi/pulumi-kubernetes/issues/2996)

  • EXPERIMENTAL: The pulumi.com/waitFor annotation was introduced to allow for custom readiness checks. This override Pulumi's own await logic for the resource (however the pulumi.com/skipAwait annotation still takes precedence).

    The value of this annotation can take 3 forms:

    1. A string prefixed with jsonpath= followed by a JSONPath expression and an optional value.

      The JSONPath expression accepts the same syntax as kubectl get -o jsonpath={...}.

      If a value is provided, the resource is considered ready when the JSONPath expression evaluates to the same value. For example this resource expects its "phase" field to have a value of "Running":

      `pulumi.com/waitFor: "jsonpath={.status.phase}=Running"`

      If a value is not provided, the resource will be considered ready when any value exists at the given path, similar to kubectl wait --for jsonpath=.... This resource will wait until it has a webhook configured with a CA bundle:

      `pulumi.com/waitFor: "jsonpath={.webhooks[*].clientConfig.caBundle}"`
    2. A string prefixed with condition= followed by the type of the condition and an optional status. This matches the behavior of kubectl wait --for=condition=... and will wait until the resource has a matching condition. The expected status defaults to "True" if not specified.

      `pulumi.com/waitFor: "condition=Synced"`
      
      `pulumi.com/waitFor: "condition=Reconciling=False"`
    3. A string containing a JSON array of multiple jsonpath= and condition= expressions.

      `pulumi.com/waitFor: '["jsonpath={.foo}", "condition=Bar"]'` 
  • Pulumi will now emit logs for any Kubernetes "Warning" Events associated with resources being created, updated or deleted. (https://github.com/pulumi/pulumi-kubernetes/pull/3135/files)

Fixed

4.17.1 (August 16, 2024)

Fixed

4.17.0 (August 13, 2024)

Changed

Fixed

4.16.0 (August 7, 2024)

Added

  • clusterIdentifier configuration can now be used to manually control the replacement behavior of a provider resource. (https://github.com/pulumi/pulumi-kubernetes/pull/3068)

  • Pod errors now include the pod's last termination state, as well as the pod's termination message if available. (https://github.com/pulumi/pulumi-kubernetes/pull/3091)

    The pod's termination message can be helpful in CrashLoopBackOff situations but will only be reported if it was correctly configured.

    By default, the pod's termination message is read from /dev/termination-log. This location can be configured with terminationMessagePath.

    Use terminationMessagePolicy: FallbackToLogsOnError to use the pod's logs as its termination message.

  • Documentation is now generated for all languages supported by overlay types. (https://github.com/pulumi/pulumi-kubernetes/pull/3107)

Fixed

4.15.0 (July 9, 2024)

Changed

Fixed

4.14.0 (June 28, 2024)

Added

Changed

Fixed

4.13.1 (June 4, 2024)

Added

Changed

Fixed

4.12.0 (May 21, 2024)

Added

Changed

Fixed

4.11.0 (April 17, 2024)

4.10.0 (April 11, 2024)

New Features

A new MLC-based implementation of ConfigGroup and of ConfigFile is now available in the "yaml/v2" package. These resources are usable in all Pulumi languages, including Pulumi YAML and in the Java Pulumi SDK.

Note that transformations aren't supported in this release (see https://github.com/pulumi/pulumi/issues/12996).

4.9.1 (March 13, 2024)

4.9.0 (March 4, 2024)

4.8.1 (February 22, 2024)

4.8.0 (February 22, 2024)

4.7.1 (January 17, 2024)

  • Fix deployment await logic for accurate rollout detection

4.7.0 (January 17, 2024)

Breaking Changes

In previous versions of the pulumi-kubernetes .NET SDK, the ConfigFile and ConfigGroup component resources inadvertently assigned the wrong parent to the child resource(s). This would happen when the component resource itself had a parent; the child would be assigned that same parent. This also had the effect of disregarding the component resource's provider in favor of the parent's provider.

For example, here's a before/after look at the component hierarchy:

Before:


├─ pkg:index:MyComponent            parent
│  ├─ kubernetes:core/v1:ConfigMap  cg-options-cg-options-cm-1
│  ├─ kubernetes:yaml:ConfigFile    cg-options-testdata/options/configgroup/manifest.yaml
│  ├─ kubernetes:core/v1:ConfigMap  cg-options-configgroup-cm-1
│  ├─ kubernetes:yaml:ConfigFile    cg-options-testdata/options/configgroup/empty.yaml
│  └─ kubernetes:yaml:ConfigGroup   cg-options

After:

└─ pkg:index:MyComponent                  parent
   └─ kubernetes:yaml:ConfigGroup         cg-options
      ├─ kubernetes:yaml:ConfigFile       cg-options-testdata/options/configgroup/manifest.yaml
      │  └─ kubernetes:core/v1:ConfigMap  cg-options-configgroup-cm-1
      └─ kubernetes:core/v1:ConfigMap     cg-options-cg-options-cm-1

This release addresses this issue and attempts to heal existing stacks using aliases. This is effective at avoiding a replacement except in the case where the child was created with the wrong provider. In this case, Pulumi will suggest a replacement of the child resource(s), such that they use the correct provider.

4.6.1 (December 14, 2023)

4.6.0 (December 13, 2023)

Resources Renamed

  • #/types/kubernetes:core/v1:ResourceRequirements
    • renamed to: #/types/kubernetes:core/v1:VolumeResourceRequirements
  • #/types/kubernetes:core/v1:ResourceRequirementsPatch
    • renamed to: #/types/kubernetes:core/v1:VolumeResourceRequirementsPatch

New Resources

  • flowcontrol.apiserver.k8s.io/v1.FlowSchema
  • flowcontrol.apiserver.k8s.io/v1.FlowSchemaList
  • flowcontrol.apiserver.k8s.io/v1.FlowSchemaPatch
  • flowcontrol.apiserver.k8s.io/v1.PriorityLevelConfiguration
  • flowcontrol.apiserver.k8s.io/v1.PriorityLevelConfigurationList
  • flowcontrol.apiserver.k8s.io/v1.PriorityLevelConfigurationPatch
  • networking.k8s.io/v1alpha1.ServiceCIDR
  • networking.k8s.io/v1alpha1.ServiceCIDRList
  • networking.k8s.io/v1alpha1.ServiceCIDRPatch
  • storage.k8s.io/v1alpha1.VolumeAttributesClass
  • storage.k8s.io/v1alpha1.VolumeAttributesClassList
  • storage.k8s.io/v1alpha1.VolumeAttributesClassPatch

4.5.5 (November 28, 2023)

4.5.4 (November 8, 2023)

4.5.3 (October 31, 2023)

4.5.2 (October 26, 2023)

4.5.1 (October 24, 2023)

4.5.0 (October 23, 2023)

4.4.0 (October 12, 2023)

4.3.0 (September 25, 2023)

4.2.0 (September 14, 2023)

  • Reintroduce switching builds to pyproject.toml; when publishing the package to PyPI both source-based and wheel distributions are now published. For most users the installs will now favor the wheel distribution, but users invoking pip with --no-binary :all: will continue having installs based on the source distribution.
  • Return mapping information for terraform conversions (https://github.com/pulumi/pulumi-kubernetes/pull/2457)
  • feature: added skipUpdateUnreachable flag to proceed with the updates without failing (https://github.com/pulumi/pulumi-kubernetes/pull/2528)

4.1.1 (August 23, 2023)

4.1.0 (August 15, 2023)

4.0.3 (July 21, 2023)

4.0.2 (July 20, 2023)

4.0.1 (July 19, 2023)

4.0.0 (July 19, 2023)

Breaking changes:

Other changes:

3.30.2 (July 11, 2023)

3.30.1 (June 29, 2023)

3.30.0 (June 28, 2023)

3.29.1 (June 14, 2023)

3.29.0 (June 2, 2023)

3.28.1 (May 24, 2023)

3.28.0 (May 19, 2023)

3.27.1 (May 11, 2023)

3.27.0 (May 9, 2023)

3.26.0 (May 1, 2023)

3.25.0 (April 11, 2023)

  • Update Kubernetes to v1.27.0

New resources

authentication.k8s.io/v1beta1.SelfSubjectReview
authentication.k8s.io/v1beta1.SelfSubjectReviewPatch
certificates.k8s.io/v1alpha1.ClusterTrustBundle
certificates.k8s.io/v1alpha1.ClusterTrustBundleList
certificates.k8s.io/v1alpha1.ClusterTrustBundlePatch
networking.k8s.io/v1alpha1.IPAddress
networking.k8s.io/v1alpha1.IPAddressList
networking.k8s.io/v1alpha1.IPAddressPatch
resource.k8s.io/v1alpha2.PodSchedulingContext
resource.k8s.io/v1alpha2.PodSchedulingContextList
resource.k8s.io/v1alpha2.PodSchedulingContextPatch
resource.k8s.io/v1alpha2.ResourceClaim
resource.k8s.io/v1alpha2.ResourceClaimList
resource.k8s.io/v1alpha2.ResourceClaimPatch
resource.k8s.io/v1alpha2.ResourceClaimTemplate
resource.k8s.io/v1alpha2.ResourceClaimTemplateList
resource.k8s.io/v1alpha2.ResourceClaimTemplatePatch
resource.k8s.io/v1alpha2.ResourceClass
resource.k8s.io/v1alpha2.ResourceClassList
resource.k8s.io/v1alpha2.ResourceClassPatch

Resources moved from v1alpha1 to v1alpha2

  • "kubernetes:resource.k8s.io/v1alpha1:ResourceClaimTemplateList"
  • "kubernetes:resource.k8s.io/v1alpha1:ResourceClassList"
  • "kubernetes:resource.k8s.io/v1alpha1:ResourceClassPatch"
  • "kubernetes:resource.k8s.io/v1alpha1:ResourceClaimList"
  • "kubernetes:resource.k8s.io/v1alpha1:ResourceClass"
  • "kubernetes:resource.k8s.io/v1alpha1:ResourceClaimTemplate"
  • "kubernetes:resource.k8s.io/v1alpha1:ResourceClaimTemplatePatch"
  • "kubernetes:resource.k8s.io/v1alpha1:ResourceClaim"
  • "kubernetes:resource.k8s.io/v1alpha1:ResourceClaimPatch"

Resources moved from v1beta1 to v1

  • "kubernetes:storage.k8s.io/v1beta1:CSIStorageCapacity"
  • "kubernetes:storage.k8s.io/v1beta1:CSIStorageCapacityPatch"
  • "kubernetes:storage.k8s.io/v1beta1:CSIStorageCapacityList"

Resources renamed

  • "kubernetes:resource.k8s.io/v1alpha1:PodSchedulingList"
    • Renamed to kubernetes:resource.k8s.io/v1alpha2:PodSchedulingContextList
  • "kubernetes:resource.k8s.io/v1alpha1:PodSchedulingPatch"
    • Renamed to kubernetes:resource.k8s.io/v1alpha2:PodSchedulingContextPatch
  • "kubernetes:resource.k8s.io/v1alpha1:PodScheduling"
    • Renamed to kubernetes:resource.k8s.io/v1alpha2:PodSchedulingContext

New Features

3.24.3 (April 6, 2023)

3.24.2 (March 16, 2023)

3.24.1 (February 16, 2023)

3.24.0 (February 6, 2023)

3.23.1 (December 19, 2022)

3.23.0 (December 8, 2022)

3.22.2 (November 30, 2022)

3.22.1 (October 26, 2022)

Note: Enabling SSA mode by default was causing problems for a number of users, so we decided to revert this change. We plan to re-enable this as the default behavior in the next major (v4.0.0) release with additional documentation about the expected differences.

3.22.0 (October 21, 2022)

Important Note -- This release changes the Provider default to enable Server-Side Apply mode. This change is backward compatible, and should not require further action from users. The enableServerSideApply flag is still present, so you may explicitly opt out if you run into any problems using one of the following methods:

  1. Set the enableServerSideApply parameter to false on your Provider resource.
  2. Set the environment variable PULUMI_K8S_ENABLE_SERVER_SIDE_APPLY="false"
  3. Set the stack config pulumi config set kubernetes:enableServerSideApply false

See the how-to guide for additional information about using Server-Side Apply with Pulumi's Kubernetes provider.

3.21.4 (September 22, 2022)

New tag to fix a publishing error for the Java SDK

3.21.3 (September 22, 2022)

3.21.2 (September 1, 2022)

3.21.1 (August 31, 2022)

3.21.0 (August 23, 2022)

Breaking change note -- Kubernetes v1.25 dropped a few alpha and beta fields from the API, so the following fields are no longer available in the provider SDKs:

  • Type "kubernetes:batch/v1beta1:CronJobSpec" dropped property "timeZone"
  • Type "kubernetes:batch/v1beta1:CronJobStatus" dropped property "lastSuccessfulTime"
  • Type "kubernetes:discovery.k8s.io/v1beta1:ForZone" was dropped
  • Type "kubernetes:discovery.k8s.io/v1beta1:Endpoint" dropped property "hints"
  • Type "kubernetes:discovery.k8s.io/v1beta1:EndpointHints" dropped
  • Type "kubernetes:policy/v1beta1:PodDisruptionBudgetStatus" dropped property "conditions"

3.20.5 (August 16, 2022)

3.20.4 (August 15, 2022)

3.20.3 (August 9, 2022)

3.20.2 (July 25, 2022)

3.20.1 (July 19, 2022)

3.20.0 (July 12, 2022)

3.19.4 (June 21, 2022)

3.19.3 (June 8, 2022)

3.19.2 (May 25, 2022)

Deprecations

  • The kubernetes:helm/v2:Chart API is deprecated in this update and will be removed in a future release. The kubernetes:helm/v3:Chart resource is backward compatible, so changing the import path should not cause any resource updates.
  • The enableReplaceCRD option on the Provider is deprecated in the update and will be removed in a future release. The behavior formerly enabled by this option is now default, and this option is ignored by the provider.

Improvements

3.19.1 (May 4, 2022)

3.19.0 (May 3, 2022)

Note: The kubernetes:storage.k8s.io/v1alpha1:CSIStorageCapacity API was removed in this update.

3.18.3 (April 21, 2022)

3.18.2 (April 6, 2022)

3.18.1 (April 5, 2022)

3.18.0 (March 31, 2022)

3.17.0 (March 14, 2022)

  • Make ConfigMaps mutable unless marked explicitly (enabled with provider config option) (https://github.com/pulumi/pulumi-kubernetes/pull/1926) NOTE: With this change, once enableConfigMapMutable is enabled, all ConfigMaps will be seen as mutable. In this mode, you can opt-in to the previous replacement behavior for a particular ConfigMap by setting its replaceOnChanges resource option to [".binaryData", ".data"]. By default, the provider will continue to treat ConfigMaps as immutable, and will replace them if the binaryData or data properties are changed.

3.16.0 (February 16, 2022)

3.15.2 (February 9, 2022)

3.15.1 (February 2, 2022)

3.15.0 (January 27, 2022)

3.14.1 (January 18, 2022)

3.14.0 (January 12, 2022)

3.13.0 (January 7, 2022)

3.12.2 (January 5, 2022)

3.12.1 (December 9, 2021)

3.12.0 (December 7, 2021)

3.11.0 (December 6, 2021)

Breaking change note:

#1817 removed the deprecated providers/Provider resource definition from the Go SDK. Following this change, use the Provider resource at github.com/pulumi/pulumi-kubernetes/sdk/v3/go/kubernetes instead.

3.10.1 (November 19, 2021)

3.10.0 (November 12, 2021)

3.9.0 (November 5, 2021)

3.8.3 (October 29, 2021)

3.8.2 (October 18, 2021)

3.8.1 (October 8, 2021)

3.8.0 (October 6, 2021)

Breaking change note:

#1751 moved the Helm Release (beta) Provider options into a complex type called helmReleaseSettings. Following this change, you can set these options in the following ways:

  1. As arguments to a first-class Provider

    new k8s.Provider("test", { helmReleaseSettings: { driver: "secret" } });
  2. Stack configuration for the default Provider

    pulumi config set --path kubernetes:helmReleaseSettings.driver "secret"
  3. As environment variables

    EXPORT PULUMI_K8S_HELM_DRIVER="secret"
  4. [sdk/dotnet] Fix creation of CustomResources (https://github.com/pulumi/pulumi-kubernetes/pull/1741)

  5. Always override namespace for helm release operations (https://github.com/pulumi/pulumi-kubernetes/pull/1747)
  6. Add k8s client tuning settings to Provider (https://github.com/pulumi/pulumi-kubernetes/pull/1748)
  7. Nest helm.Release Provider settings (https://github.com/pulumi/pulumi-kubernetes/pull/1751)
  8. Change await logic client to use target apiVersion on updates (https://github.com/pulumi/pulumi-kubernetes/pull/1758)

3.7.3 (September 30, 2021)

3.7.2 (September 17, 2021)

3.7.1 (September 10, 2021)

3.7.0 (September 3, 2021)

3.6.3 (August 23, 2021)

3.6.2 (August 20, 2021)

3.6.1 (August 19, 2021)

3.6.0 (August 4, 2021)

The following breaking changes are part of the Kubernetes v1.22 update:

3.5.2 (July 29, 2021)

3.5.1 (July 14, 2021)

3.5.0 (June 30, 2021)

3.4.1 (June 24, 2021)

3.4.0 (June 17, 2021)

3.3.1 (June 8, 2021)

3.3.0 (May 26, 2021)

3.2.0 (May 19, 2021)

3.1.2 (May 12, 2021)

3.1.1 (May 5, 2021)

3.1.0 (April 29, 2021)

3.0.0 (April 19, 2021)

2.9.1 (April 12, 2021)

2.9.0 (April 8, 2021)

2.8.4 (March 29, 2021)

2.8.3 (March 17, 2021)

2.8.2 (February 23, 2021)

2.8.1 (February 12, 2021)

2.8.0 (February 3, 2021)

Note: This release fixes a bug with the Helm v3 SDK that omitted any chart resources that included a hook annotation. If you have existing charts deployed with the v3 SDK that include hook resources, the next update will create these resources.

2.7.8 (January 27, 2021)

2.7.7 (January 20, 2021)

2.7.6 (January 13, 2021)

2.7.5 (December 16, 2020)

2.7.4 (December 8, 2020)

2.7.3 (December 3, 2020)

2.7.2 (November 19, 2020)

2.7.1 (November 18, 2020)

2.7.0 (November 12, 2020)

2.6.3 (October 12, 2020)

2.6.2 (October 7, 2020)

Important Note

Helm v2 support is EOL, and will no longer be supported upstream as of next month. Furthermore, the stable/incubator chart repos will likely stop working after November 13, 2020. Deprecation warnings have been added for any usage of Pulumi's helm.v2 API, and this API will be removed at a future date. Our helm.v3 API is backward compatible, so you should be able to update without disruption to existing resources.

Bug Fixes

Improvements

2.6.1 (September 16, 2020)

Bug Fixes

Improvements

2.6.0 (September 10, 2020)

Note: There is a minor breaking change in the .NET SDK for Helm v3. As part of the switch to using native Helm libraries in #1291, the Helm.V3.Chart class no longer inherits from the ChartBase class. Most users should not be affected by this change.

Bug Fixes

Improvements

2.5.1 (September 2, 2020)

Bug Fixes

Improvements

2.5.0 (August 26, 2020)

Improvements

2.4.3 (August 14, 2020)

Bug Fixes

Improvements

2.4.2 (August 3, 2020)

Bug Fixes

2.4.1 (July 24, 2020)

Bug Fixes

Improvements

2.4.0 (July 7, 2020)

Bug Fixes

Improvements

2.3.1 (June 17, 2020)

Improvements

Bug Fixes

2.3.0 (June 9, 2020)

Improvements

  • NodeJS SDK updated to align with other Pulumi NodeJS SDKs. (https://github.com/pulumi/pulumi-kubernetes/pull/1151)
  • .NET SDK updated to align with other Pulumi .NET SDKs. (https://github.com/pulumi/pulumi-kubernetes/pull/1132)
    • Deprecated resources are now marked as Obsolete.
    • Many classes are moved to new locations on disk while preserving the public namespaces and API.
    • Several unused argument/output classes were removed without any impact on resources (e.g. DeploymentRollbackArgs).
    • Fixed the type of some properties in JSONSchemaPropsArgs (there's no need to have 2nd-level inputs there):
      • InputList<InputJson> -> InputList<JsonElement>
      • InputMap<Union<TArgs, InputList<string>>> -> InputMap<Union<TArgs, ImmutableArray<string>>>

Bug Fixes

2.2.2 (May 27, 2020)

  • 2.2.1 SDK release process failed, so pushing a new tag.

2.2.1 (May 27, 2020)

Improvements

Bug Fixes

2.2.0 (May 15, 2020)

Improvements

2.1.1 (May 8, 2020)

  • Python and .NET packages failed to publish for 2.1.0, so bumping release version.

2.1.0 (May 8, 2020)

Improvements

Bug Fixes

2.0.0 (April 16, 2020)

Improvements

Bug fixes

1.6.0 (March 25, 2020)

Improvements

Bug fixes

1.5.8 (March 16, 2020)

Improvements

1.5.7 (March 10, 2020)

Bug fixes

1.5.6 (February 28, 2020)

Bug fixes

1.5.5 (February 25, 2020)

Bug fixes

1.5.4 (February 19, 2020)

Improvements

Bug fixes

Improvements

1.5.3 (February 11, 2020)

Bug fixes

1.5.2 (February 10, 2020)

Improvements

1.5.1 (February 7, 2020)

Bug fixes

1.5.0 (February 4, 2020)

Improvements

Bug fixes

1.4.5 (January 22, 2020)

Bug fixes

1.4.4 (January 21, 2020)

Improvements

Bug fixes

1.4.3 (January 8, 2020)

Bug fixes

1.4.2 (January 7, 2020)

Improvements

Bug fixes

1.4.1 (December 17, 2019)

Bug fixes

1.4.0 (December 9, 2019)

Important

The discovery.v1alpha1.EndpointSlice and discovery.v1alpha1.EndpointSliceList APIs were removed in k8s 1.17, and no longer appear in the Pulumi Kubernetes SDKs. These resources can now be found at discovery.v1beta1.EndpointSlice and discovery.v1beta1.EndpointSliceList.

Major changes

1.3.4 (December 5, 2019)

Improvements

1.3.3 (November 29, 2019)

Improvements

1.3.2 (November 26, 2019)

Improvements

1.3.1 (November 18, 2019)

Improvements

1.3.0 (November 13, 2019)

Improvements

  • Increase maxBuffer for helm template exec. (https://github.com/pulumi/pulumi-kubernetes/pull/864).
  • Add StreamInvoke RPC call, along with stream invoke implementations for kubernetes:kubernetes:watch, kubernetes:kubernetes:list, and kubernetes:kubernetes:logs. (#858, #873, #876).

1.2.3 (October 17, 2019)

Bug fixes

1.2.2 (October 10, 2019)

Improvements

1.2.1 (October 8, 2019)

Improvements

1.2.0 (October 4, 2019)

Improvements

1.1.0 (September 18, 2019)

Major changes

Improvements

1.0.1 (September 11, 2019)

Improvements

Bug fixes

1.0.0 (September 3, 2019)

Bug fixes

1.0.0-rc.1 (August 28, 2019)

Improvements

Bug fixes

1.0.0-beta.2 (August 26, 2019)

Improvements

Bug fixes

1.0.0-beta.1 (August 13, 2019)

Improvements

0.25.6 (August 7, 2019)

Bug fixes

0.25.5 (August 2, 2019)

Bug fixes

0.25.4 (August 1, 2019)

Important

This release reverts the default diff behavior back to the pre-0.25.3 behavior. A new flag has been added to the provider options called enableDryRun, that can be used to opt in to the new diff behavior. This will eventually become the default behavior after further testing to ensure that this change is not disruptive.

Major changes

Improvements

Bug fixes

0.25.3 (July 29, 2019)

Bug fixes

0.25.2 (July 11, 2019)

Improvements

Bug fixes

0.25.1 (July 2, 2019)

Improvements

  • Unify diff behavior between Diff and Update. This should result in better detection of state drift as well as behavior that is more consistent with respect to kubectl. (https://github.com/pulumi/pulumi-kubernetes/pull/604)
  • The Kubernetes provider now supports the internal features necessary for the Pulumi engine to detect diffs between the actual and desired state of a resource after a pulumi refresh (https://github.com/pulumi/pulumi-kubernetes/pull/477).
  • The Kubernetes provider now sets the "kubectl.kubernetes.io/last-applied-configuration" annotation to the last deployed configuration for a resource. This enables better interoperability with kubectl.

Bug fixes

0.25.0 (June 19, 2019)

Major changes

Improvements

Bug fixes

  • None

0.24.0 (June 5, 2019)

Important

BREAKING: This release changes the behavior of the provider namespace flag introduced in 0.23.0. Previously, this flag was treated as an override, which ignored namespace values set directly on resources. Now, the flag is a default, and will only set the namespace if one is not already set. If you have created resources using a provider with the namespace flag set, this change may cause these resources to be recreated on the next update.

Major changes

Improvements

Bug fixes

0.23.1 (May 10, 2019)

Major changes

  • None

Improvements

Bug fixes

0.23.0 (April 30, 2019)

Important

This release fixes a longstanding issue with the provider namespace flag. Previously, this flag was erroneously ignored, but will now cause any resources using this provider to be created in the specified namespace. This may cause resources to be recreated! Unset the namespace parameter to avoid this behavior. Also note that this parameter takes precedence over any namespace defined on the underlying resource.

The Python SDK now supports YAML manifests and Helm charts, including CustomResourceDefinitions and CustomResources!

Major changes

Bug fixes

0.22.2 (April 11, 2019)

Important

This release improves handling for CustomResources (CRs) and CustomResourceDefinitions (CRDs). CRs without a matching CRD will now be considered deleted during pulumi refresh, and pulumi destroy will not fail to delete a CR if the related CRD is missing. See https://github.com/pulumi/pulumi-kubernetes/pull/530 for details.

Major changes

  • None

Improvements

Bug fixes

  • None

0.22.1 (April 9, 2019)

Major changes

Improvements

Bug fixes

0.22.0 (March 25, 2019)

Major changes

Improvements

Bug fixes

  • None

0.21.1 (March 18, 2019)

Major changes

  • None

Improvements

Bug fixes

0.21.0 (Released March 6, 2019)

Important

Updating to v0.17.0 version of @pulumi/pulumi. This is an update that will not play nicely in side-by-side applications that pull in prior versions of this package.

See https://github.com/pulumi/pulumi/commit/7f5e089f043a70c02f7e03600d6404ff0e27cc9d for more details.

As such, we are rev'ing the minor version of the package from 0.16 to 0.17. Recent version of pulumi will now detect, and warn, if different versions of @pulumi/pulumi are loaded into the same application. If you encounter this warning, it is recommended you move to versions of the @pulumi/... packages that are compatible. i.e. keep everything on 0.16.x until you are ready to move everything to 0.17.x.

0.20.4 (March 1, 2019)

Major changes

  • None

Improvements

Bug fixes

0.20.3 (February 20, 2019)

Major changes

  • None

Improvements

  • None

Bug fixes

0.20.2 (Released February 13, 2019)

Major changes

  • None

Improvements

Bug fixes

0.20.1 (Released February 6, 2019)

Bug fixes

0.20.0 (Released February 1, 2019)

Major changes

Improvements

Bug fixes

0.19.0 (Released January 15, 2019)

Major changes

Improvements

0.18.0 (Released December 4, 2018)

Major changes

Improvements