1
1
package generator
2
2
3
3
import (
4
+ "fmt"
5
+
4
6
"github.com/kubernetes-sigs/aws-alb-ingress-controller/internal/alb/lb"
5
7
"github.com/kubernetes-sigs/aws-alb-ingress-controller/internal/alb/sg"
6
8
"github.com/kubernetes-sigs/aws-alb-ingress-controller/internal/alb/tg"
@@ -15,6 +17,16 @@ const (
15
17
TagKeyServicePort = "kubernetes.io/service-port"
16
18
)
17
19
20
+ // Additional Tags used to be forward-compatible with V2 version.
21
+ const (
22
+ V2TagKeyClusterID = "ingress.k8s.aws/cluster"
23
+ V2TagKeyStackID = "ingress.k8s.aws/stack"
24
+ V2TagKeyResourceID = "ingress.k8s.aws/resource"
25
+
26
+ V2ResourceIDLoadBalancer = "LoadBalancer"
27
+ V2ResourceIDManagedLBSecurityGroup = "ManagedLBSecurityGroup"
28
+ )
29
+
18
30
var _ tg.TagGenerator = (* TagGenerator )(nil )
19
31
var _ lb.TagGenerator = (* TagGenerator )(nil )
20
32
var _ sg.TagGenerator = (* TagGenerator )(nil )
@@ -25,22 +37,29 @@ type TagGenerator struct {
25
37
}
26
38
27
39
func (gen * TagGenerator ) TagLB (namespace string , ingressName string ) map [string ]string {
28
- return gen .tagIngressResources (namespace , ingressName )
40
+ resTags := gen .tagIngressResources (namespace , ingressName )
41
+ resTags [V2TagKeyResourceID ] = V2ResourceIDLoadBalancer
42
+ return resTags
29
43
}
30
44
31
45
func (gen * TagGenerator ) TagTGGroup (namespace string , ingressName string ) map [string ]string {
32
46
return gen .tagIngressResources (namespace , ingressName )
33
47
}
34
48
35
- func (gen * TagGenerator ) TagTG (serviceName string , servicePort string ) map [string ]string {
36
- return map [string ]string {
49
+ func (gen * TagGenerator ) TagTG (namespace string , ingressName string , serviceName string , servicePort string ) map [string ]string {
50
+ resTags := map [string ]string {
37
51
TagKeyServiceName : serviceName ,
38
52
TagKeyServicePort : servicePort ,
39
53
}
54
+ resID := gen .buildV2TargetGroupID (namespace , ingressName , serviceName , servicePort )
55
+ resTags [V2TagKeyResourceID ] = resID
56
+ return resTags
40
57
}
41
58
42
59
func (gen * TagGenerator ) TagLBSG (namespace string , ingressName string ) map [string ]string {
43
- return gen .tagSGs (namespace , ingressName )
60
+ resTags := gen .tagSGs (namespace , ingressName )
61
+ resTags [V2TagKeyResourceID ] = V2ResourceIDManagedLBSecurityGroup
62
+ return resTags
44
63
}
45
64
46
65
func (gen * TagGenerator ) TagInstanceSG (namespace string , ingressName string ) map [string ]string {
@@ -55,6 +74,11 @@ func (gen *TagGenerator) tagIngressResources(namespace string, ingressName strin
55
74
m ["kubernetes.io/cluster/" + gen .ClusterName ] = "owned"
56
75
m [TagKeyNamespace ] = namespace
57
76
m [TagKeyIngressName ] = ingressName
77
+
78
+ v2Tags := gen .tagIngressResourcesV2 (namespace , ingressName )
79
+ for label , value := range v2Tags {
80
+ m [label ] = value
81
+ }
58
82
return m
59
83
}
60
84
@@ -76,5 +100,29 @@ func (gen *TagGenerator) tagSGs(namespace string, ingressName string) map[string
76
100
77
101
m [TagKeyNamespace ] = namespace
78
102
m [TagKeyIngressName ] = ingressName
103
+
104
+ v2Tags := gen .tagIngressResourcesV2 (namespace , ingressName )
105
+ for label , value := range v2Tags {
106
+ m [label ] = value
107
+ }
108
+
79
109
return m
80
110
}
111
+
112
+ func (gen * TagGenerator ) tagIngressResourcesV2 (namespace string , ingressName string ) map [string ]string {
113
+ m := make (map [string ]string )
114
+ stackID := gen .buildV2StackID (namespace , ingressName )
115
+ m [V2TagKeyClusterID ] = gen .ClusterName
116
+ m [V2TagKeyStackID ] = stackID
117
+ return m
118
+ }
119
+
120
+ // buildV2StackID returns the stack ID that compatible with V2 version.
121
+ func (gen * TagGenerator ) buildV2StackID (namespace string , ingressName string ) string {
122
+ return fmt .Sprintf ("%s/%s" , namespace , ingressName )
123
+ }
124
+
125
+ // buildV2TargetGroupID returns the targetGroup ResourceID that compatible with V2 version.
126
+ func (gen * TagGenerator ) buildV2TargetGroupID (namespace string , ingressName string , serviceName string , servicePort string ) string {
127
+ return fmt .Sprintf ("%s/%s-%s:%s" , namespace , ingressName , serviceName , servicePort )
128
+ }
0 commit comments