68 lines
2.1 KiB
Go
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
|
|
})
|
|
}
|