@@ -4,7 +4,9 @@ package builder
44import (
55 "encoding/json"
66 "fmt"
7+ "strconv"
78
9+ "github.com/init4tech/signet-infra-components/pkg/utils"
810 "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam"
911 crd "github.com/pulumi/pulumi-kubernetes/sdk/v4/go/kubernetes/apiextensions"
1012 appsv1 "github.com/pulumi/pulumi-kubernetes/sdk/v4/go/kubernetes/apps/v1"
@@ -13,6 +15,18 @@ import (
1315 "github.com/pulumi/pulumi/sdk/v3/go/pulumi"
1416)
1517
18+ // parseBuilderPort converts a port string to an integer with a default fallback
19+ func parseBuilderPort (portStr pulumi.StringInput ) pulumi.IntOutput {
20+ return pulumi .All (portStr ).ApplyT (func (inputs []interface {}) int {
21+ portStr := inputs [0 ].(string )
22+ if port , err := strconv .Atoi (portStr ); err == nil {
23+ return port
24+ }
25+ // Default to 8080 if there's an error parsing the port
26+ return 8080
27+ }).(pulumi.IntOutput )
28+ }
29+
1630// NewBuilder creates a new builder component with the given configuration.
1731func NewBuilder (ctx * pulumi.Context , args BuilderComponentArgs , opts ... pulumi.ResourceOption ) (* BuilderComponent , error ) {
1832 if err := args .Validate (); err != nil {
@@ -99,6 +113,23 @@ func NewBuilder(ctx *pulumi.Context, args BuilderComponentArgs, opts ...pulumi.R
99113 return nil , fmt .Errorf ("failed to attach policy to role: %w" , err )
100114 }
101115
116+ // Create ConfigMap for environment variables
117+ configMap , err := utils .CreateConfigMap (
118+ ctx ,
119+ fmt .Sprintf ("%s-configmap" , args .Name ),
120+ pulumi .String (args .Namespace ),
121+ pulumi.StringMap {
122+ "app" : pulumi .String (args .Name ),
123+ "app.kubernetes.io/name" : pulumi .String (args .Name ),
124+ "app.kubernetes.io/part-of" : pulumi .String (args .Name ),
125+ },
126+ args .BuilderEnv ,
127+ )
128+ if err != nil {
129+ return nil , fmt .Errorf ("failed to create environment ConfigMap: %w" , err )
130+ }
131+ component .ConfigMap = configMap
132+
102133 // Create deployment
103134 deployment , err := appsv1 .NewDeployment (ctx , fmt .Sprintf ("%s-deployment" , args .Name ), & appsv1.DeploymentArgs {
104135 Metadata : & metav1.ObjectMetaArgs {
@@ -120,10 +151,16 @@ func NewBuilder(ctx *pulumi.Context, args BuilderComponentArgs, opts ...pulumi.R
120151 & corev1.ContainerArgs {
121152 Name : pulumi .String (args .Name ),
122153 Image : pulumi .String (args .Image ),
123- Env : createEnvVars (args .BuilderEnv ),
154+ EnvFrom : corev1.EnvFromSourceArray {
155+ & corev1.EnvFromSourceArgs {
156+ ConfigMapRef : & corev1.ConfigMapEnvSourceArgs {
157+ Name : component .ConfigMap .Metadata .Name (),
158+ },
159+ },
160+ },
124161 Ports : corev1.ContainerPortArray {
125162 & corev1.ContainerPortArgs {
126- ContainerPort : args .BuilderEnv .BuilderPort ,
163+ ContainerPort : parseBuilderPort ( args .BuilderEnv .BuilderPort ) ,
127164 },
128165 & corev1.ContainerPortArgs {
129166 ContainerPort : pulumi .Int (MetricsPort ),
@@ -142,7 +179,7 @@ func NewBuilder(ctx *pulumi.Context, args BuilderComponentArgs, opts ...pulumi.R
142179 LivenessProbe : & corev1.ProbeArgs {
143180 HttpGet : & corev1.HTTPGetActionArgs {
144181 Path : pulumi .String ("/healthcheck" ),
145- Port : args .BuilderEnv .BuilderPort ,
182+ Port : parseBuilderPort ( args .BuilderEnv .BuilderPort ) ,
146183 },
147184 InitialDelaySeconds : pulumi .Int (5 ),
148185 PeriodSeconds : pulumi .Int (1 ),
@@ -152,7 +189,7 @@ func NewBuilder(ctx *pulumi.Context, args BuilderComponentArgs, opts ...pulumi.R
152189 ReadinessProbe : & corev1.ProbeArgs {
153190 HttpGet : & corev1.HTTPGetActionArgs {
154191 Path : pulumi .String ("/healthcheck" ),
155- Port : args .BuilderEnv .BuilderPort ,
192+ Port : parseBuilderPort ( args .BuilderEnv .BuilderPort ) ,
156193 },
157194 InitialDelaySeconds : pulumi .Int (5 ),
158195 PeriodSeconds : pulumi .Int (10 ),
@@ -183,8 +220,8 @@ func NewBuilder(ctx *pulumi.Context, args BuilderComponentArgs, opts ...pulumi.R
183220 Selector : args .AppLabels .Labels ,
184221 Ports : corev1.ServicePortArray {
185222 & corev1.ServicePortArgs {
186- Port : args .BuilderEnv .BuilderPort ,
187- TargetPort : args .BuilderEnv .BuilderPort ,
223+ Port : parseBuilderPort ( args .BuilderEnv .BuilderPort ) ,
224+ TargetPort : parseBuilderPort ( args .BuilderEnv .BuilderPort ) ,
188225 Name : pulumi .String ("http" ),
189226 },
190227 & corev1.ServicePortArgs {
0 commit comments