Files
2026-08-30 20:45:54 -06:00

68 lines
2.1 KiB
Go

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 <name>`).
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
})
}