1. Using kubernetes yaml with application.responsive.dev

    TypeScript

    When working with Kubernetes, you may need to create and manage resources defined by YAML files. Pulumi provides first-class support for Kubernetes and allows you to deploy resources from existing YAML files using the kubernetes.yaml.ConfigFile resource. This enables you to integrate your YAML-defined Kubernetes resources into a Pulumi program, which can be written in TypeScript, Python, Go, or C#.

    For example, suppose you have existing Kubernetes YAML files that define your application's resources, such as Deployments, Services, and ConfigMaps. You can deploy these resources using Pulumi without needing to convert the YAML files to another language-specific format.

    Here’s how you can use the kubernetes.yaml.ConfigFile resource with TypeScript in Pulumi:

    1. YAML file: You should have a YAML file that defines your Kubernetes resources. For the example, let's assume you have a file named app-deployment.yaml that contains the definitions for your application.

    2. Pulumi Program: In your Pulumi program, you would import the @pulumi/kubernetes package and create an instance of kubernetes.yaml.ConfigFile that references your YAML file.

    3. Preview and Update: With the Pulumi CLI, you would then preview the changes and apply them to your Kubernetes cluster.

    Below is a detailed TypeScript program that demonstrates how to deploy your Kubernetes resources using an existing YAML file:

    import * as kubernetes from '@pulumi/kubernetes'; // The location of your YAML file on your local filesystem. const yamlPath = 'app-deployment.yaml'; // Create a ConfigFile resource and point it to the YAML file that contains the Kubernetes resource definitions. const appResources = new kubernetes.yaml.ConfigFile('app-resources', { file: yamlPath, }); // To access the deployed resources, you can export any needed fields. // For example, if your YAML contains a Kubernetes Service and you wish to export its cluster IP: const appService = appResources.getResource('v1/Service', 'app-service'); export const appServiceClusterIp = appService.spec.clusterIP; // You can further interact with these resources as part of your Pulumi program if needed.

    In this program:

    • We import the @pulumi/kubernetes package, which is necessary to interact with Kubernetes resources.
    • We define the YAML file path that Pulumi will use to read the resource definitions.
    • We instantiate the kubernetes.yaml.ConfigFile resource with a name and a path to the YAML file.
    • The getResource method is used to extract specific resources from the YAML file if you need to reference them explicitly (for example, to export properties like a Service's cluster IP).

    Before running this program, you would install the Pulumi CLI and configure access to your Kubernetes cluster. Then, you would run pulumi up to apply the changes defined in your YAML file to the Kubernetes cluster.

    This integration offers a seamless way to deploy complex Kubernetes applications defined by YAML through Pulumi's infrastructure as code approach.

    For more information about using Kubernetes resources with Pulumi, you can read the Pulumi Kubernetes documentation.