Skip to content

Instantly share code, notes, and snippets.

@metral

metral/main.go Secret

Created March 20, 2020 00:01
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save metral/efe77ba19caeb6dab51950ce8a2fe747 to your computer and use it in GitHub Desktop.
Save metral/efe77ba19caeb6dab51950ce8a2fe747 to your computer and use it in GitHub Desktop.
package main
import (
"github.com/metral/go-cluster-services/aws"
appsv1 "github.com/pulumi/pulumi-kubernetes/sdk/go/kubernetes/apps/v1"
corev1 "github.com/pulumi/pulumi-kubernetes/sdk/go/kubernetes/core/v1"
metav1 "github.com/pulumi/pulumi-kubernetes/sdk/go/kubernetes/meta/v1"
"github.com/pulumi/pulumi/sdk/go/pulumi"
)
func main() {
pulumi.Run(func(ctx *pulumi.Context) error {
// vpcID := pulumi.StringPtr("vpc-0dada73b18d019095")
// clusterName = pulumi.StringPtr("k8s-aws-cluster-eksCluster-19f9b37")
// regionName = pulumi.StringPtr("us-west-2")
name := "alb-ing-cntlr"
image := "docker.io/amazon/aws-alb-ingress-controller:v1.1.5"
replicas := pulumi.IntPtr(2)
opts := AlbIngressControllerOpts{
Name: name,
Image: pulumi.String(image),
Replicas: replicas,
/*
Args: pulumi.StringArray{
pulumi.All(vpcID).ApplyString(func(args []interface{}) string {
return fmt.Sprintf("--aws-vpc-id=%s", args[0])
}),
// pulumi.Sprintf("--aws-region=", regionName),
// pulumi.Sprintf("--cluster-name=", clusterName),
},
*/
}
return createAlbIngressCntlr(ctx, opts)
})
}
type AlbIngressControllerOpts struct {
Name string
Image pulumi.String
Replicas pulumi.IntPtrInput
// Args pulumi.StringArrayInput
Namespace pulumi.StringPtrInput
}
func createAlbIngressCntlr(ctx *pulumi.Context, opts AlbIngressControllerOpts) error {
aws.Foobar()
alb := corev1.ContainerArgs{
Name: pulumi.String(opts.Name),
Image: opts.Image,
//Args: opts.Args,
Resources: corev1.ResourceRequirementsPtr(
&corev1.ResourceRequirementsArgs{
Requests: pulumi.StringMap{
"cpu": pulumi.String("256m"),
"memory": pulumi.String("256Mi"),
},
},
),
Ports: corev1.ContainerPortArray{
&corev1.ContainerPortArgs{
Name: pulumi.String("health"),
ContainerPort: pulumi.IntPtr(10254),
Protocol: pulumi.String("TCP"),
},
},
ReadinessProbe: corev1.ProbePtr(
&corev1.ProbeArgs{
HttpGet: corev1.HTTPGetActionArgs{
Path: pulumi.String("/healthz"),
Port: pulumi.String("health"),
Scheme: pulumi.String("HTTP"),
},
InitialDelaySeconds: pulumi.IntPtr(30),
PeriodSeconds: pulumi.IntPtr(60),
TimeoutSeconds: pulumi.IntPtr(3),
},
),
LivenessProbe: corev1.ProbePtr(
&corev1.ProbeArgs{
HttpGet: corev1.HTTPGetActionArgs{
Path: pulumi.String("/healthz"),
Port: pulumi.String("health"),
Scheme: pulumi.String("HTTP"),
},
InitialDelaySeconds: pulumi.IntPtr(30),
PeriodSeconds: pulumi.IntPtr(60),
TimeoutSeconds: pulumi.IntPtr(1),
},
),
Lifecycle: corev1.LifecyclePtr(
&corev1.LifecycleArgs{
PreStop: corev1.HandlerPtr(
&corev1.HandlerArgs{
Exec: corev1.ExecActionPtrInput(
corev1.ExecActionArgs{
Command: pulumi.StringArray{
pulumi.String("sleep"),
pulumi.String("25"),
},
},
),
},
),
},
),
}
_, err := corev1.NewPod(ctx, opts.Name, &corev1.PodArgs{
Spec: corev1.PodSpecArgs{
Containers: corev1.ContainerArray{alb},
},
})
if err != nil {
return err
}
labels := pulumi.StringMap{"app": pulumi.String(opts.Name)}
_, err = appsv1.NewDeployment(ctx, opts.Name, &appsv1.DeploymentArgs{
Spec: appsv1.DeploymentSpecArgs{
Selector: metav1.LabelSelectorPtr(&metav1.LabelSelectorArgs{
MatchLabels: labels,
}),
// Replicas: opts.Replicas,
Template: &corev1.PodTemplateSpecArgs{
Metadata: metav1.ObjectMetaPtr(&metav1.ObjectMetaArgs{
Name: pulumi.String(opts.Name),
Labels: labels,
// Namespace: opts.Namespace,
}),
Spec: corev1.PodSpecPtr(&corev1.PodSpecArgs{
Containers: corev1.ContainerArray{alb},
}),
},
},
})
if err != nil {
return err
}
return nil
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment