KubeCon EUBooth 1151, Amsterdam. March 23-26
Pulumi

Terraform Bridge

Use the DevZero Terraform provider through Pulumi for Go and other unsupported languages.

Terraform Bridge

This is a fallback for languages without native provider support. For TypeScript and Python, use the native Pulumi provider instead.

Pulumi can wrap any Terraform provider via pulumi package add, generating SDK bindings from the Terraform provider schema. This lets you use the DevZero Terraform provider from Go, Java, C#, or any other Pulumi-supported language.

Setup

Add the DevZero Terraform provider and the cluster module to your Pulumi project:

pulumi package add terraform-provider devzero-inc/devzero
pulumi package add terraform-module devzero-inc/cluster/devzero devzero-cluster

This generates language-specific SDK packages in your project directory.

Example

package main

import (
    devzerocluster "github.com/pulumi/pulumi-terraform-module/sdks/go/devzero-cluster/devzero-cluster"
    "github.com/pulumi/pulumi-terraform-provider/sdks/go/devzero/devzero"
    "github.com/pulumi/pulumi/sdk/v3/go/pulumi"
)

func main() {
    pulumi.Run(func(ctx *pulumi.Context) error {
        devzeroProvider, err := devzero.NewProvider(ctx, "devzero", &devzero.ProviderArgs{})
        if err != nil {
            return err
        }

        clusterProvider, err := devzerocluster.NewProvider(ctx, "devzero-cluster", &devzerocluster.ProviderArgs{
            Helm: pulumi.Map{
                "kubernetes": pulumi.Map{
                    "config_path": pulumi.String("~/.kube/config"),
                },
            },
        })
        if err != nil {
            return err
        }

        cluster, err := devzerocluster.NewModule(ctx, "cluster", &devzerocluster.ModuleArgs{
            Cluster_name: pulumi.String("pulumi-cluster"),
        }, pulumi.Provider(clusterProvider))
        if err != nil {
            return err
        }

        workloadPolicy, err := devzero.NewWorkloadPolicy(ctx, "workload-policy", &devzero.WorkloadPolicyArgs{
            Name: pulumi.String("pulumi-workload-policy"),
        }, pulumi.Provider(devzeroProvider))
        if err != nil {
            return err
        }

        _, err = devzero.NewWorkloadPolicyTarget(ctx, "workload-policy-target", &devzero.WorkloadPolicyTargetArgs{
            Name:       pulumi.String("pulumi-workload-policy-target"),
            PolicyId:   workloadPolicy.ID(),
            ClusterIds: pulumi.StringArray{cluster.Cluster_id.AsStringOutput()},
        }, pulumi.Provider(devzeroProvider))
        if err != nil {
            return err
        }

        return nil
    })
}

Authentication

Pass your credentials as environment variables when running pulumi up:

DEVZERO_TEAM_ID=<team-id> DEVZERO_TOKEN=<token> pulumi up

Get your token from User Settings and your team ID from Organization Settings.

On this page