1. Packages
  2. Kubernetes
  3. API Docs
  4. yaml
  5. ConfigFile
Kubernetes v4.22.2 published on Tuesday, Apr 15, 2025 by Pulumi

kubernetes.yaml.ConfigFile

Explore with Pulumi AI

A newer version of this resource is available as kubernetes.yaml/v2.ConfigFile. See the corresponding blog post for more information.

ConfigFile creates a set of Kubernetes resources from a remote or on-disk Kubernetes YAML file. (If you have in-memory YAML a ConfigGroup may be more appropriate.)

This resource is provided for the following languages: Node.js (JavaScript, TypeScript), Python, Go, and .NET (C#, F#, VB).

Example Usage

Local File

using System.Threading.Tasks;
using Pulumi;
using Pulumi.Kubernetes.Yaml;

class YamlStack : Stack
{
    public YamlStack()
    {
        var helloWorld = new ConfigFile("example", new ConfigFileArgs
        {
            File = "foo.yaml",
        });
    }
}
Copy
package main

import (
    "github.com/pulumi/pulumi-kubernetes/sdk/v4/go/kubernetes/yaml"
    "github.com/pulumi/pulumi/sdk/v3/go/pulumi"
)

func main() {
    pulumi.Run(func(ctx *pulumi.Context) error {
        _, err := yaml.NewConfigFile(ctx, "example",
            &yaml.ConfigFileArgs{
                File: "foo.yaml",
            },
        )
        if err != nil {
            return err
        }

        return nil
    })
}
Copy

Coming soon!

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

const example = new k8s.yaml.ConfigFile("example", {
  file: "foo.yaml",
});
Copy
from pulumi_kubernetes.yaml import ConfigFile

example = ConfigFile(
    "example",
    file="foo.yaml",
)
Copy

Coming soon!

YAML with Transformations

using System.Collections.Generic;
using System.Collections.Immutable;
using System.Threading.Tasks;
using Pulumi;
using Pulumi.Kubernetes.Yaml;

class YamlStack : Stack
{
    public YamlStack()
    {
        var helloWorld = new ConfigFile("example", new ConfigFileArgs
        {
            File = "foo.yaml",
            Transformations =
               {
                   LoadBalancerToClusterIP,
                   ResourceAlias,
                   OmitTestPod,
               }
        });

        // Make every service private to the cluster, i.e., turn all services into ClusterIP instead of LoadBalancer.
        ImmutableDictionary<string, object> LoadBalancerToClusterIP(ImmutableDictionary<string, object> obj, CustomResourceOptions opts)
        {
            if ((string)obj["kind"] == "Service" && (string)obj["apiVersion"] == "v1")
            {
                var spec = (ImmutableDictionary<string, object>)obj["spec"];
                if (spec != null && (string)spec["type"] == "LoadBalancer")
                {
                    return obj.SetItem("spec", spec.SetItem("type", "ClusterIP"));
                }
            }

            return obj;
        }

        // Set a resource alias for a previous name.
        ImmutableDictionary<string, object> ResourceAlias(ImmutableDictionary<string, object> obj, CustomResourceOptions opts)
        {
            if ((string)obj["kind"] == "Deployment")
            {
                opts.Aliases = new List<Input<Alias>> { new Alias { Name = "oldName" } };
            }

            return obj;
        }

        // Omit a resource from the Chart by transforming the specified resource definition to an empty List.
        ImmutableDictionary<string, object> OmitTestPod(ImmutableDictionary<string, object> obj, CustomResourceOptions opts)
        {
            var metadata = (ImmutableDictionary<string, object>)obj["metadata"];
            if ((string)obj["kind"] == "Pod" && (string)metadata["name"] == "test")
            {
                return new Dictionary<string, object>
                {
                    ["apiVersion"] = "v1",
                    ["kind"] = "List",
                    ["items"] = new Dictionary<string, object>(),
                }.ToImmutableDictionary();
            }

            return obj;
        }
    }
}
Copy
package main

import (
    "github.com/pulumi/pulumi-kubernetes/sdk/v4/go/kubernetes/yaml"
    "github.com/pulumi/pulumi/sdk/v3/go/pulumi"
)

func main() {
    pulumi.Run(func(ctx *pulumi.Context) error {
        _, err := yaml.NewConfigFile(ctx, "example",
            &yaml.ConfigFileArgs{
                File: "foo.yaml",
                Transformations: []yaml.Transformation{
                    // Make every service private to the cluster, i.e., turn all services into ClusterIP
                    // instead of LoadBalancer.
                    func(state map[string]interface{}, opts ...pulumi.ResourceOption) {
                        if state["kind"] == "Service" {
                            spec := state["spec"].(map[string]interface{})
                            spec["type"] = "ClusterIP"
                        }
                    },

                    // Set a resource alias for a previous name.
                    func(state map[string]interface{}, opts ...pulumi.ResourceOption) {
                        if state["kind"] == "Deployment" {
                            aliases := pulumi.Aliases([]pulumi.Alias{
                                {
                                    Name: pulumi.String("oldName"),
                                },
                            })
                            opts = append(opts, aliases)
                        }
                    },

                    // Omit a resource from the Chart by transforming the specified resource definition
                    // to an empty List.
                    func(state map[string]interface{}, opts ...pulumi.ResourceOption) {
                        name := state["metadata"].(map[string]interface{})["name"]
                        if state["kind"] == "Pod" && name == "test" {
                            state["apiVersion"] = "core/v1"
                            state["kind"] = "List"
                        }
                    },
                },
            },
        )
        if err != nil {
            return err
        }

        return nil
    })
}
Copy

Coming soon!

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

const example = new k8s.yaml.ConfigFile("example", {
  file: "foo.yaml",
  transformations: [
    // Make every service private to the cluster, i.e., turn all services into ClusterIP instead of LoadBalancer.
    (obj: any, opts: pulumi.CustomResourceOptions) => {
      if (obj.kind === "Service" && obj.apiVersion === "v1") {
        if (obj.spec && obj.spec.type && obj.spec.type === "LoadBalancer") {
          obj.spec.type = "ClusterIP";
        }
      }
    },

    // Set a resource alias for a previous name.
    (obj: any, opts: pulumi.CustomResourceOptions) => {
      if (obj.kind === "Deployment") {
        opts.aliases = [{name: "oldName"}]
      }
    },

    // Omit a resource from the Chart by transforming the specified resource definition to an empty List.
    (obj: any, opts: pulumi.CustomResourceOptions) => {
      if (obj.kind === "Pod" && obj.metadata.name === "test") {
        obj.apiVersion = "v1"
        obj.kind = "List"
      }
    },
  ],
});
Copy
from pulumi_kubernetes.yaml import ConfigFile

# Make every service private to the cluster, i.e., turn all services into ClusterIP instead of LoadBalancer.
def make_service_private(obj, opts):
    if obj["kind"] == "Service" and obj["apiVersion"] == "v1":
        try:
            t = obj["spec"]["type"]
            if t == "LoadBalancer":
                obj["spec"]["type"] = "ClusterIP"
        except KeyError:
            pass


# Set a resource alias for a previous name.
def alias(obj, opts):
    if obj["kind"] == "Deployment":
        opts.aliases = ["oldName"]


# Omit a resource from the Chart by transforming the specified resource definition to an empty List.
def omit_resource(obj, opts):
    if obj["kind"] == "Pod" and obj["metadata"]["name"] == "test":
        obj["apiVersion"] = "v1"
        obj["kind"] = "List"


example = ConfigFile(
    "example",
    file="foo.yaml",
    transformations=[make_service_private, alias, omit_resource],
)
Copy

Coming soon!

Create ConfigFile Resource

Resources are created with functions called constructors. To learn more about declaring and configuring resources, see Resources.

Constructor syntax

new ConfigFile(name: string, args: ConfigFileOpts, opts?: ComponentResourceOptions);
@overload
def ConfigFile(file,
               opts=None,
               transformations=None,
               resource_prefix=None)

@overload
def ConfigFile(file,
               opts=None,
               transformations=None,
               resource_prefix=None)
func NewConfigFile(ctx *Context, name string, args ConfigFileArgs, opts ...ResourceOption) (*ConfigFile, error)
public ConfigFile(string name, ConfigFileArgs args, ComponentResourceOptions? opts = null)
public ConfigFile(String name, ConfigFileArgs args)
public ConfigFile(String name, ConfigFileArgs args, ComponentResourceOptions options)
type: kubernetes:yaml:ConfigFile
properties: # The arguments to resource properties.
options: # Bag of options to control resource's behavior.

Parameters

name This property is required. string
The unique name of the resource.
args This property is required. ConfigFileOpts
The arguments to resource properties.
opts ComponentResourceOptions
Bag of options to control resource's behavior.
file This property is required.
opts This property is required.
transformations This property is required.
resource_prefix This property is required.
ctx Context
Context object for the current deployment.
name This property is required. string
The unique name of the resource.
args This property is required. ConfigFileArgs
The arguments to resource properties.
opts ResourceOption
Bag of options to control resource's behavior.
name This property is required. string
The unique name of the resource.
args This property is required. ConfigFileArgs
The arguments to resource properties.
opts ComponentResourceOptions
Bag of options to control resource's behavior.
name This property is required. String
The unique name of the resource.
args This property is required. ConfigFileArgs
The arguments to resource properties.
options ComponentResourceOptions
Bag of options to control resource's behavior.

ConfigFile Resource Properties

To learn more about resource properties and how to use them, see Inputs and Outputs in the Architecture and Concepts docs.

Inputs

In Python, inputs that are objects can be passed either as argument classes or as dictionary literals.

The ConfigFile resource accepts the following input properties:

File This property is required. string
Path or a URL that uniquely identifies a file.
ResourcePrefix string
An optional prefix for the auto-generated resource names. Example: A resource created with resourcePrefix="foo" would produce a resource named "foo-resourceName".
Transformations List<object>
A set of transformations to apply to Kubernetes resource definitions before registering with engine.
File This property is required. string
Path or a URL that uniquely identifies a file.
ResourcePrefix string
An optional prefix for the auto-generated resource names. Example: A resource created with resourcePrefix="foo" would produce a resource named "foo-resourceName".
Transformations []interface{}
A set of transformations to apply to Kubernetes resource definitions before registering with engine.
file This property is required. String
Path or a URL that uniquely identifies a file.
resourcePrefix String
An optional prefix for the auto-generated resource names. Example: A resource created with resourcePrefix="foo" would produce a resource named "foo-resourceName".
transformations List<Object>
A set of transformations to apply to Kubernetes resource definitions before registering with engine.
file This property is required. string
Path or a URL that uniquely identifies a file.
resourcePrefix string
An optional prefix for the auto-generated resource names. Example: A resource created with resourcePrefix="foo" would produce a resource named "foo-resourceName".
transformations any[]
A set of transformations to apply to Kubernetes resource definitions before registering with engine.
file This property is required. str
Path or a URL that uniquely identifies a file.
resource_prefix str
An optional prefix for the auto-generated resource names. Example: A resource created with resourcePrefix="foo" would produce a resource named "foo-resourceName".
transformations Sequence[Any]
A set of transformations to apply to Kubernetes resource definitions before registering with engine.
file This property is required. String
Path or a URL that uniquely identifies a file.
resourcePrefix String
An optional prefix for the auto-generated resource names. Example: A resource created with resourcePrefix="foo" would produce a resource named "foo-resourceName".
transformations List<Any>
A set of transformations to apply to Kubernetes resource definitions before registering with engine.

Outputs

All input properties are implicitly available as output properties. Additionally, the ConfigFile resource produces the following output properties:

Resources string
Resources created by the ConfigFile.
Resources string
Resources created by the ConfigFile.
resources String
Resources created by the ConfigFile.
resources string
Resources created by the ConfigFile.
resources str
Resources created by the ConfigFile.
resources String
Resources created by the ConfigFile.

Package Details

Repository
Kubernetes pulumi/pulumi-kubernetes
License
Apache-2.0