Skip to content

Commit b94d3f6

Browse files
authored
feat: consistent labeling of all resources (#5)
1 parent f9e9df6 commit b94d3f6

File tree

7 files changed

+185
-167
lines changed

7 files changed

+185
-167
lines changed

pkg/builder/builder.go

Lines changed: 27 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -40,10 +40,12 @@ func NewBuilder(ctx *pulumi.Context, args BuilderComponentArgs, opts ...pulumi.R
4040
}
4141

4242
// Create service account
43-
sa, err := corev1.NewServiceAccount(ctx, fmt.Sprintf("%s-sa", args.Name), &corev1.ServiceAccountArgs{
43+
serviceAccountName := fmt.Sprintf("%s-sa", args.Name)
44+
sa, err := corev1.NewServiceAccount(ctx, serviceAccountName, &corev1.ServiceAccountArgs{
4445
Metadata: &metav1.ObjectMetaArgs{
45-
Name: pulumi.String(fmt.Sprintf("%s-sa", args.Name)),
46+
Name: pulumi.String(serviceAccountName),
4647
Namespace: pulumi.String(args.Namespace),
48+
Labels: utils.CreateResourceLabels(args.Name, serviceAccountName, args.Name, nil),
4749
},
4850
}, pulumi.Parent(component))
4951
if err != nil {
@@ -52,39 +54,42 @@ func NewBuilder(ctx *pulumi.Context, args BuilderComponentArgs, opts ...pulumi.R
5254
component.ServiceAccount = sa
5355

5456
// Create ConfigMap for environment variables
57+
configMapName := fmt.Sprintf("%s-env", args.Name)
5558
configMap, err := utils.CreateConfigMap(
5659
ctx,
57-
fmt.Sprintf("%s-configmap", args.Name),
60+
configMapName,
5861
pulumi.String(args.Namespace),
59-
pulumi.StringMap{
60-
"app": pulumi.String(args.Name),
61-
"app.kubernetes.io/name": pulumi.String(args.Name),
62-
"app.kubernetes.io/part-of": pulumi.String(args.Name),
63-
},
62+
utils.CreateResourceLabels(args.Name, configMapName, args.Name, nil),
6463
args.BuilderEnv,
6564
)
6665
if err != nil {
6766
return nil, fmt.Errorf("failed to create environment ConfigMap: %w", err)
6867
}
6968
component.ConfigMap = configMap
7069

70+
// Create pod labels with app label for routing
71+
podLabels := utils.CreateResourceLabels(args.Name, args.Name, args.Name, args.AppLabels.Labels)
72+
podLabels["app"] = pulumi.String(args.Name)
73+
7174
// Create deployment
72-
deployment, err := appsv1.NewDeployment(ctx, fmt.Sprintf("%s-deployment", args.Name), &appsv1.DeploymentArgs{
75+
deploymentName := fmt.Sprintf("%s-deployment", args.Name)
76+
deployment, err := appsv1.NewDeployment(ctx, deploymentName, &appsv1.DeploymentArgs{
7377
Metadata: &metav1.ObjectMetaArgs{
74-
Name: pulumi.String(fmt.Sprintf("%s-deployment", args.Name)),
78+
Name: pulumi.String(deploymentName),
7579
Namespace: pulumi.String(args.Namespace),
80+
Labels: utils.CreateResourceLabels(args.Name, deploymentName, args.Name, nil),
7681
},
7782
Spec: &appsv1.DeploymentSpecArgs{
7883
Replicas: pulumi.Int(DefaultReplicas),
7984
Selector: &metav1.LabelSelectorArgs{
80-
MatchLabels: args.AppLabels.Labels,
85+
MatchLabels: podLabels,
8186
},
8287
Template: &corev1.PodTemplateSpecArgs{
8388
Metadata: &metav1.ObjectMetaArgs{
84-
Labels: args.AppLabels.Labels,
89+
Labels: podLabels,
8590
},
8691
Spec: &corev1.PodSpecArgs{
87-
ServiceAccountName: pulumi.String(fmt.Sprintf("%s-sa", args.Name)),
92+
ServiceAccountName: pulumi.String(serviceAccountName),
8893
Containers: corev1.ContainerArray{
8994
&corev1.ContainerArgs{
9095
Name: pulumi.String(args.Name),
@@ -144,18 +149,20 @@ func NewBuilder(ctx *pulumi.Context, args BuilderComponentArgs, opts ...pulumi.R
144149
component.Deployment = deployment
145150

146151
// Create service
147-
service, err := corev1.NewService(ctx, fmt.Sprintf("%s-service", args.Name), &corev1.ServiceArgs{
152+
serviceName := fmt.Sprintf("%s-service", args.Name)
153+
service, err := corev1.NewService(ctx, serviceName, &corev1.ServiceArgs{
148154
Metadata: &metav1.ObjectMetaArgs{
149-
Name: pulumi.String(fmt.Sprintf("%s-service", args.Name)),
155+
Name: pulumi.String(serviceName),
150156
Namespace: pulumi.String(args.Namespace),
157+
Labels: utils.CreateResourceLabels(args.Name, serviceName, args.Name, nil),
151158
Annotations: pulumi.StringMap{
152159
"prometheus.io/scrape": pulumi.String("true"),
153160
"prometheus.io/port": pulumi.Sprintf("%d", MetricsPort),
154161
"prometheus.io/path": pulumi.String("/metrics"),
155162
},
156163
},
157164
Spec: &corev1.ServiceSpecArgs{
158-
Selector: args.AppLabels.Labels,
165+
Selector: podLabels,
159166
Ports: corev1.ServicePortArray{
160167
&corev1.ServicePortArgs{
161168
Port: parseBuilderPort(args.BuilderEnv.BuilderPort),
@@ -176,17 +183,19 @@ func NewBuilder(ctx *pulumi.Context, args BuilderComponentArgs, opts ...pulumi.R
176183
component.Service = service
177184

178185
// Create pod monitor
186+
podMonitorName := fmt.Sprintf("%s-pod-monitor", args.Name)
179187
_, err = crd.NewCustomResource(ctx, fmt.Sprintf("%s-svcmon", args.Name), &crd.CustomResourceArgs{
180188
ApiVersion: pulumi.String("monitoring.coreos.com/v1"),
181189
Kind: pulumi.String("PodMonitor"),
182190
Metadata: &metav1.ObjectMetaArgs{
183-
Name: pulumi.String(fmt.Sprintf("%s-pod-monitor", args.Name)),
191+
Name: pulumi.String(podMonitorName),
184192
Namespace: pulumi.String(args.Namespace),
193+
Labels: utils.CreateResourceLabels(args.Name, podMonitorName, args.Name, nil),
185194
},
186195
OtherFields: map[string]interface{}{
187196
"spec": map[string]interface{}{
188197
"selector": map[string]interface{}{
189-
"matchLabels": args.AppLabels.Labels,
198+
"matchLabels": podLabels,
190199
},
191200
"namespaceSelector": map[string]interface{}{
192201
"any": true,

pkg/builder/helpers.go

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1 +1,13 @@
11
package builder
2+
3+
import (
4+
"github.com/init4tech/signet-infra-components/pkg/utils"
5+
"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
6+
)
7+
8+
// NewAppLabels creates a new AppLabels instance with consistent Kubernetes labels
9+
func NewAppLabels(app, name, partOf string, additionalLabels pulumi.StringMap) AppLabels {
10+
return AppLabels{
11+
Labels: utils.CreateResourceLabels(app, name, partOf, additionalLabels),
12+
}
13+
}

pkg/signet_node/helpers.go

Lines changed: 0 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -52,15 +52,6 @@ func CreatePersistentVolumeClaim(
5252
return pvc, nil
5353
}
5454

55-
// CreateResourceLabels creates a consistent set of Kubernetes labels for resources
56-
func CreateResourceLabels(name string) pulumi.StringMap {
57-
return pulumi.StringMap{
58-
"app": pulumi.String(name),
59-
"app.kubernetes.io/name": pulumi.String(name),
60-
"app.kubernetes.io/part-of": pulumi.String(name),
61-
}
62-
}
63-
6455
// ResourceRequirements returns consistent resource requirements for pods
6556
func NewResourceRequirements(cpuLimit, memoryLimit, cpuRequest, memoryRequest string) *corev1.ResourceRequirementsArgs {
6657
if cpuLimit == "" {

pkg/signet_node/helpers_test.go

Lines changed: 1 addition & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -7,14 +7,7 @@ import (
77
"github.com/stretchr/testify/assert"
88
)
99

10-
func TestCreateResourceLabels(t *testing.T) {
11-
name := "test-resource"
12-
labels := CreateResourceLabels(name)
13-
14-
assert.Equal(t, pulumi.String(name), labels["app"])
15-
assert.Equal(t, pulumi.String(name), labels["app.kubernetes.io/name"])
16-
assert.Equal(t, pulumi.String(name), labels["app.kubernetes.io/part-of"])
17-
}
10+
// TestCreateResourceLabels moved to pkg/utils/labels_test.go since the function was moved there
1811

1912
func TestResourceRequirements(t *testing.T) {
2013
// Test with default values

0 commit comments

Comments
 (0)