@@ -40,7 +40,7 @@ var knownAddons = map[string]struct {
40
40
api .AWSEFSCSIDriverAddon : {},
41
41
}
42
42
43
- func CreateAddonTasks (ctx context.Context , cfg * api.ClusterConfig , clusterProvider * eks.ClusterProvider , iamRoleCreator IAMRoleCreator , forceAll bool , timeout time.Duration ) (* tasks.TaskTree , * tasks.TaskTree , []string ) {
43
+ func CreateAddonTasks (ctx context.Context , cfg * api.ClusterConfig , clusterProvider * eks.ClusterProvider , iamRoleCreator IAMRoleCreator , forceAll bool , timeout time.Duration ) (* tasks.TaskTree , * tasks.TaskTree , * tasks. GenericTask , []string ) {
44
44
var addons []* api.Addon
45
45
var autoDefaultAddonNames []string
46
46
if ! cfg .AddonsConfig .DisableDefaultAddons {
@@ -63,12 +63,17 @@ func CreateAddonTasks(ctx context.Context, cfg *api.ClusterConfig, clusterProvid
63
63
preAddons []* api.Addon
64
64
postAddons []* api.Addon
65
65
)
66
+ var vpcCNIAddon * api.Addon
66
67
for _ , addon := range addons {
67
- if addonInfo , ok := knownAddons [addon .Name ]; ok && addonInfo .CreateBeforeNodeGroup {
68
+ addonInfo , ok := knownAddons [addon .Name ]
69
+ if ok && addonInfo .CreateBeforeNodeGroup {
68
70
preAddons = append (preAddons , addon )
69
71
} else {
70
72
postAddons = append (postAddons , addon )
71
73
}
74
+ if addon .Name == api .VPCCNIAddon {
75
+ vpcCNIAddon = addon
76
+ }
72
77
}
73
78
preTasks := & tasks.TaskTree {Parallel : false }
74
79
postTasks := & tasks.TaskTree {Parallel : false }
@@ -93,7 +98,20 @@ func CreateAddonTasks(ctx context.Context, cfg *api.ClusterConfig, clusterProvid
93
98
if len (postAddons ) > 0 {
94
99
postTasks .Append (makeAddonTask (postAddons , cfg .HasNodes ()))
95
100
}
96
- return preTasks , postTasks , autoDefaultAddonNames
101
+ var updateVPCCNI tasks.GenericTask
102
+ if vpcCNIAddon != nil && api .IsEnabled (cfg .IAM .WithOIDC ) {
103
+ updateVPCCNI = tasks.GenericTask {
104
+ Doer : func () error {
105
+ addonManager , err := createAddonManager (ctx , clusterProvider , cfg )
106
+ if err != nil {
107
+ return err
108
+ }
109
+ addonManager .setRecommendedPoliciesForIRSA (vpcCNIAddon )
110
+ return addonManager .Update (ctx , vpcCNIAddon , nil , clusterProvider .AWSProvider .WaitTimeout ())
111
+ },
112
+ }
113
+ }
114
+ return preTasks , postTasks , & updateVPCCNI , autoDefaultAddonNames
97
115
}
98
116
99
117
type createAddonTask struct {
@@ -112,21 +130,7 @@ type createAddonTask struct {
112
130
func (t * createAddonTask ) Describe () string { return t .info }
113
131
114
132
func (t * createAddonTask ) Do (errorCh chan error ) error {
115
- oidc , err := t .clusterProvider .NewOpenIDConnectManager (t .ctx , t .cfg )
116
- if err != nil {
117
- return err
118
- }
119
-
120
- oidcProviderExists , err := oidc .CheckProviderExists (t .ctx )
121
- if err != nil {
122
- return err
123
- }
124
-
125
- stackManager := t .clusterProvider .NewStackManager (t .cfg )
126
-
127
- addonManager , err := New (t .cfg , t .clusterProvider .AWSProvider .EKS (), stackManager , oidcProviderExists , oidc , func () (kubernetes.Interface , error ) {
128
- return t .clusterProvider .NewStdClientSet (t .cfg )
129
- })
133
+ addonManager , err := createAddonManager (t .ctx , t .clusterProvider , t .cfg )
130
134
if err != nil {
131
135
return err
132
136
}
@@ -177,6 +181,24 @@ func (t *createAddonTask) Do(errorCh chan error) error {
177
181
return nil
178
182
}
179
183
184
+ func createAddonManager (ctx context.Context , clusterProvider * eks.ClusterProvider , cfg * api.ClusterConfig ) (* Manager , error ) {
185
+ oidc , err := clusterProvider .NewOpenIDConnectManager (ctx , cfg )
186
+ if err != nil {
187
+ return nil , err
188
+ }
189
+
190
+ oidcProviderExists , err := oidc .CheckProviderExists (ctx )
191
+ if err != nil {
192
+ return nil , err
193
+ }
194
+
195
+ stackManager := clusterProvider .NewStackManager (cfg )
196
+
197
+ return New (cfg , clusterProvider .AWSProvider .EKS (), stackManager , oidcProviderExists , oidc , func () (kubernetes.Interface , error ) {
198
+ return clusterProvider .NewStdClientSet (cfg )
199
+ })
200
+ }
201
+
180
202
type deleteAddonIAMTask struct {
181
203
ctx context.Context
182
204
info string
0 commit comments