package main import ( "github.com/pulumi/pulumi-kubernetes/sdk/v4/go/kubernetes" appsv1 "github.com/pulumi/pulumi-kubernetes/sdk/v4/go/kubernetes/apps/v1" corev1 "github.com/pulumi/pulumi-kubernetes/sdk/v4/go/kubernetes/core/v1" metav1 "github.com/pulumi/pulumi-kubernetes/sdk/v4/go/kubernetes/meta/v1" "github.com/pulumi/pulumi/sdk/v3/go/pulumi" ) func main() { pulumi.Run(func(ctx *pulumi.Context) error { // Connects to the on-prem managed cluster via the current kubeconfig // (context selected by `kubectl config use-context `). cluster, err := kubernetes.NewProvider(ctx, "onprem", &kubernetes.ProviderArgs{}) if err != nil { return err } // Namespace for all DESI Explorer resources. ns, err := corev1.NewNamespace(ctx, "desi-explorer", &corev1.NamespaceArgs{ Metadata: &metav1.ObjectMetaArgs{Name: pulumi.String("desi-explorer")}, }, pulumi.Provider(cluster)) if err != nil { return err } // Placeholder Deployment so `pulumi up` has something to deploy. // TODO: replace with the actual DESI Explorer image (web build served // behind the data repository API). app, err := appsv1.NewDeployment(ctx, "desi-explorer", &appsv1.DeploymentArgs{ Metadata: &metav1.ObjectMetaArgs{ Namespace: ns.Metadata.Name(), }, Spec: &appsv1.DeploymentSpecArgs{ Selector: &metav1.LabelSelectorArgs{ MatchLabels: pulumi.ToStringMap(map[string]string{"app": "desi-explorer"}), }, Replicas: pulumi.Int(1), Template: &corev1.PodTemplateSpecArgs{ Metadata: &metav1.ObjectMetaArgs{ Labels: pulumi.ToStringMap(map[string]string{"app": "desi-explorer"}), }, Spec: &corev1.PodSpecArgs{ Containers: corev1.ContainerArray{ &corev1.ContainerArgs{ Name: pulumi.String("desi-explorer"), Image: pulumi.String("nginx:alpine"), Ports: corev1.ContainerPortArray{ &corev1.ContainerPortArgs{ContainerPort: pulumi.Int(80)}, }, }, }, }, }, }, }, pulumi.Provider(cluster)) if err != nil { return err } ctx.Export("namespace", ns.Metadata.Name()) ctx.Export("deployment", app.Metadata.Name()) return nil }) }